Error codes
Every error code the API returns, with its HTTP status, what happened and how to fix it.
Each code below is the error.code of a response, and each error's doc_url links to its section here. The list is closed: the API returns no other code. Error format shows the shape of the body.
invalid_json
Status400
What happened. The body is not valid JSON.
How to fix. Send a JSON object with Content-Type: application/json.
invalid_query
Status400
What happened. The query string cannot be read: a % is not followed by two hex digits.
How to fix. Percent-encode the values, for example with encodeURIComponent.
unknown_parameter
Status400
What happened. A body field or query parameter is not part of this operation; param names it.
How to fix. Remove it. The key sets the mode, so livemode is never a parameter.
invalid_cursor
Status400
What happened. The cursor was not issued for this list, or it was changed.
How to fix. Send next_cursor exactly as you received it, to the same list.
api_key_missing
Status401
What happened. The request has no key.
How to fix. Send Authorization: Bearer and your key.
api_key_invalid
Status401
What happened. The key is unknown, revoked or expired.
How to fix. Use an active key from the console.
no_launches_left
Status402
What happened. The launch needs 1 launch and you have 0. Nothing was spent.
How to fix. Buy launches in the console, then send the same request again.
account_suspended
Status403
What happened. Your account is suspended: it can read but not write.
How to fix. Contact support.
permission_denied
Status403
What happened. A read-only key tried to write, or to read logins.
How to fix. Use a key with full permissions.
test_mode_only
Status403
What happened. A live key called a test helper.
How to fix. Call test helpers with a sbm_test_ key.
not_found
Status404
What happened. Nothing with this id in the key's mode.
How to fix. Check the id, and that the key's mode matches the object's.
route_not_found
Status404
What happened. No operation at this path.
How to fix. Check the path against the reference.
method_not_allowed
Status405
What happened. The path exists, but not with this HTTP method.
How to fix. Use a method the reference lists for the path.
already_launched
Status409
What happened. The project has launched, so it cannot launch again or be deleted; existing holds it.
How to fix. Add directories with POST /projects/{project_id}/listings instead.
project_exists
Status409
What happened. Another project has the same url, contact_email or external_id; param names the field and existing holds that project.
How to fix. Use existing, or change the field.
idempotency_key_in_use
Status409
What happened. A request with this Idempotency-Key is still running.
How to fix. Retry in 1 second with the same key.
gone
Status410
What happened. The report file expired after 7 days, or the path belongs to a retired API.
How to fix. Build a new report, or follow doc_url to the path that replaced it.
cursor_expired
Status410
What happened. The cursor points to events older than 90 days.
How to fix. Read the objects you track again, then read the feed without a cursor.
unsupported_media_type
Status415
What happened. The body is not application/json, or for images not multipart/form-data.
How to fix. Set Content-Type to match the body.
validation_failed
Status422
What happened. Fields are invalid; errors lists each one with its param and code.
How to fix. Fix each field in errors and send the request again.
not_ready
Status422
What happened. The project misses something a launch needs; errors lists it. Nothing was spent.
How to fix. Add what is missing. readiness.missing shows the same list.
nothing_to_submit
Status422
What happened. No directory in the catalog fits the project now. Nothing was spent.
How to fix. Check unlocks and not_matching in the readiness preview, change the project, and try again.
invalid_directories
Status422
What happened. Some directory ids are unknown, outside the catalog, not open to the project or already used; errors lists them. Nothing was spent.
How to fix. Remove them and send the request again.
allowance_exhausted
Status422
What happened. The project has no free allowance: listings use or reserve all of it, or it has not launched.
How to fix. Wait for listings to end; not_accepted and cancelled listings give theirs back.
badge_not_found
Status422
What happened. We read the site and did not find the badge.
How to fix. Run check_command, fix the install, and verify again.
image_unreachable
Status422
What happened. We could not download an image from the URL.
How to fix. Check that the URL is public and returns an image, or upload the file instead.
endpoint_url_invalid
Status422
What happened. The webhook URL is not a public https URL.
How to fix. Use https, a public host, and no user name or password in the URL.
idempotency_key_reused
Status422
What happened. This Idempotency-Key came with a different request before.
How to fix. Use a new key for each new request.
quota_exceeded
Status422
What happened. Before your first purchase, test mode allows 25 projects, 100 new projects a day and 3 webhook endpoints.
How to fix. Delete test data in the console, wait for the next day, or buy launches.
rate_limited
Status429
What happened. Too many requests this hour, or too many calls to an operation with its own limit.
How to fix. Wait the seconds in Retry-After.
internal_error
Status500
What happened. Something failed on our side.
How to fix. Retry with backoff; quote request_id if it repeats.
unavailable
Status503
What happened. The API is down for a short time.
How to fix. Retry after the seconds in Retry-After.