| 400 | invalid_request | The body or query failed validation (unknown fields are refused). details says which field. |
| 400 | invalid_json | The body is not valid JSON. |
| 400 | invalid_cursor | A pagination cursor was altered or truncated. Restart from the first page. |
| 400 | invalid_file_slug | file_slug must match ^[a-z0-9][a-z0-9._-]{0,127}$. |
| 400 | invalid_transform_chain | The chain does not parse or names an unknown preset; details.reason says why. |
| 400 | watermark_preset_not_found | A watermark preset named in a chain or setting does not exist in this project. |
| 400 | transform_chain_not_allowed | Minting a signed URL on a public project with a chain outside allowed_transform_chains. |
| 400 | invalid_range | Usage from must be before to. |
| 401 | unauthorized | Missing, unknown or revoked credential. |
| 403 | forbidden | The API key lacks the scope this operation needs. |
| 403 | browser_session_required | This route is for dashboard sessions only (keys, settings, billing, audit). |
| 403 | project_suspended | The project is suspended. |
| 403 | project_suspended_by_staff | Only img2site staff can reactivate this project. |
| 403 | storage_quota_exceeded | The upload would exceed the project's storage limit. |
| 403 | raw_download_disabled | A raw signed URL was requested but the project has raw downloads off. |
| 404 | not_found | The resource does not exist or belongs to another project or organization. |
| 404 | file_not_found / upload_not_found | No such file or upload session in this project. |
| 409 | project_exists | The project slug is taken. |
| 409 | api_key_quota_exceeded | The project already has 100 active API keys. |
| 409 | file_not_ready | The file is not ready (for example blocked). |
| 409 | signing_key_missing | The project has no active signing key; rotate one. |
| 409 | default_watermark_in_use | The preset is the project's default watermark; change the default first. |
| 409 | recipe_name_taken | Another recipe of the project has this name. |
| 413 | payload_too_large | The request body is over the route's limit (64 KiB for most writes). |
| 429 | rate_limited | Too many requests or failed authentications; wait for Retry-After seconds. |
| 503 | auth_unavailable / storage_unavailable | A dependency is briefly unavailable. Retry with backoff. |