Help Center

API & Automation

Generate images with the API

Render any template programmatically. Pass your dynamic field values in one request and get a finished image back in under 2 seconds.

Once a template has dynamic fields, you can render it from code. One request in, one finished image out. No webhooks, no polling.

What you needWhat you need

  • An API key from your Imejis dashboard.
  • The design ID of the template you want to render.
  • Values for the template's dynamic fields.

Render a templateRender a template

Send the field values to the render endpoint for your design and you get the image back in the response. In pseudocode:

curl -X POST "https://render.imejis.io/v1/<DESIGN_ID>" \
  -H "dma-api-key: <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Welcome, Alex", "avatar": "https://example.com/alex.png" }' \
  --output result.jpg

Each key in the body matches a dynamic field name from your template. Anything you don't override keeps its designed default.

Output formats qualityOutput formats & quality

The render returns JPEG by default. Add ?format= to the endpoint to choose the output: png, jpeg, webp, or pdf (single-page, print-ready). The ?quality= option (1 to 100, trading file size against sharpness) applies to JPEG only. It is ignored for PNG, WebP, and PDF, which use their own lossless or default encoding.

curl -X POST "https://render.imejis.io/v1/<DESIGN_ID>?format=jpeg&quality=80" \
  -H "dma-api-key: <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Welcome, Alex", "avatar": "https://example.com/alex.png" }' \
  --output result.jpg

Get a hosted or signed image urlGet a hosted or signed image URL

Sometimes you want a URL back instead of the raw bytes, to drop into an <img> tag, a Slack message, or an email without proxying the image yourself. Add a delivery option to your design's render URL (the same one you use for a normal render) with your render key (dma-api-key):

  • delivery=hosted stores the render to a public file and returns a public URL you can hotlink directly.
  • delivery=signed stores it privately and returns a time-limited signed URL. Add expiresIn (minutes, default 60, up to 7 days).
curl -X POST "https://render.imejis.io/v1/<DESIGN_ID>?delivery=hosted&format=png" \
  -H "dma-api-key: <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Welcome, Alex" }'
# → { "success": true, "delivery": "hosted", "url": "https://storage.googleapis.com/.../image.png", "format": "png", ... }

Both take the same format and quality options as a normal render and count as one render against your quota.

Generate in bulkGenerate in bulk

To produce many images, one per customer, per row, or per event, loop over your data and call the endpoint once per record. The template stays the same. Only the field values change.

Language examplesLanguage examples

Imejis has ready-to-copy quickstarts for cURL, Node.js, Python, Go, PHP, Ruby, and more. Browse them on the API documentation page, and see the full list of renderable pieces in the component library.

No code no problemNo code? No problem

If you'd rather not write code, connect a template to Zapier, Make, or a public link instead.

Frequently asked questionsFrequently asked questions

How fast is a renderHow fast is a render?

Each render comes back in under 2 seconds, in one request. There are no webhooks and nothing to poll.

How do i generate images in bulkHow do I generate images in bulk?

Loop over your data (a spreadsheet, a database, a list of customers) and call the export endpoint once per record. The template stays the same and only the field values change.

Which languages are supportedWhich languages are supported?

Any language that can make an HTTP request. Ready-to-copy quickstarts cover cURL, Node.js, Python, Go, PHP, Ruby, and more on the API documentation page.