Automate InDesign IDML
And get PDF, SVG, PNG or JPEG.
POST an IDML file and get rendered output. Translate the text, swap in dynamic fields, or just convert at scale: no InDesign install or license.
- No queue, no license
- Per-element text overrides
- 100 free credits / month
Authentication & credits
Log in to get an IDML API key — it's issued automatically the first time you use one. Pass it as the Authorization header, with no Bearer prefix. Every account gets 100 free credits a month; 1 credit = 1 rendered page. Check your balance any time on the account page.
The request
One multipart/form-data POST. The document goes in the idml field, every asset it links to goes in a repeated assets field, and the output options ride along as query parameters.
Form fields
| Field | Req. | What to send |
|---|---|---|
idml | Yes | The .idml file (exactly one). |
assets | No | Every linked image and font the document uses. Append the field once per file. Assets are matched to the document by filename, so name each part after the file the IDML links (hero.jpg, HelveticaNeue.otf); any folder path is ignored. Non-web images (AI, EPS, PDF, PSD) are rasterized on the server. Anything you leave out renders as a placeholder. |
Options
Pass these on the query string (or as extra form fields).
| Param | Default | Description |
|---|---|---|
format | png | png · jpeg · pdf · svg |
pages | all | all, or a 1-based list like 1,3,5. |
textOverrides | — | JSON {"<pageIndex>:<elementId>": "value"} map — replace specific text elements for translation or dynamic fields. A text frame's InDesign size is the max bound for whatever you put in it (shrinks/wraps, never grows) and one frame doesn't always mean one key — see text frames & best practices. Mixed-formatting elements need an array instead of a string — see the rich-text format. |
engine | puppeteer | puppeteer (full fidelity) or resvg (faster PNG/JPEG). PDF always uses puppeteer. |
dpi | 300 | Output resolution for raster and PDF. |
quality | 95 | JPEG quality, 1–100. |
vectorizeText | true | SVG only. true outlines text to paths; false keeps live <text> and embeds fonts as data URLs. |
width / height | page size | Override the rendered size, in px. |
The response
- One page → the raw file, with the matching
Content-Type(image/png,image/jpeg,image/svg+xmlorapplication/pdf). - Multiple pages, PDF → a single merged, multi-page PDF.
- Multiple pages, PNG/JPEG/SVG → a
application/zipwith one file per page. - Errors → a non-2xx status with a plain-text message in the body.
See it used end to end
Step-by-step tutorials for translating and automating InDesign files — and the artwork you already build in Figma, Photoshop, Canva or Illustrator.
Browse the guidesQuestions about the API? Email us.