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
| Status | Meaning |
|---|---|
200 / 201 | Success. |
400 | Validation error. |
401 | Missing, invalid, or revoked API key. |
403 | The key lacks a required scope or the account lacks permission. |
404 | The referenced resource is not available to this account. |
402 | Insufficient credits or a product allowance; no new work starts. |
409 | Idempotency body mismatch or original submission still being confirmed. |
410 | The operation receipt or artifact download access has expired. |
422 | The 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. |
503 | Generation is paused, capacity is full or a dependency is unavailable. |
429 | The API-key or request rate limit was reached. |
5xx | The 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.