List templates
Authorization
ApiKeyAuth API key from Settings → API Keys.
In: header
Query Parameters
Filter by template engine. Any value other than typst, canvas, or docx returns 422.
Value in
- "typst"
- "canvas"
- "docx"
Set to true to list archived templates instead of active ones.
Response Body
application/json
application/json
curl -X GET "https://example.com/api/v1/templates"[ { "id": "cm4tpl8e20001js04xq2v9k3m", "name": "Invoice", "engine": "typst", "self": "https://automette.com/api/v1/templates/cm4tpl8e20001js04xq2v9k3m", "created_at": "2026-04-01T09:00:00.000Z", "updated_at": "2026-04-22T11:00:00.000Z" }]API Reference
Conventions, base URL, errors, and versioning for the Automette REST API.
Create a template POST
Creates a template, either from scratch or as a copy of one in the library. **From the library** — send `from_library` with a slug or id from `GET /api/v1/library_templates`. This is the path most callers want: start from a design that already works, then edit the copy. Do not copy the `document` yourself; the copy operation also duplicates the images and rewrites the references, which canvas templates need to render their own assets rather than the library's. **From scratch** — send `name`, `engine` and `document`. Nothing is validated on the way in, because a half-finished template is a legitimate thing to save. Call `POST /api/v1/templates/{id}/validate` to find out whether it will render. For `engine: "docx"`, omit `document`: a Word body is an uploaded file, so you get an empty template and upload the file to `PUT /api/v1/templates/{id}/docx` next. Passing `document` with `engine: "docx"` is rejected rather than ignored. Copying a DOCX template from the library works too, and brings its Word body with it.