Prerequisites
- A template. Template editor shows how to build one, and the gallery has ready-made ones.
- An API key. Create one on the API Keys page of the dashboard.
- The template id. Open the menu on a template card and choose Copy Template ID.
Generate an image
- Name the layers you want to change. Modifications explains how.
- Send a
POSTrequest to/v1/templates/createImagewith a JSON body:
- Read the response. The body is the image file, and the
Content-Typeheader says which format it is:image/png,image/jpeg, orimage/webp.
Content-Type: application/json header. A request without it fails with INTERNAL_SERVER_ERROR.
Options
The template sets the size of the image. A request cannot change the canvas.
PNG is lossless. JPEG and WebP make smaller files, and
quality sets the trade-off between size and detail.
Try a template in the dashboard
The Form page under Generate lets you test a template without code. Its title is Template Playground.- Choose a template in Select Template and a key in API Key. The page uses your first key until you choose another.
- Pick a layer under Elements. For a text layer, change Text Content on the Content tab or Text Color on the Style tab. For an image layer, enter an Image URL. The eye button next to a layer hides it.
- Click Generate Preview.
createImage request with the key you chose, so each preview counts as one generation. Download saves the PNG, and Copy puts it on the clipboard.

The Template Playground.
See your generations
The Generations page in the sidebar lists every image and PDF that the API made for your project, newest first. This is useful when you want to check what a request sent, or find a stored file again.- Filter the list by Template and by Time range: the last 24 hours, 7 days, or 30 days.
- Each row shows the time, the template, the format, the size, and if the generation was billed.
- Open opens a stored file. A file that the API returned in the response shows Not stored.
- Copy modifications copies the values that the request sent, ready to send again.
- Load more shows older generations.

The Generations page.
Get a link instead of a file
POST /v1/templates/createStoredImage takes the same body and returns a URL in place of the bytes:
s3Config object to save the file to your own S3-compatible bucket. Storage and notifications lists its fields.
A stored image counts as one generation.
Use an SDK
The SDKs send this request for you and return the bytes.Handle errors
A failed request returns JSON with anerror object instead of an image. Read error.code to decide what to do next, and send error.requestId to support when you need help. Errors lists every code.
Related pages
- Generate PDFs for invoices, receipts, and certificates.
- Generate images from a spreadsheet to fill a template from a CSV or XLSX file.
- Signed URLs for images that render when someone opens a link.
- Quota and limits for what counts as a generation.