validation_error | 400 | no | The message names the field. GET /tools carries the exact input schema. |
not_media | 400 | no | The ref is not audio or video. |
unauthorized | 401 | no | The credential is missing or invalid. |
forbidden | 403 | no | The credential has no access to this resource. Another id will not help. |
refused | 403 | no | Declined on purpose. The message says why. |
not_found | 404 | no | Re-read the object that gave you the id rather than assembling one. |
insufficient_credits | 402 | no | get_balance returns the balance and where more can be added. |
storage_full | 507 | no | The owner’s storage has no room for what this makes. get_checkout_link with product: "storage" returns a link to buy more, or delete_items frees room. |
conflict | 409 | no | Something changed underneath. Re-read and reapply. |
revision_conflict | 409 | no | The document moved since the revision given, or a user edited it since the last read. Re-read and reapply. |
needs_cloud | 409 | no | The call, made through the desktop app, set run_on: "local" and the work needed the cloud, so it did not run. Call again without it, or with run_on: "cloud". |
rate_limited | 429 | yes | Wait for Retry-After, then retry the same call with the same key. |
payload_too_large | 413 | no | The body is over 9 MB. Send the file by upload or URL instead. |
unavailable | 503 | yes | A provider or the service is briefly unavailable. Wait for Retry-After, then retry with the same key. |
internal_error | 500 | once | An error on our side, not in the call. If it repeats, submit_feedback. |