Automette docs

Get a render

GET
/api/v1/renders/{id}

Authorization

ApiKeyAuth
AuthorizationBearer <token>

API key from Settings → API Keys.

In: header

Path Parameters

id*string

Query Parameters

download?boolean

Redirect to the file. Only works when status is completed.

format?string

Select which format to download when multiple formats were requested. Defaults to the first file.

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/v1/renders/string"
{  "id": "cm4rnd7qh0001jx04w8e2t5va",  "self": "https://automette.com/api/v1/renders/cm4rnd7qh0001jx04w8e2t5va",  "status": "completed",  "url": "https://cdn.automette.com/p/cm4rnd7qh0001jx04w8e2t5va/document.pdf",  "format": "pdf",  "template_id": "cm4tpl8e20001js04xq2v9k3m",  "template_name": "Invoice",  "webhook_url": "https://your-app.com/hook",  "webhook_deliveries": [    {      "id": "cm4wdl4rs0001jy04t2f8k6mc",      "event_id": "evt_abc123",      "source": "render_webhook",      "http_status": 200,      "success": true,      "error": null,      "created_at": "2026-04-22T12:00:01.000Z"    }  ],  "data": {    "invoice_number": "INV-0042"  },  "error": null,  "created_at": "2026-04-22T12:00:00.000Z"}

Generate a document POST

Generates a PDF or image from a template and your data. **Async (default)** — returns `202 Accepted` immediately with `status: "pending"`. Poll `GET /api/v1/renders/{id}` until `status` is `completed`, or set `webhook_url` to receive a callback and skip polling entirely. **Sync** — set `async: false`. Returns `200 OK` with a completed render if it finishes within 30 seconds. If the render takes longer, the request returns `202` with `status: "pending"` and the render finishes in the background — fall back to polling exactly like async mode. A sync timeout is **not** an error. **Visibility** — in both cases the `url` in the response is a link you can hand to anyone; the difference is how long it lasts and who else could find it. - `public` — file is served from CloudFront. `url` is permanent, cacheable, and readable by anyone who has it. Best for embedding in emails, social posts, or public web pages. - `secure` (default) — file is stored privately and `url` is a signed link valid for 1 hour. Fetch the render again via `self` at any time for a fresh one. Best for sensitive documents (invoices, contracts). **Output formats** — all engines support multiple output formats in one request. Use `format` (single string) or `formats` (array) to specify. Allowed values by engine: Typst `pdf`, `png`, `jpg`; Canvas `png`, `jpg`, `webp`, `pdf`; DOCX `pdf`, `docx`. Defaults to `pdf` for Typst/DOCX and `png` for Canvas. The response always includes a `files` array — one entry per output file. **Filename patterns** — the `filename_pattern` field accepts `{field_key}` placeholders and built-in tokens: `{template}`, `{date}`, `{time}`, `{datetime}`, `{random}`. Defaults to `{template}-{datetime}-{random}`. **Non-string data values** (numbers, booleans, arrays, objects) are auto-serialized to JSON strings before being passed to the renderer.

List Dynamic URLs GET

Every Dynamic URL on the team. Filter to one template with `template_id`. Secret values are withheld. Ask for one with `include_secret=true` on the single-URL endpoint.