SDKs & REFERENCE

Errors

Render API error shape, status codes, and machine-readable codes.

All v1 JSON errors use a flat body:

{
  "error": "Human-readable message",
  "code": "VALIDATION_ERROR",
  "details": {}
}

details is optional and only present when useful (layer validation, duplicates, hints).

Codes

CodeTypical HTTPMeaning
UNAUTHORIZED401Missing or invalid API key / session
BAD_REQUEST400Malformed request (missing template, bad version, empty batch)
NOT_FOUND404Design, version, render, batch, or asset missing
VALIDATION_ERROR422Invalid layers, repeat expansion, or unsupported options
DUPLICATE_LAYER_NAMES422Template has duplicate API layer names
PAYMENT_REQUIRED402Plan quota exceeded
FORBIDDEN403Plan/feature not allowed
RATE_LIMITED429Too many requests; see Retry-After
QUEUE_UNAVAILABLE503Render could not be enqueued
GONE410Archived render file; re-render

Notes

  • Rate-limited responses include a Retry-After header (seconds).
  • Signed GET /api/v1/img/{template} that is still rendering returns 503 with Retry-After (plain text, not JSON) so <img> / crawlers retry.
  • transparent: true is only valid with format: png, webp, or avif.
  • Asset downloads (GET /renders/{id}/asset) stream bytes (HTTP 200). Authenticate with an API key, or pass sig from the job's assetUrl for an unauthenticated, long-lived fetch. Archived files return 410.

On this page