Automette docs

Where to start

GET
/api/v1

Authorization

ApiKeyAuth
AuthorizationBearer <token>

API key from API Keys in the dashboard menu.

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"}

Who this key is GET

The team an API key belongs to, the organization above it, and the name the key's owner gave the key. It exists so that anything holding a key can say what it is connected to without first knowing an id. `label` is the ready-made answer for a connection list: the team name, with the key's own name when it has one, since a team can have several keys.

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`: or in a Typst `#image("...")`, since the file is staged at that path. A font carries `problem` only when it cannot be used: no readable family name, or a family the product already ships, where the built-in face wins the name and the uploaded file is never drawn. Fonts uploaded before that was refused are still stored; this is where they say so. 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. A team can keep more than one kit. `fonts` and `images` cover all of them, because that is the scope a render resolves them in: a family or a key from any kit works in any template, and each entry carries `kit_id`/`kit_name`. `kits[]` lists the kits with their own palettes; the top-level `id`, `name` and `colors` are the default kit's, and an upload with no kit named goes there.