Where to start
Authorization
ApiKeyAuth API key from Settings → API Keys.
In: header
Response Body
application/json
application/json
curl -X GET "https://example.com/api/v1"{ "name": "Automette API", "description": "Turn a template plus data into a document — PDF, PNG, JPG, WebP or Word.", "start_here": "https://automette.com/api/v1/skills/recipes", "skills": [ { "id": "recipes", "title": "What you can do, and how", "engine": "both", "kind": "skill", "summary": "Every task this API supports and the route to it.", "self": "https://automette.com/api/v1/skills/recipes" } ], "engines": { "canvas": "JSON layouts of positioned components. Authorable over the API.", "typst": "Markup compiled to PDF. Authorable over the API.", "docx": "Uploaded Word files. Renderable over the API, authored in the dashboard." }, "resources": { "templates": "https://automette.com/api/v1/templates", "renders": "https://automette.com/api/v1/renders" }, "openapi": "https://automette.com/openapi.yaml", "docs": "https://automette.com/docs"}Read a reference page GET
One page in full, as Markdown in the `content` field. Send `Accept: text/markdown` to get the body on its own with no JSON envelope, which is usually what you want to drop into a model's context. Only fonts we ship can be used, and only assets uploaded to the template resolve — both are covered here, and both are the most common way a first render fails.
Get the team's brand kit GET
Your team's colours, logos and uploaded fonts. Read this before authoring a template that should be on-brand: the hex values here are the ones to put in a component's `fill`, `fonts[].family` is the exact string to put in `fontFamily`, and `images[].key` is what goes in an image component's `src`. Use `images[].key`, not `images[].url`. The key is resolved against storage at render time, so a template that names it keeps working and picks up a replaced logo. A URL written into a document is a copy of a decision made once.