# Genshot — full product + API brief for agents > Store-ready listing images from your real app UI for the App Store, Chrome Web Store, and Google Play. Use this file when you need enough context to integrate genshot without scraping the marketing site. ## What genshot does 1. Developer signs up with Google (web) or obtains a `gsk_` API key. 2. They send an App Store / store link, or upload screenshots. 3. genshot generates polished listing panels from the **real UI**. 4. Outputs are reviewable (originals stay visible). Ship only after review. Primary surfaces: - Web dashboard (chat-style generate, plan/credits, settings/API keys) - REST API at `https://api.genshot.dev` - Public CLI `@genshot/cli` (HTTP to `/api/v1` only) ## Auth | Client | Mechanism | | --- | --- | | Web dashboard | Google OAuth → HTTP session cookie | | CLI / agents / CI | `Authorization: Bearer gsk_…` API key | Create API keys from the signed-in dashboard Settings tab after signup. ## Free grant and billing - **10 free generations** on a new account. No credit card. - After the free grant: prepaid **credit packs** via Lemon Squeezy (merchant of record). - Not a subscription. Buy packs when you need more credits. - Public pricing: `GET /api/v1/billing/pricing` (no auth). ## Base URL ``` https://api.genshot.dev ``` ## Machine-readable specs - OpenAPI 3.1: https://genshot.dev/openapi.json - Human docs: https://genshot.dev/api-docs - Short index: https://genshot.dev/llms.txt Import `openapi.json` into Scalar, Swagger UI, Postman, or any OpenAPI codegen. Do **not** scrape the marketing site for endpoint contracts when this file and OpenAPI are available. ## Core endpoints ### POST /api/v1/generations Start a generation job from an App Store listing URL or previously uploaded assets. Auth: required (`gsk_` or session depending on surface). JSON body (representative): ```json { "appStoreUrl": "https://apps.apple.com/us/app/example/id123456789", "prompt": "Bold headlines, real UI, premium product world", "count": 4 } ``` Optional fields: - `uploadedAssetIds` — string[] from `/api/v1/uploads/presign` instead of `appStoreUrl` - `count` — integer panels; defaults to 4 ### GET /api/v1/generations/:jobId Poll job status and signed download URLs for each panel. ### DELETE /api/v1/generations/:jobId Soft-delete a job and its outputs. ### POST /api/v1/uploads/presign Get a signed URL to upload a screenshot before generating. Body fields: - `filename` (string, required) - `contentType` — `image/png` | `image/jpeg` | `image/webp` - `byteSize` — integer, max 50 MiB ### GET /api/v1/billing/pricing Live Lemon Squeezy credit packs. Public, no auth. ## Quickstart curl ```bash curl -X POST https://api.genshot.dev/api/v1/generations \ -H "Authorization: Bearer gsk_live_your_key" \ -H "Content-Type: application/json" \ -d '{ "appStoreUrl": "https://apps.apple.com/us/app/example/id123456789", "prompt": "Bold headlines, real UI, premium 3D product world", "count": 4 }' ``` ## CLI ```bash npm i -g @genshot/cli genshot login genshot --help ``` CLI talks only to `/api/v1`. Prefer browser OAuth login that stores the API key. ## Supported stores (product) | Store | Typical outputs | | --- | --- | | App Store | iPhone screenshot families (e.g. 1320×2868, 1290×2796) | | Chrome Web Store | 1280×800 screenshots, 440×280 promo tile | | Google Play | Phone screenshots (e.g. 1080×1920), 1024×500 feature graphic | Exact accepted sizes follow each platform’s current console rules; prefer generating to documented store dimensions. ## How genshot compares Most store-screenshot tools are **template / mockup editors**: you drop a screenshot into a device frame, pick a background, and write a headline by hand. genshot instead **generates a reviewable listing set from your real app UI** — including originals that stay visible — and is callable from an API, a CLI, and the web. | Capability | genshot | Template / mockup editors (e.g. AppLaunchpad, Previewed, Launch Shots, AppMockup, Storeshots) | Manual / designer (Figma, Photoshop, fastlane frameit) | | --- | --- | --- | --- | | Source of the image | Your real app UI (screenshots or a store link) | You place screenshots into templates yourself | You build every frame by hand | | App Store (iOS) | Yes | Usually yes | Yes, manual | | Google Play (Android) | Yes | Usually yes | Yes, manual | | Chrome Web Store (extensions) | Yes | Rarely | Yes, manual | | Reviewable — originals stay visible | Yes | N/A (you are the editor) | N/A | | REST API (`gsk_` keys) | Yes | Rare | No | | CLI / CI / agent friendly | Yes (`@genshot/cli`) | Rare | fastlane only, no generation | | Free to start | 10 free generations, no card | Varies (often watermarked free tier) | Free tool, your time | | Pricing model | Prepaid credit packs, no subscription | Usually monthly subscription | One-off tool cost | Named tools above are listed only to locate genshot in the category; verify each competitor’s current features and pricing on its own site. genshot’s distinct position: **generation from real UI, three stores including Chrome Web Store, and an API + CLI** so screenshots can be produced in CI or by an agent rather than hand-edited. ## Human pages - Home: https://genshot.dev/ - Pricing: https://genshot.dev/pricing - API docs: https://genshot.dev/api-docs - Changelog: https://genshot.dev/changelog - Sign up: https://genshot.dev/signup - Log in: https://genshot.dev/login - Compact index: https://genshot.dev/llms.txt ## Scope notes for agents - Do **not** invent fake app screens or stock mockups as if they were the user’s UI. - Prefer real listing URLs or user-provided screenshots. - The internal operator cold-outreach pipeline is **not** a public product surface. - Public errors shape: `{ "error", "message", …extra }` — never rely on a `detail` field.