Catalog API reference
Static reference data.
List store screenshot sizes
GET /devices
No authentication.
App Store and Google Play image sizes Storeshot can generate, including the Google Play 1024×500 feature graphic. No authentication. A deprecated size (deprecated: true) is still accepted but never a default; use its replacedBy.
When to use. To pick devices for a screenshot set or the device of a generation; most callers can leave devices out and get the store defaults.
Credits. Free: no credits.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
store | query | StoreTarget |
Responses
200 Device catalogue.
Schema DeviceList (application/json).
Headers: X-Request-Id
{
"data": [
{
"id": "app_store_1284x2778",
"store": "app_store",
"kind": "screenshot",
"label": "string",
"deviceHint": "string",
"width": 1,
"height": 1,
"orientations": [],
"deprecated": true,
"replacedBy": "google_play_1080x2160"
}
]
} 400 Invalid store (INVALID_INPUT).
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id
default Error (see ErrorEnvelope and /v1/docs/errors).
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id
List stores
GET /stores
Auth: API key or access token.
The stores Storeshot targets. Any valid API key or access token; no scope required.
Credits. Free: no credits.
Responses
200 The stores.
Schema StoreList (application/json).
Headers: X-Request-Id , RateLimit , RateLimit-Policy
{
"data": [
{
"id": "app_store",
"name": "string",
"requirementsUrl": "/v1/stores/app_store/requirements"
}
]
} 400 INVALID_INPUT. A credential sent in the query string is refused before authentication, without RateLimit headers.
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id , RateLimit , RateLimit-Policy
401 UNAUTHORIZED: missing, malformed, unknown, revoked or expired credential.
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id
403 FORBIDDEN: see details.reason.
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id , RateLimit , RateLimit-Policy
429 RATE_LIMITED: the request rate of the API key (details.scope key) or of the account (user) is exhausted for this window, or too many failed authentication attempts came from this IP (no details.scope and no RateLimit headers). Retry after Retry-After seconds.
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id , RateLimit , RateLimit-Policy , Retry-After
default Error (see ErrorEnvelope and /v1/docs/errors).
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id , RateLimit , RateLimit-Policy
Get store screenshot requirements
GET /stores/{store}/requirements
Auth: API key or access token.
Formats, counts, sizes or dimension rules per device class, which classes are needed, and the Google Play feature graphic, with the official sources they come from. Each class lists the GET /devices sizes it covers and whether they meet the store rules. Any valid API key or access token; no scope required.
When to use. Before choosing devices yourself, to check which sizes a store accepts and which device classes it requires.
Credits. Free: no credits.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
store required | path | string | app_store or google_play. Anything else is 404. |
Responses
200 The requirements.
Schema StoreRequirements (application/json).
Headers: X-Request-Id , RateLimit , RateLimit-Policy
{
"store": "app_store",
"name": "string",
"screenshots": {
"formats": [
"image/png"
],
"alpha": true,
"maxFileBytes": 1,
"count": {
"minTotal": 0,
"maxPerDeviceClass": 1
},
"sources": [
"apple_screenshot_specs"
]
},
"deviceClasses": [
{
"id": "phone",
"family": "iphone",
"label": "string",
"requirement": "required",
"count": {
"min": 0,
"max": 1
},
"maxFileBytes": 1,
"acceptedSizes": [
{}
],
"rules": {
"minEdge": 1,
"maxEdge": 1,
"maxAspectRatio": 0,
"exactAspectRatio": "string",
"recommendedAspectRatios": []
},
"sources": [
"apple_screenshot_specs"
],
"devices": [
{}
]
}
],
"requiredGroups": [
{
"when": "app runs on iPad",
"anyOf": [
"string"
],
"sources": [
"apple_screenshot_specs"
]
}
],
"featureGraphic": {
"width": 1,
"height": 1,
…Shortened; the Markdown version has the full example.
400 INVALID_INPUT. A credential sent in the query string is refused before authentication, without RateLimit headers.
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id , RateLimit , RateLimit-Policy
401 UNAUTHORIZED: missing, malformed, unknown, revoked or expired credential.
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id
403 FORBIDDEN: see details.reason.
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id , RateLimit , RateLimit-Policy
404 NOT_FOUND: no such resource for this caller.
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id , RateLimit , RateLimit-Policy
429 RATE_LIMITED: the request rate of the API key (details.scope key) or of the account (user) is exhausted for this window, or too many failed authentication attempts came from this IP (no details.scope and no RateLimit headers). Retry after Retry-After seconds.
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id , RateLimit , RateLimit-Policy , Retry-After
default Error (see ErrorEnvelope and /v1/docs/errors).
Schema ErrorEnvelope (application/json).
Headers: X-Request-Id , RateLimit , RateLimit-Policy