n8n renders Imejis designs as part of any automation you build, self-hosted or on n8n Cloud. Design a template once, mark the layers that change as dynamic fields, then drop in a single HTTP Request node. The finished image comes back on that node's own output, so there is no webhook to wait on and no second workflow to catch a callback.
Unlike Airtable or Google Sheets, n8n talks to the render API directly. No middleman platform sits in between.
Add an HTTP Request node. Method POST, URL set to your design's render endpoint:
https://render.imejis.io/v1/<designId>Add the dma-api-key header with your API key, and set Body Content Type to
JSON.
Send the fields you want to change, using n8n expressions to map data from earlier nodes:
{
"title.text": "{{ $json.title }}",
"subtitle.text": "{{ $json.subtitle }}"
}Omitted fields fall back to the design's defaults.
This is the step that trips people up, because n8n decides how to read the response before it sees it.
| You want | Append to the URL | n8n Response Format | Use downstream |
|---|---|---|---|
| The image file | nothing | File | the binary on the node output |
| A stored URL | ?delivery=hosted | JSON | {{ $json.url }} |
| A private, expiring URL | ?delivery=signed | JSON | {{ $json.url }} |
Leave Response Format on File while asking for ?delivery=hosted and n8n
writes the JSON body into a binary field, which then fails further down the
workflow with an error that points at the wrong node.
With ?delivery=hosted the node receives:
{
"success": true,
"delivery": "hosted",
"url": "https://...",
"format": "png",
"file": { "bucket": "imejis", "path": "hosted-exports/...", "size": 46819 }
}In a batch, the delivery mode decides what you are storing.
Every render counts as one render whichever mode you choose.
?format=. See the pricing page for render allowances.We use cookies to run the site and, with your consent, for analytics and marketing. See our Cookie Policy. You can change this any time from “Cookie settings” in the footer.