Docs menu

Catalog API reference

Static reference data.

View as Markdown

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

Example 200 response
{
  "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

Example 200 response
{
  "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

Example 200 response
{
  "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