Skip to main content
Every failure returns the same JSON envelope with an HTTP status that matches.
Branch on code, never on message. The code is the contract. The message is prose and can be reworded at any time.
Log request_id. Quoting it lets support find the exact request.

Codes

404 hides what you cannot reach

Anything outside your workspace answers 404, not 403. A 403 would confirm that the id exists, which turns every endpoint that takes an id into a way to test whether another workspace’s resources are real. So 404 means “no such resource, for you”. It does not distinguish a wrong id from someone else’s id, and it cannot.

Retrying

Retry-After is sent in seconds when the response carries a delay.
Do not retry a 402 in a loop. Waiting does not create quota. Raise the plan on the Billing page, or wait for the next paid period.

Content type

Send Content-Type: application/json on every mutation. A POST without it is refused with 415 before any ClipStake code runs, so it never reaches the envelope above.

Reaching a path that is not an endpoint

api.clipstake.com serves the API under /v1. Any other path returns the same 404 not_found envelope, so a mistyped path is still something your client can parse. Opening one in a browser shows a readable page instead.