Generate personalized email images via API
Render a unique hero image for every recipient — their name, plan, streak or progress baked into the picture — so your campaigns feel one-to-one instead of one-to-many.
100 renders / month free · no card · paid plans are never blockedHow it works
Template the email hero
Place the recipient name and personalised fields over your campaign artwork.
Render at send time
Call the API (or a signed URL) per recipient as your ESP composes each message.
Embed the image
Drop the signed URL into your email's <img> tag — it renders on open, no email-client tricks.
One API call
curl https://api.mostlyrender.com/v1/renders \
-H "Authorization: Bearer mr_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"templateId":"tpl_email_hero","modifications":{"name":"Sam","headline":"your table is ready"}}'Questions
Does this work with my email provider?
Yes — the personalised image is just a URL, so any email service that supports merge fields in an <img> src can use it.
Won’t per-recipient images be expensive?
Identical renders are cached and not re-billed, and overage is a published per-1,000 rate — $4 on Pro — so even a large send has a predictable cost.
When is the image actually rendered?
With a signed render URL, it’s rendered the first time the image is requested — typically when the email is opened — and served from cache after that. You can also pre-render with the API at send time and use the returned URL.
Can someone change the URL to see another person’s image?
Not without breaking it. The signature covers the template, the format and every parameter, so an edited URL returns 403. Add exp to a signed URL if the image should stop working after a date.
Which format should I use for email?
PNG or JPEG are the safest across email clients. Use q to trade quality for size on JPEG, and scale 2 for crisp images on high-density screens.
What happens if I go over my plan mid-campaign?
On a paid plan the renders keep coming and the extra ones are billed as overage — a campaign never breaks halfway. On the Free plan, signed URLs return 402 once the 100 monthly renders are used.
Can I personalise more than the name?
Yes. Any named layer is a parameter — plan, streak, progress, a product photo, even the background — and layers you don’t send keep their designed defaults.