Make static ad variants from one template
You want to test three headlines, three offers, or three products without laying out three ads. With thirds.ai you save one ad template and change its data for each variant, either with three API requests or in the editor. This recipe uses the Seasonal offer design from the gallery and works today with the tools you already have.
Start from the Seasonal offer design
Open Seasonal offer in the gallery and choose Copy to my account. Your copy is a 1,200 by 1,200 pixel square with a business name, a headline, a large offer, a detail line, an action bar, a logo, and a product picture. Open Templates to find its ID, which starts with tpl_.
Every field is optional, and each one has a default from the sample. Send the fields you want to change.
| Field | What it changes |
|---|---|
business_name | The small name beside the logo |
headline | The main line under the name |
offer | The large offer text, which shrinks to fit its box |
detail | The one or two sentences under the offer |
action | The text on the dark bar |
logo | An uploaded image reference or a public image URL for the logo |
product_image | An uploaded image reference or a public image URL for the product photo |
Text objects in this design shrink to fit, so a longer headline still stays inside its box. Upload a product photo once with POST /v1/image-assets and use the returned asset:// reference in product_image. Set PDF and image options shows the upload.
Three variants with three requests
Each request renders one image and costs one credit when it succeeds. Give each variant its own Idempotency-Key, and send version: 1 so a later publish never changes a retry. This is the first variant, which tests a new headline.
curl --fail-with-body --silent --show-error https://thirds.ai/v1/image \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: autumn-sale-variant-a' \
--data '{"template_id":"tpl_00000000000000000000000000000000","version":1,"data":{"headline":"Fresh pages for a fresh start","offer":"25% off","detail":"Our full range of notebooks and planners. This weekend only.","action":"Shop the new season"},"image":{"format":"png","width":1200,"height":1200},"wait":false}'
The second variant keeps the headline from the sample and tests a different offer. Send the same request with the key autumn-sale-variant-b and this data.
{
"headline": "Room for something new",
"offer": "Buy 2, get 1 free",
"detail": "Mix any notebooks and planners. This weekend only.",
"action": "Shop the new season"
}
The third variant tests a different product. Send the key autumn-sale-variant-c, this data, and your uploaded photo reference.
{
"headline": "Plan the year ahead",
"offer": "25% off",
"detail": "Every 2027 planner in the range. This weekend only.",
"action": "Shop planners",
"product_image": "asset://asset_0123456789abcdef0123456789abcdef"
}
Poll GET /v1/image/{id} for each job until status is succeeded, then read download.url, add https://thirds.ai in front of the path, and save each file with a name that says which variant it is. The files stay for 30 days in Renders. Create your first PDF shows the poll and download commands, and Retry requests and download files explains the error codes.
Or make the variants in the editor
Open your copy in the editor. The Data panel holds the sample values. Change the headline, press Refresh preview, and press Export when it looks right. Each export costs one credit on success, and the live preview is free. Change the data again and export again for the next variant.
If a variant needs a layout change, such as a wider offer box, make the change on the canvas and press Save template. Each save is a new version, and the earlier version stays as it was. You can also ask the chat for a brand change with your kit selected, which uses AI credits. The template editor page shows the workspace.
What this recipe does and does not do
This recipe changes the data of one design and renders one image per request. It does not offer a bulk screen that renders a list of variants in one click, so your app or a short script sends the requests. It does not resize a design on its own, so a 1,200 by 628 pixel version of this square ad needs its own layout, saved as a second template. It does not send the files to an ad platform, so you download each image and upload it where you run the ad.
A wrong data value fails before a job is created, and a failed render costs nothing. Send values within the field limits, keep the JSON small, and use a fresh key for each new variant.
Keep the variants straight
Put the variant name in the Idempotency-Key, in the file name, and in your own record next to the job ID. A retry with the same key and the same data returns the same job for 24 hours, so a network error never costs a second credit. When you want a changed image, change the data and the key together. Read Use templates with your data for schema checks and version rules.
Read next
- The static ads page shows the ad workflow from brief to file.
- Make Open Graph images from HTML renders a wide card from raw HTML.
- Rebuild an image as an editable template turns an existing ad picture into a template.
- Create branded PDFs and images from words, HTML, or a picture covers every way to start.
Sign in to copy the Seasonal offer design and render your first three variants with the free monthly credits.

