Errors
Every error response is JSON: { "error": "machine_code", "message": "human-readable", "issues"?: [...] }. issues is present only on validation_error, one entry per invalid field.
| HTTP | error code | Meaning |
|---|---|---|
| 400 | validation_error | Request body failed validation — check issues for which field. |
| 401 | missing_api_key / invalid_api_key | No x-api-key header, or the key doesn't match a live account. |
| 403 | plan_required | Your account doesn't have an active Developer plan. |
| 403 | forbidden | That job/batch id exists but belongs to a different account. |
| 404 | diagram_not_found | Diagram id doesn't exist, or belongs to a different account. |
| 404 | not_found | Job or batch id doesn't exist (or has been cleaned up). |
| 402 | insufficient_credits | /logo only — your credit balance can't cover this generation. |
| 429 | rate_limited | Too many requests — see Authentication & concepts, retry after RateLimit-Reset. |
| 503 | image_service_unavailable / batch_unavailable | Generation is temporarily unavailable — retry shortly. |
| 500 | various *_failed codes | An unexpected server-side failure. Safe to retry; contact support if it persists. |
Full field-by-field spec: /api/v1/openapi.json
