API reference
Interactive Render API docs from the OpenAPI spec, with Try it in the browser.
Base URL: https://app.jsontoimg.com
Authenticate with Authorization: Bearer <api_key> or X-Api-Key. See Authentication.
Error responses use a flat { error, code, details? } shape — see Errors.
For programmatic clients see the Node.js SDK and CLI.
Open any operation below and use Test to send a live request (routed through this docs site so the browser avoids CORS issues).
Downloads
Endpoints
Renders
- post
/api/v1/renderCreate a renderEnqueues a render and returns immediately with status: queued (HTTP 202). Pass ?wait=60 (max 120) to block until a terminal status within the timeout.
- post
/api/v1/img/signMint a signed URL-render linkReturns an HMAC-signed GET /api/v1/img/{template} URL for CMS / Open Graph <img> tags. The fetch itself needs no API key. Pass jobs (1–50) to mint many URLs in one call. Minting does not consume a credit; the first unique GET of each URL does. Repeats are cache hits.
- get
/api/v1/img/{templateId}Fetch or render a signed imageUnauthenticated. sig is HMAC over the template id and query (except sig). Optional exp is a unix expiry. Other query keys map to layer text or variables. First unique payload renders and bills the template owner; later hits stream the stored file.
- get
/api/v1/renders/{id}Get render statusPoll status as a fallback. Prefer /wait or /events in production. Use exponential backoff (250ms → 2s cap).
- get
/api/v1/renders/{id}/waitWait for render completionLong-poll until the job is done or failed, or until timeout elapses (max 60s). Returns 202 with retryAfterMs if still in progress — open another wait request.
- get
/api/v1/renders/{id}/eventsStream render status (SSE)Server-Sent Events stream of event: status until the job is terminal. Best for browser clients with a session cookie.
- get
/api/v1/renders/{id}/assetDownload render assetStreams the binary asset (HTTP 200). Send a session cookie or API key, or a valid sig query from assetUrl (no key). Signed fetches are long-lived until the file is archived (410). The former path /api/v1/renders/{id}/image still works as an alias.
Batches
Webhooks
Templates
- get
/api/v1/templatesList templatesReturns a page of templates in the API key's workspace (default 50, max 100). If hasMore is true, request the next page with offset. Use names and descriptions to pick a template, then fetch its schema.
- get
/api/v1/templates/{id}/schemaGet template layer schemaReturns named layers and overridable attribute schemas for a template. Use this to build valid layers payloads for render requests.