Create App Store screenshots programmatically. Send natural language messages, get back canvas state JSON with device mockups, backgrounds, and text.
All API requests require a Bearer token in the Authorization header. Create API keys in Settings → API Keys.
Authorization: Bearer sk_live_your_key_here
https://appscreenshotstudio.com/api/v1
/projectsCreate a new builder project. Optionally pass codebase_context to persist app context for all future chats.
Request body
{
"device_id": "iphone-6.9", // or "android-phone"
"name": "My App Screenshots", // optional
"codebase_context": { // optional — persisted for all chats
"readme_summary": "A habit tracking app...",
"key_screens": ["Dashboard", "Settings", "Profile"],
"color_tokens": { "primary": "#7C3AED" },
"target_audience": "busy professionals",
"app_category": "productivity",
"competitive_edge": "AI-powered habit suggestions",
"ui_style": "dark mode with purple accents",
"primary_user_flow": "Sign up → Add habits → Track daily → View streaks"
}
}Response
{
"success": true,
"data": {
"id": "uuid",
"name": "My App Screenshots",
"device_id": "iphone-6.9",
"canvas_state": { "cards": [], "codebaseContext": {...}, ... }
},
"credits_remaining": 74
}/projectsList all your builder projects.
Response
{
"success": true,
"data": [ ... ],
"credits_remaining": 74
}/projects/:idGet a project with its full canvas state.
Response
{
"success": true,
"data": {
"id": "uuid",
"canvas_state": { "cards": [...], ... },
...
},
"credits_remaining": 74
}/projects/:id/chatSend a message to build screenshots. Costs 5 credits per message.
Request body
{
"message": "Create 5 App Store screenshots for a fitness app called FitPro",
"images": [ // optional
{ "dataUrl": "data:image/png;base64,..." }
],
"selected_card_indices": [0, 1] // optional
}Response
{
"success": true,
"data": {
"message": "Created 5 cards with ...",
"operations": [ ... ],
"canvas_state": { "cards": [...], ... },
"suggestions": ["Add ratings", "Change colors", ...]
},
"credits_remaining": 73
}/projects/:idUpdate a project's name, device, or canvas state.
Request body
{
"name": "Updated Name", // optional
"device_id": "android-phone", // optional
"canvas_state": { ... } // optional
}/projects/:idDelete a project.
Response
{ "success": true }/projects/:id/upload-screenshotsUpload app screenshots into device mockup elements. Maps each screenshot to a card by index. Free — no credit cost.
Request body
{
"screenshots": [
{ "card_index": 0, "image_base64": "iVBORw0KGgo..." },
{ "card_index": 1, "image_base64": "data:image/png;base64,iVBOR..." }
]
}Response
{
"success": true,
"data": {
"uploaded": 2,
"results": [
{ "card_index": 0, "success": true },
{ "card_index": 1, "success": true }
]
},
"credits_remaining": 74
}/projects/:id/renderRender all cards as PNG images. Free — no credit cost. No request body needed.
Response
{
"success": true,
"data": {
"images": [
{ "card_index": 0, "url": "https://...png", "width": 1260, "height": 2736 },
{ "card_index": 1, "url": "https://...png", "width": 1260, "height": 2736 }
]
},
"credits_remaining": 68
}/projects/:id/generate-backgroundGenerate an AI background for one card with Gemini. The image is cropped to exact device dimensions and applied to the card's background element. Costs 6 credits. Requires Growth plan or higher.
Request body
{
"card_index": 0,
"prompt": "Deep purple nebula with soft pink and blue light rays"
}Response
{
"success": true,
"data": { "card_index": 0 },
"credits_remaining": 62
}Rate limit info is included in response headers.
| Endpoint | Limit |
|---|---|
| POST /projects/:id/chat | 60 requests / 5 minutes |
| All other endpoints | 120 requests / minute |
{
"success": false,
"error": "Human-readable message",
"code": "ERROR_CODE"
}| Code | HTTP | Meaning |
|---|---|---|
| UNAUTHORIZED | 401 | Invalid or revoked API key |
| NO_CREDITS | 402 | Insufficient credits |
| NOT_FOUND | 404 | Project not found or not yours |
| VALIDATION_ERROR | 400 | Invalid request body |
The AI creates screenshots by composing these element types on a canvas. When you send a chat message, the AI returns operations that add, update, or remove these elements. Understanding them helps you write better prompts.
Every card has one. Supports solid colors, multi-color gradients with angle control, or AI-generated images via a text prompt.
Example prompt
“"Make card 1's background a dark blue to purple gradient at 135 degrees"”
Rich text with per-word color, weight, italic, underline, highlight pills, gradient fills, stroke outlines, and emoji support.
Example prompt
“"Make the headline 'Scan Any Food' with 'Any' in a blue highlight pill, 'Food' underlined"”
Phone or tablet frame with a screenshot slot. Supports 9 perspective variants for 3D angles and a recolorable frame finish.
Example prompt
“"Tilt the phone to 15 degrees left and recolor the frame to gold on card 3"”
94 shape types (17 core + 77 decorative across 13 categories) for decorative elements, glow orbs, floating UI panels, laurel wings, and more.
Example prompt
“"Add laurel wings around a 4.9 star rating, scatter leaf and sparkle shapes in the background"”
Colored label with text — for 'App of the Day', '#1 in Health', etc.
Example prompt
“"Add a '#1 Health App' badge below the phone"”
5-star rating display with custom color.
Example prompt
“"Add a 4.8 star rating in gold below the headline"”
General image element for 3D illustrations and decorative graphics.
Example prompt
“"Add a 3D illustration of a running shoe floating next to the phone"”
App icon or small image with optional rounded corners.
Example prompt
“"Add my app icon in the top corner"”
Every element supports these base properties:
x, y — position on canvas width, height — size rotation — degrees opacity — 0 to 1 zIndex — layer order (0 = back, higher = front) shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY
| Device ID | Name | Canvas Size |
|---|---|---|
| iphone-6.9 | iPhone 16 Pro Max | 1260 × 2736 |
| ipad-13 | iPad Pro 13" | 2064 × 2752 |
| android-phone | Android Phone | 1080 × 2340 |
| android-tablet-10 | Android Tablet 7" | 1200 × 1920 |
| apple-watch-ultra | Apple Watch Ultra 2 | 410 × 502 |
The chat endpoint composes each card from one of nine layout templates. You don't pass these as schema fields — describe the effect in natural language and the AI picks the layout, narrative arc, and parameters.
| Layout | Use for |
|---|---|
| text-top-device-bottom | Headline top, flat device bottom — feature/educate cards |
| text-top-device-tilted | Headline left, tilted device right (or mirrored) |
| device-hero | Headline + large centered device — product-forward |
| social-proof | Stars + quote + laurel stat, no device (testimonial-led) |
| review-clip | Rating-statement headline + stars + quote + bottom-clipped device |
| screen-hero | Top-clipped device + centered headline + optional trust stat |
| lifestyle-hero | Full-bleed photo background + text overlay, no device |
| photo-device-hero | Full-bleed photo + flat device + headline overlay at top |
| feature-grid | Headline + 2×2 or 2×3 icon+label grid, no device |
| before-after | Dark before-half + bright after-half (transformation apps) |
| stats-hero | Giant centered stat(s), no device, numbers-led |
| metric-badge | Centered device + chunky "achievement card" over its screen |
| annotated-feature | Tilted device + side callout chip linked by a connector line |
| step-flow | Headline + 2-4 numbered step rows ("how it works"), no device |
Layout params (set per card by the AI): deviceScale (small/medium/large), deviceSide (left/right), textPosition (above/below), textAlign (left/center).
Auto-positioned trust signals attached to a card. The AI places them inline based on the chosen layout.
Stretch one image or element across multiple adjacent cards so they read as a continuous panoramic when the App Store gallery scrolls. Two flavors:
background elements of N cards. The gallery gap (per device category) is accounted for so slices line up after Apple's gutter.image, device-mockup, or shape across adjacent cards.Panoramic background
Pano the background photo across cards 1-3 with a moody twilight gradient.
Panoramic element span
Stretch the device on card 1 across into card 2 so it reads as one continuous phone.
Recolor the device frame across cards. Values: natural (default), black, white, gold. Requires Growth plan or higher.
Frame color
Recolor the iPhone frame to gold across all cards.
The chat endpoint understands natural language. Here are prompts that work well:
Create from scratch
Create 5 App Store screenshots for a meditation app called ZenFlow. Use calming blues and purples.
With app screenshots
Here are my app screens. Create 4 professional screenshots with headlines and a dark theme.
Attach images via the images array
Style specific cards
Make card 1 a title card with no phone — just a big headline with highlight pills and a star rating.
Refine
Make the headlines bolder, add text stroke for contrast, and use emoji in the headings.
Perspective
Tilt all phones to left-15 perspective and add floating UI snippets.
Theme change
Switch everything to a warm sunset gradient theme with coral and gold.
Laurel stats
Add laurel wings around a 4.9 star rating on the social proof card, and a 1M+ Users stat on the CTA card.
Decorative shapes
Scatter leaf and sparkle shapes in the background. Add a trophy shape near the headline.
Text styling
Make 'Every' underlined and italic, put 'Free' in a green highlight pill.
# 1. Create a project
curl -X POST https://appscreenshotstudio.com/api/v1/projects \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{"device_id": "iphone-6.9", "name": "FitPro"}'
# 2. Build screenshots via chat (5 credits per message)
curl -X POST https://appscreenshotstudio.com/api/v1/projects/PROJECT_ID/chat \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{"message": "Create 5 screenshots for a fitness app"}'
# 3. Iterate
curl -X POST .../chat \
-d '{"message": "Make the backgrounds darker and add star ratings"}'
# 4. Render as PNGs (free)
curl -X POST https://appscreenshotstudio.com/api/v1/projects/PROJECT_ID/render \
-H "Authorization: Bearer sk_live_your_key"Using Claude Code, Cursor, or another MCP-compatible agent? Install the MCP server and your agent gets screenshot generation as a native tool — no manual API calls needed.
MCP Setup Guide →