API changelog
Every version of the StoreShot API contract, newest first.
Versions of the StoreShot API contract (https://api.storeshot.art/v1, info.version of the
OpenAPI document), newest first. Every version so far is additive: existing requests, fields and
error codes keep working.
1.18.0 — 2026-11-03
- Added styles (brand kits):
POST /styles(send anIdempotency-Key),GET /styles,GET /styles/{id},PATCH /styles/{id}andDELETE /styles/{id}. A style holds a name, up to 8 colours, a logo (copied from an upload), a background mood, a short background description and a caption tone, and can copy its colours and choices from a succeeded generation (referenceGenerationId). Styles are free; at most 50 per account (403 FORBIDDEN,details.reasonstyle_limit_reached). - Added optional
styleIdwhen creating a generation or a screenshot set (also with?dryRun=true): the style fills the palette and logo you leave out and adds its background mood, description and caption tone. Fields you send win. The style is copied into the generation or set when it is created, so editing or deleting the style later never changes it or its retries. - Generations and screenshot sets have an optional
style({ id, name, applied };nullwhen no style was used,idnullonce the style is deleted).
1.17.0 — 2026-11-02
- Added device authorization (RFC 8628) so an agent without a key can get one with its human’s
approval:
POST /auth/devicereturns a user code and a console link, andPOST /auth/device/tokenreturns a new API key once the human approves it in the developer console. Neither needs a credential. POST /auth/device/tokenanswers refusals with the OAuth error body{ "error", "error_description" }(HTTP 400), not the usual error envelope.- Both answer 404
NOT_FOUNDwhile device authorization is turned off on the server.
1.16.0 — 2026-11-02
- The API description now starts with a “For AI agents” section: the usual workflow (check the key, upload, quote, create, poll, download), what costs credits and how to handle errors.
- Every operation description now ends with what it costs in credits and, for the main
operations, when to use it. The code samples in the description use
STORESHOT_API_KEY, like the guides. - Text only: no request, response, header or error code changed.
1.15.0 — 2026-10-29
- Added projects:
POST /projects,GET /projects,GET,PATCHandDELETE /projects/{id}, andPOST /projects/{id}/itemsand/items/removeto group generations and screenshot sets. - Added optional
projectIdwhen creating a generation or a screenshot set, and?projectId=(nonefor no project) and?source=filters on the lists. - Generations and screenshot sets now show
source(api,web,mcp,cliormobile); generations also showclientName,requestIdandproject. - Added
GET /activity: who changed keys, credits and webhooks in the account.
1.14.0 — 2026-10-29
- Added
GET /status: a public, cached summary of the API and generation pipeline status.
1.13.0 — 2026-10-29
- Added the Google Play device
google_play_1080x2160(2:1). - Deprecated
google_play_1080x2400(deprecated: true,replacedBy); it is still accepted but is never a default.
1.12.0 — 2026-10-24
- Added an optional
previewthumbnail to screenshot sets inGET /screenshot-setsandGET /screenshot-sets/{id}.
1.11.0 — 2026-10-23
GET /billing/checkouts/{id}also accepts the payment provider’s checkout id; plan checkouts add optionalplanNameandsubscriptionStatus.- Added the
environmentfilter to the generation and screenshot-set lists and thestatusfilter to the screenshot-set list.
1.10.0 — 2026-10-22
- Added monthly plans:
GET /billing/plans,GET /billing/subscription,POST /billing/subscription/checkout,/change,/canceland/uncancel, andPOST /billing/portal. - Added the error code
BILLING_STATE_CONFLICT. Rate and generation limits now follow the plan.
1.9.0 — 2026-10-22
- Added credit packs:
GET /billing/packs,POST /billing/checkoutandGET /billing/checkouts/{id}. - Added the scopes
billing:readandbilling:writeand the error codeBILLING_UNAVAILABLE.
1.8.0 — 2026-10-22
- Added webhooks:
POSTandGET /webhooks,GET,PATCHandDELETE /webhooks/{id},POST /webhooks/{id}/rotate-secret,POST /webhooks/{id}/testandGET /webhooks/{id}/deliveries. - Added the events
generation.succeeded,generation.failed,screenshot_set.completed,credits.lowandwebhook.test, the scopeswebhooks:readandwebhooks:write, and the error codesWEBHOOK_URL_REJECTEDandWEBHOOK_STATE_CONFLICT.
1.7.0 — 2026-10-22
- Added screenshot sets:
POST /screenshot-sets(with?dryRun=trueto quote it),GET /screenshot-sets,GETandDELETE /screenshot-sets/{id},POST /screenshot-sets/{id}/retryand/cancel, andGET /screenshot-sets/{id}/archive(?layout=fastlane). - Generations of a set show
screenshotSet; added the?screenshotSetId=filter and the error codeSCREENSHOT_SET_STATE_CONFLICT.
1.6.0 — 2026-10-22
- Added
POST /palettes(brand palettes from your images),GET /storesandGET /stores/{store}/requirements(official screenshot rules per store).
1.5.0 — 2026-10-22
- Added generations:
POST /generations,GET /generations,GETandDELETE /generations/{id}andPOST /generations/{id}/cancel, withPrefer: waitandIdempotency-Key. - Added the error codes
IDEMPOTENCY_CONFLICTandGENERATION_STATE_CONFLICT;402 INSUFFICIENT_CREDITScarriesdetails.topUpUrl.
1.4.0 — 2026-10-21
- Added uploads:
POST /uploads(multipart or{ "url" }),POST /uploads/presignandPOST /uploads/{id}/complete,GET /uploads,GETandDELETE /uploads/{id}. - Added the error codes
UPLOAD_NOT_READYandURL_FETCH_FAILED;UNSUPPORTED_FORMATandIMAGE_TOO_LARGEapply to uploads.
1.3.0 — 2026-10-21
- Added rate limits:
RateLimitandRateLimit-Policyheaders,429 RATE_LIMITEDwithRetry-After, and429 CONCURRENCY_LIMITEDfor too many generations in progress.
1.2.0 — 2026-10-21
- Added
GET /creditsandGET /usage(scopeusage:read) and the optionalX-Storeshot-Clientheader that labels your usage.
1.1.0 — 2026-10-21
- Added API keys (
ss_live_…,ss_test_…) with scopes:GET /me,POSTandGET /api-keys, andDELETE /api-keys/{id}.
1.0.0 — 2026-10-21
- First contract:
GET /health,GET /devices, the OpenAPI document, the error envelope with its code catalogue and theX-Request-Idheader.