Skip to main content
Every failure has the same shape, and every response — success or not — carries an x-request-id header. Email it to support@creatorline.io and we can find the exact request.
Errors are written to be actionable: a bad enum echoes the legal values, an unknown tool lists the real ones, and param points at the exact field. If you are writing an agent, surfacing error.message verbatim is usually enough for it to fix itself.

Statuses

A 5xx that keeps repeating, or any response you cannot explain, is worth an email to support@creatorline.io with the request_id. That id is how we find your exact call in our logs.
A resource belonging to another organization returns 404, never 403. We will not confirm that an id exists somewhere else.

Retrying safely

GET is safe to retry. For POST /v1/generations — the one call that spends money — send an Idempotency-Key:
A replay with the same key returns the original generation, with idempotent-replay: true, and charges nothing more. Generate one UUID per logical operation and reuse it across that operation’s retries. Keys are scoped to your API key and kept for 24 hours.
If your request times out, the run may well have started — the charge happens server side, before your response is written. Retrying with the same Idempotency-Key is how you find out which: you get the original job handle back instead of paying twice.

The 402 you should expect

Nothing was charged and nothing was started. Call POST /v1/generations/cost first if you want to avoid it, or watch GET /v1/credits.