Reference

Errors & usage

Use the HTTP status and response message to understand what happened and what to do next. Validation errors identify the fields to fix; codes such as API_SCOPE_REQUIRED explain missing permissions.

Status codes

StatusMeaning
200 / 201Success.
400Validation error.
401Missing, invalid, or revoked API key.
403The key lacks a required scope or the account lacks permission.
404The referenced resource is not available to this account.
402Insufficient credits or a product allowance; no new work starts.
409Idempotency body mismatch or original submission still being confirmed.
410The operation receipt or artifact download access has expired.
422The requested design or revision is unavailable or incompatible, or a store link given to POST /developer/apps without a name could not be read (STORE_LISTING_UNAVAILABLE). Send name and description to create the profile from your own details.
503Generation is paused, capacity is full or a dependency is unavailable.
429The API-key or request rate limit was reached.
5xxThe server could not complete the request.

Check your plan and credit balance

Check your credit balance and plan limits in Studio, and see Pricing for current plans. Credit values in the API examples are illustrative. Generation responses report the cost of your request and projected remaining balance.

Retries and usage

Paid submissions return jobId and credits: the quoted cost and projected spendable balance. Credits are debited when processing starts. Persist one Idempotency-Key per new paid stage and reuse it with the unchanged body on retries, including through the legacy namespace. A changed body requires a new key only when you intend a new paid operation.

Keep polling accepted pending/running jobs. A request timeout does not prove generation stopped. An expired receipt is not a new submission. Confirmed execution failures are compensated; an outcome requiring review must be resolved with support before starting again.

For 429 or admission-related 503 responses, respect Retry-After. Do not retry a body-mismatch 409 unchanged: restore the original body to recover its operation. Cheap requests and downloads have separate account/key/IP limits.

Examples use illustrative credit values. They do not define prices, quotas or monthly allowances. There is no required estimate or confirmation call before generation.

Publishing needs its own completion check

A successful session start acknowledges background work. Follow the publishing session until the upload result is recorded. done confirms Google Play accepted the changes; error, partial and uncertain need inspection before another write. An uncertain result must be reconciled with the store, even if a network error appears transient.

If the response includes failure, read its error code, message and suggested next step. A missing localized listing is different from a missing app; a permission refusal is different from a review conflict. Keep the run/session ID when contacting support so the original attempt can be checked.