Zandovi · Now live
Why Zandovi

The image generation API with a real design editor.

Design editor

Stop making the same design 100 times.

Dynamic variables

One template. A thousand outputs.

Batch generation

Rows in. ZIP out.

Design a template on a full canvas, bind the parts that change to {{variables}}, then generate personalized images at scale — one POST per image, hundreds of rows per batch job, or a CSV upload with no code at all. Design once, generate thousands.

Your data lives in a spreadsheet — your design tool doesn’t know that. Zandovi binds a template to your data and renders a personalized gift card, badge or certificate for every row. Design once, generate thousands.

No more change-the-name, export, repeat. Bind any text, image, QR or barcode to a {{variable}}, feed your data once — and get a perfectly-rendered design for every row, every time.

The 100-badge afternoon becomes a two-minute job. Drop a spreadsheet into Zandovi — or POST the rows straight to the batch API — and we render up to 400 personalized designs per job, then hand you back a ZIP.

Free forever plan No credit card Full API + 200+ templates
POST /api/v1/templates/:id/generate
curl -X POST '\
  /api/v1/templates/019e4953-7ffb/generate' \
  -H 'Content-Type: application/json' \
  -H 'X-Api-Key: YOUR_API_KEY' \
  -d '{
    "variables": {
      "price_var": "$18"
    },
    "format": "png",
    "options": {
      "outputDpi": 96,
      "quality": 90
    }
  }' \
  --output generated-image.png

# → 200 OK · image/png · streamed to disk
zandovi.com / The Ember Table / Menu Card
Layers · 10
Circle
T The Ember Table
Line
T $18
T Citrus quinoa…
T Smoked Salmon Bowl
T Chef's Pick
Rectangle
🖼 Image
1080 × 1080 · 60%
T $18 {{price_var}}
text · 320 × 72 · Variable bound
Design Typography Variable
Binding
Name
price_var
Type
Text
Default value
$18
Constraints
RequiredYES
Batch · 3 of 400 rows
# price_var name_var rest_var
1 $18 Smoked Salmon Bowl The Ember Table
2 $24 Truffle Risotto Bowl Casa Verde
3 $15 Charred Octopus Bowl Mar y Sol
+ 397 more rows
members.csv
100 rows
Menu Card · v2
3 variables
output.zip
100 PNGs · 4 MB
Rendering 100 / 100 COMPLETED
4 parallel workers · 18s elapsed Download ZIP →
In one paragraph

What is Zandovi?

Zandovi is a template-based image and PDF generation API with a full visual design editor. You design a template once on a canvas, bind the parts that change — text, images, QR codes, barcodes — to {{variables}}, then render personalized copies of it: one at a time by posting JSON to the REST API, or a few hundred at once as a batch job, fed by a CSV in the app or a rows array from your own code, that hands back a ZIP.

It is built for the jobs where one design has to become many files — event badges, certificates, gift cards, coupons, tickets, Open Graph images, localized social posts. Output is PNG, JPEG, WebP or print-ready PDF up to 4096×4096 pixels, from 200+ starter templates across 18 categories. There is a free plan and it includes the full API.

  • Not a prompt-to-image model

    Zandovi does not invent a new picture each time. You draw the design once; every render is that design with different data in it, pixel-identical everywhere else.

  • Not a headless browser

    No Chrome to keep alive, no HTML-to-PNG screenshotting. A Skia renderer draws the template server-side and streams the file back.

  • Not developer-only

    The same template is editable on a visual canvas. Designers and ops maintain it; engineers only ever send the JSON.

See it run

One design, forty listings

A listing flyer gets four text variables, a photo variable and a QR code. The CSV template comes back with exactly those columns. Forty rows go up, forty finished flyers come down as one ZIP, and the same template then renders from a single HTTP call.

Nothing is requested from YouTube until you press play. Watch on YouTube instead.

The problem

Personalized designs shouldn’t be manual work.

If any of these sound familiar, Zandovi was built for you — same design, same data, none of the repetition.

The copy-paste afternoon

“Change the name, export, repeat — 300 times.”

With Zandovi: Bind the fields that change to {{variables}} and let a CSV do the repeating. One batch job returns all 300 finished designs as a ZIP — minutes, not an afternoon.

The designer bottleneck

“Every asset waits on the one person with the source file.”

With Zandovi: Brand-locked templates let teammates change the data, never the design. Names, prices and photos rotate — layout, fonts and logo stay untouched.

The DIY rendering stack

“We run a headless browser just to make PNGs.”

With Zandovi: One POST with JSON returns a rendered PNG, JPEG, WebP or print-ready PDF up to 4K. No browser fleet, no SDK, nothing to maintain.

Image generation API

One POST. One image — or four hundred.

A template-based image generation API. No headless browser, no SDK to install — a Skia-based, server-side renderer returns PNG, JPEG, WebP, or print-ready PDF up to 4096 × 4096 px at 300 DPI.

  • Per-organization API keys with usage tracking
  • Batch jobs — POST one template plus up to 400 rows, then poll or be called back, and download a ZIP
  • Signed completion callbacks — give a job a callbackUrl and it posts you a summary when it ends, HMAC-signed and retried, with the delivery status readable on the job
  • Idempotency keys on batch submits — a retried request is never billed or rendered twice, and cancelling refunds every unrendered row
  • Schema introspection — describe variables before sending
  • Sub-second renders at 1080p with Redis caching
  • Bytes by default, or a hosted URL on request — the link comes back with its exact expiry, and a revoke endpoint on every plan
Read the API docs
POST /api/v1/templates/:id/generate
curl -X POST '\
  /api/v1/templates/019e4953-7ffb/generate' \
  -H 'Content-Type: application/json' \
  -H 'X-Api-Key: YOUR_API_KEY' \
  -d '{
    "variables": {
      "price_var": "$18"
    },
    "format": "png",
    "options": {
      "outputDpi": 96,
      "quality": 90
    }
  }' \
  --output generated-image.png

# → 200 OK · image/png · streamed to disk

Real output, not mockups. Four starter templates rendered from JSON with {{variables}} — exactly what the generate endpoint returns.

API-rendered gift card with amount, recipient name and gift code filled from variables
Gift card — {{amount}}, {{gift_code}}
API-rendered Open Graph blog image with title, author and read time filled from variables
OG image — {{og_title}}, {{author_name}}
API-rendered certificate of achievement with recipient name and course filled from variables
Certificate — {{recipient_name}}, {{course_name}}
API-rendered concert ticket with attendee name, seat and scannable QR code filled from variables
Ticket — {{attendee_name}}, {{ticket_code}}
Built for…

Whatever you're making — at any scale.

Four audiences, one pattern: a repetitive design job goes in, finished output comes out. Pick yours.

Ship a personalized graphic for every customer.

Hand-assembling birthday emails, anniversary coupons and win-back posts stops scaling after a dozen customers. With a brand-locked template and a CSV, every customer gets an on-brand graphic — and nobody opens a design tool.

  • Brand-locked templates your team can fill in but not break.
  • Bulk-generate up to 400 personalized social posts from a CSV.
  • Schedule auto-renders triggered by your CRM or marketing tool.
Try it free
Batch · 3 of 400 rows
# price_var name_var rest_var
1 $18 Smoked Salmon Bowl The Ember Table
2 $24 Truffle Risotto Bowl Casa Verde
3 $15 Charred Octopus Bowl Mar y Sol
+ 397 more rows

A REST API for dynamic images.

Skip building a headless-browser rendering stack. Per-org API keys, stable schemas, up to 4K PNG/JPEG/WebP/PDF — one POST per image.

  • POST a JSON payload, get back an image — no cold starts, always fast.
  • Or ask for a hosted URL instead of bytes — no bucket or CDN to stand up.
  • Always-on API with consistent low latency, zero serverless spin-up time.
  • Fire parallel requests simultaneously and render multiple images at once.
Try it free
POST /api/v1/templates/:id/generate
curl -X POST '\
  /api/v1/templates/019e4953-7ffb/generate' \
  -H 'Content-Type: application/json' \
  -H 'X-Api-Key: YOUR_API_KEY' \
  -d '{
    "variables": {
      "price_var": "$18"
    },
    "format": "png",
    "options": {
      "outputDpi": 96,
      "quality": 90
    }
  }' \
  --output generated-image.png

# → 200 OK · image/png · streamed to disk

Menu cards, coupons, gift cards — done.

A price change shouldn’t mean redoing the whole menu. Design each card once — then swap photos, prices and names without ever touching the design again.

  • Update one price in your CSV → every menu card reprinted.
  • Print-ready PDF export at 300 DPI for the local print shop.
  • 200+ starter templates: gift cards, coupons, business cards.
Try it free

400 badges. 4 minutes.

Badge day before the conference used to be an all-hands afternoon. Upload the attendee list — badges, certificates and ticket QRs come back generated, downloaded, printed.

  • QR codes bound to attendee IDs render with the badge.
  • Certificate PDFs with embedded fonts, print-shop ready.
  • Bulk download as ZIP, or push direct to your fulfilment API.
Try it free
members.csv
100 rows
Menu Card · v2
3 variables
output.zip
100 PNGs · 4 MB
Rendering 100 / 100 COMPLETED
4 parallel workers · 18s elapsed Download ZIP →
Capabilities

Everything you need to design at scale.

From the canvas to the CSV to the API — Zandovi covers the whole pipeline from one design to a million personalized outputs.

Visual canvas editor

Shapes, text, images, lines, arrows, stars, polygons, freehand draw, QR codes and barcodes — with a full layers panel, smart guides, and 50-step undo.

Learn more

{{variable}} placeholders

Bind any text, image, QR, or barcode to a typed variable. Text, number, date, email, URL — with validation rules and default values.

Learn more

Batch: rows in, ZIP out

Drop a spreadsheet in the app or POST a rows array to the API — get back a zipped folder of personalized designs. 25 rows per job on Free, up to 400 on Business.

Learn more

Public REST API

Per-org API keys. Generate single images with one POST, or submit a batch job to /api/v1/batch-jobs — idempotent retries, cancellation refunds, and a signed callback when the job finishes so you never sit on a polling loop.

Learn more

200+ templates

Gift cards, coupons, certificates, business cards, tickets, social posts, birthday cards. Edit any one, save your own, share with your team.

Learn more

Multi-tenant teams

Personal and team organizations. Owner / admin / member roles. Email invitations. Shared projects and templates, with billing scoped per organization.

Learn more

QR codes & barcodes

CODE128, EAN-13, UPC, CODE39, ITF-14. QR with error-correction, logo overlay, custom colors. Bind each to a variable for dynamic codes.

Learn more

Shareable public links

Publish any render to a public URL in one click, or ask the API for a link instead of bytes. No bucket, no CDN to configure. Revoke any time; links expire on their own.

Learn more
app.zandovi.com / editor / Starter Coupon
The Zandovi editor with a coupon template open: layers panel on the left, canvas with a 25% OFF coupon in the middle, and the typography panel showing a text element bound to the discount variable
Visual canvas editor

A real design canvas,
not a template filler.

Shapes, text, images, QR codes, barcodes — every tool you expect from a modern design environment, right in your browser. With variables and batch generation built in.

  • Full layers panel — visibility, lock, drag-to-reorder, 50-step undo.
  • 47 fonts, smart alignment guides, snap-to-grid, freehand draw, QR codes & barcodes.
  • Bind any element — text, image, QR or barcode — to a {{variable}} for batch generation.
Built-in asset library

Millions of photos,
zero tab-switching.

Search Unsplash, Pexels and Pixabay directly inside the editor. Find the right image, click once, done — no account needed, no separate app.

  • Search millions of photos across three top libraries — all from one panel inside the editor.
  • One-click insert straight onto your canvas. No downloading, no re-uploading.
  • Bind any photo to a {{variable}} for per-row image swaps in batch jobs.
Sources:
Unsplash
·
Pexels
·
Pixabay
Learn about images
zandovi.com / editor · stock images
Stock Images
1,844
salmon
Batch generation

From one template to thousands — in four steps.

Personalized event badges, certificates, gift cards or menu boards. Same workflow every time — drop a CSV in the app, or submit the rows through the API.

Read the batch generation guide Batch from the API
  1. Design once

    Build your template in the editor. Drop in shapes, text, an image, a QR.

  2. Add variables

    Wrap any text or image binding in {{double_braces}}. Set defaults and validation.

  3. Add your data

    Upload a CSV in the app — or POST the same rows to /api/v1/batch-jobs from your backend. One row per output.

  4. Get a ZIP

    PNG, JPEG or WebP at up to 4K, scale up to 4×, parallel-rendered in seconds. Poll the job, or hand it a callbackUrl and be told when it lands.

members.csv
100 rows
Menu Card · v2
3 variables
output.zip
100 PNGs · 4 MB
Rendering 100 / 100 COMPLETED
4 parallel workers · 18s elapsed Download ZIP →
Animation cycling through six real gift-card renders from the same template — recipient name, amount, message and gift code change on every frame
Six rows, one template — every frame is a real render. Only {{recipient_name}}, {{amount}}, {{gift_message}} and {{gift_code}} change.
Templates

200+ templates. 18 categories. One click away.

Gift cards, coupons, tickets, certificates, social posts, birthday cards, business cards. Open any one and edit, or save your own to your workspace.

-50% Flash Sale
20% OFF Coupon
$100 Gift card
HELLO Event badge
🎂 Birthday
70% Black Friday
Certificate
#1284 Ticket
Compare

The same money buys 3–10× more renders.

We meter automation, not creativity — on every paid plan, manual editor exports are unlimited and never touch your quota. Here is how the entry plans of the category leaders stack up.

Product Entry paid plan What you get Free tier
Zandovi $29/mo 5,000 renders + unlimited templates, 4K output, batch from CSV or API, unlimited manual editor exports 100 renders/mo — one pool (manual + API)
Bannerbear Full comparison → $49/mo 1,000 credits 30-image trial only
APITemplate.io Full comparison → $35/mo 1,500 renders — $29/mo if billed annually 50/mo
Placid Full comparison → $19/mo 500 credits Trial
Templated $29/mo 1,000 credits One-time 50-credit trial

Want the plan-by-plan detail? We keep a full page for each: Zandovi vs Bannerbear, vs APITemplate.io and vs Placid — each with a $-per-1,000-renders column and a section on when they beat us. Competitor plans and prices as published on their pricing pages, verified 2026-07-04. Plans change — always check the vendor's own page for current numbers. Scope: this compares the entry paid plans of the editor-first category leaders. Budget-tier API-only services sell higher raw volume at this price; what they don't have is the visual editor, 200+ templates, QR/barcode variables, print-ready PDF at 1 render, and batch jobs driven from a CSV or the API.

Plans

Pricing that scales with you.

Start free. Upgrade when you need more renders, seats, larger prints, or bigger batch jobs. Prices exclude VAT / sales tax.

Free

For trying Zandovi.

$0

Free forever

  • 100 renders / mo — one shared pool
  • 1 seat
  • 1 project · 5 templates
  • Prints to A5 / postcards (300 DPI)
  • 25 batch rows per job
  • Full API + all formats (print-ready PDF)
  • 7-day public share links
  • Community support
Start free

Studio

For a small team or studio.

$49 /mo

billed monthly

  • 12,000 renders / mo
  • Unlimited web renders*
  • 3 seats — roles & shared workspaces
  • Unlimited projects & templates
  • Prints to A3 / large-format (8K)
  • 200 batch rows per job
  • 60-day share links
  • Everything in Personal
  • Email support
Get started

Team

For collaborating teams.

$79 /mo

billed monthly

  • 25,000 renders / mo
  • Unlimited web renders*
  • 5 seats — roles & shared workspaces
  • Prints to A3 / large-format (8K)
  • 300 batch rows per job
  • 90-day share links
  • Everything in Studio
  • Priority email support
Get started

Business

For high-volume operations.

$199 /mo

billed monthly

  • 100,000 renders / mo
  • Unlimited web renders*
  • 10 seats — roles & shared workspaces
  • Prints to A3 / large-format (8K)
  • 400 batch rows per job
  • 180-day share links
  • Everything in Team
  • Priority email support
Get started

* Unlimited web renders — on every paid plan, exporting by hand from the editor is unlimited and never counts against your monthly render quota. We only meter automation: API calls and batch rows. Fair-use rate limits apply.

All prices exclude VAT / sales tax, which is calculated and added at checkout based on your location. 1 render = 1 image or 1 PDF — no format multipliers. Failed renders are automatically refunded to your quota.

Questions

Frequently asked.

Everything you'd want to know before trying Zandovi.

How does batch generation work?
Design a template with variables using {{name}} syntax, then submit your data — upload a CSV in the app, or POST a rows array to /api/v1/batch-jobs from your backend. Zandovi generates a personalized export per row and hands back a ZIP. Poll the job, or give it a callbackUrl and be told when it finishes.
What export formats are supported?
PNG, JPEG, WebP and PDF at up to 4096×4096 px with full quality control. Every format takes a 1–4× scale multiplier for print-ready output.
Is there an API?
Yes. Public API keys let you generate designs server-side from any language — one POST for a single image, or a batch job for a whole set. Perfect for sending personalized email graphics, order confirmations, or dynamic social images.
Can I get a URL instead of a file?
Yes. Click Share on any render in the editor, or add delivery: "link" to an API call, and you get a public URL for the image — no bucket, no CDN, no cleanup job to build. Ideal for <img> tags in transactional email and for automation tools that handle JSON more comfortably than binary.
How long do share links last?
Every link carries an expiry set by your plan — seven days on Free, thirty on Personal, up to a hundred and eighty on Business. When it lapses the image is deleted and the URL stops resolving. You can revoke a link earlier at any time, and anyone holding the URL can open it until you do — treat them as unguessable, not private.
How do teams and organizations work?
Invite teammates to a shared organization. Control member roles, share templates and projects across the team, and scope billing per org. Each user can belong to multiple organizations.
What about QR codes and barcodes?
Both are first-class citizens. Drop a QR or barcode element onto any template, bind it to a variable, and every generated design gets its own scannable code.
Learn more

Everything about Zandovi, in one place.

A categorized reference covering features, use cases, the API, billing and teams. Expand a category to read the detail.

Browse the full documentation
Getting started The basics of Zandovi.
5 items
What is Zandovi?
Zandovi is a web-based design platform that combines a full visual editor with variable placeholders ({{name}} syntax) and batch generation. You design a template once, then generate hundreds or thousands of personalized images — from a spreadsheet in the app, or from your own backend over the REST API.
Who is Zandovi for?
Marketing and ops teams making personalized graphics at scale, developers integrating dynamic images into their products, small businesses creating menu cards, gift cards and coupons, and event organizers producing badges, certificates and tickets.
How do I sign up?
Create a free account at https://app.zandovi.com. You can sign up with email, Google OAuth, or a WebAuthn/FIDO2 passkey. No credit card is required.
Is there a free plan?
Yes. The Free plan includes 100 renders per month, one project with five templates, 25 batch rows per job, the full API, and every export format including print-ready PDF at 300 DPI up to A5. No credit card is required.
What does Zandovi cost?
Free is $0 forever. Paid plans start at $29/mo for Personal (5,000 renders), then Studio $49/mo, Team $79/mo and Business $199/mo. Annual billing is 2 months free — pay for 10 months, get 12. Prices exclude VAT / sales tax.
Visual editor Drawing tools, canvas controls, and the editor UX.
7 items
What drawing tools does the editor have?
Rectangle, circle, ellipse, line, arrow, star, polygon (variable sides), triangle, curved rectangle, text, image, hand/pan, freehand draw, QR code and barcode. Each tool has its own configuration panel.
What canvas sizes are supported?
Any custom width × height in pixels. Built-in presets cover business cards (US and EU), gift cards (regular and large), coupons, tickets, social-media formats and A-series paper sizes.
Can I zoom in and out on the canvas?
Yes — zoom from 10% up to 400% with pan/scroll navigation. There is also a grid overlay with configurable snap-to-grid spacing, ruler display on the top and left edges, and smart vertical/horizontal alignment guides shown while dragging.
How many undo steps does Zandovi support?
The editor keeps 50 steps of undo/redo history for every canvas operation.
Can I change the canvas background?
Yes. Backgrounds can be a solid color, a linear gradient, a radial gradient, or an image fill. The gradient editor supports multiple color stops and configurable start/end points.
Does Zandovi support dark mode?
Yes, the editor and the marketing site both support a dark theme. Your preference is stored locally.
Are there keyboard shortcuts?
Every tool has a single-key activator: V (select), R (rect), O (circle), E (ellipse), L (line), A (arrow), S (star), P (polygon), G (group), U (curved rect), T (text), I (image), H (hand), D (draw), Q (QR), B (barcode). Plus Cmd/Ctrl+Z for undo, Cmd/Ctrl+Shift+Z for redo, Cmd/Ctrl+A to select all, Cmd/Ctrl+D to duplicate, Cmd/Ctrl+C/V for copy/paste, and Delete/Backspace to remove the selection.
Text & fonts Typography controls and font handling.
3 items
How many fonts are included?
Zandovi ships with 47 Google Fonts preloaded at service startup for consistent rendering — 10 sans-serif, 9 serif, 10 display, 15 handwriting and 3 monospace families.
What text properties can I control?
Font family, size, weight, italic style, color, decoration (underline, line-through), horizontal and vertical alignment, line height, letter spacing, word wrap mode (word, character, none), overflow handling (clip, ellipsis, visible) with a custom ellipsis character, and per-side or uniform padding.
Does text auto-fit to its container?
Yes. Auto-fit text scales to its container with configurable minimum and maximum font-size bounds.
Variables & placeholders Binding data to elements with {{variables}}.
5 items
How do variables work?
Wrap any text in {{double_braces}} to make it dynamic. The placeholder is replaced with your data at render time — either from a CSV row, an API request body, or a default value you set in the editor.
What variable types are supported?
Text, number, date, email, URL and phone. Each can have a human-readable label, a description, a required/optional flag, a default value, and validation rules (min/max length, regex pattern, allowed options).
Can I bind a variable to an image?
Yes. Image placeholder elements get replaced with a different image at render time, so you can rotate product photos, member portraits or screenshots per row.
Can QR codes and barcodes be variable?
Yes — both bind to a variable, so every generated design carries its own scannable code. Useful for ticket QRs, attendee badges and personalised links.
Can I see what variables a template uses without opening it?
Yes. Each template exposes a JSON schema describing its variables, types and validation rules. There is also a project-level merged schema that combines variables across every template in a project.
Images Uploading, editing and reusing images.
5 items
How do I add an image to a template?
Drag-and-drop an image onto the canvas, or search built-in stock libraries (Unsplash, Pexels and Pixabay) without leaving the editor.
Can I edit an image after I drop it in?
Yes. Crop with X/Y/width/height parameters, apply filters (brightness, contrast, saturation, blur, grayscale, sepia), round the corners, and choose an object-fit mode (contain, cover, fill, none).
What image formats are accepted?
Common web formats. Per-template image validation rules can restrict allowed formats, min/max dimensions, aspect ratio and maximum file size.
Do uploaded images get tracked?
Yes. Image usage tracking shows which templates reference each uploaded image, and deletions are blocked (409 Conflict) if the image is still in use.
Can I reference an image across templates?
Yes. Zandovi uses a portable zandovi:// URL scheme so the same image can be referenced from multiple templates without duplicating the file.
Batch generation Going from one template to thousands of outputs.
5 items
How does batch generation work?
Design a template with variables, then give Zandovi one row per output and one column per variable — as a CSV uploaded in the app, or as a rows array posted to the batch API. Zandovi renders a personalized export per row and hands the result back as a ZIP.
Can I run a batch from code instead of the app?
Yes. POST /api/v1/batch-jobs takes one template plus a rows array, validates every row before anything is billed, and returns a job ID. Poll GET /api/v1/batch-jobs/{jobId}, or supply a callbackUrl and be told when the job reaches a terminal state. Same renderer as the CSV tab, no spreadsheet in the middle.
How many rows can I render in one batch?
25 rows per job on the Free plan, rising by tier up to 400 rows per job on Business. One template per job, and two jobs can be active at a time.
What happens to a row that fails?
The job carries on and the failure is recorded against that row. GET /api/v1/batch-jobs/{jobId}/items lists every submitted row in order with the file it produced and the error if it has one, so a failure traces back to the data that caused it. Failed renders are refunded.
How fast is the batch renderer?
It depends on the number of outputs and the complexity of the template. Moderately complex templates without external images to download typically render in about 50 seconds.
Output & rendering How the rendered images come out.
4 items
What export formats are supported?
PNG (lossless), JPEG (lossy), WebP, and print-ready PDF. Lossy formats accept a quality parameter from 1 to 100.
What is the maximum output resolution?
Up to 4096 × 4096 pixels per image, with a scale multiplier of 1–4×. The API's outputDpi option accepts 96, 150, 300 dpi; the editor's own export dialog covers a wider 72–600 dpi band.
How is rendering done server-side?
The renderer is Skia-based via @napi-rs/canvas, so no headless browser is involved. It runs the same drawing primitives the editor uses — shapes, text, images, QR codes, barcodes, gradients and groups.
Can I get a print-ready PDF?
Yes. PDF can be rendered up to 300 DPI with the defined physical size.
Developer API Generating images programmatically.
6 items
Is there a public API?
Yes. Per-organization API keys authenticate requests via the X-Api-Key header. The API exposes endpoints to generate a single image, submit and manage batch jobs, and introspect the variable schema of a template or project.
How do I call the generate endpoint?
POST to /api/v1/templates/{id}/generate with a JSON body containing variables and options (format, outputDpi, quality). The response streams the rendered image binary, or a base64-encoded JSON payload if you prefer.
Can I be notified when a batch job finishes?
Yes. Add a callbackUrl to the submission and Zandovi POSTs a completion summary — job ID, terminal status, final counters — to that https URL when the job ends. Every delivery is signed with an X-Zandovi-Signature HMAC using a per-organization secret that is separate from your API key, delivery is at-least-once with a stable deliveryId to deduplicate on, and whether it landed is readable on the job itself.
How long are batch results kept?
A finished job's ZIP is retained for 30 days, and each download link is valid for an hour — request a fresh one whenever you need it. After 30 days the archive is deleted and the download reports itself as expired, while the job, its counters and its per-row outcomes stay readable.
Is the API rate-limited?
Yes. Limits are enforced per-organization using Redis-backed distributed rate limiting. Batch submissions and status reads sit in separate tiers, so polling a job never competes with submitting one. Paid plans have higher quotas.
Where can I find SDK code samples?
The API is a plain REST endpoint — you can call it with curl, fetch, requests, or any HTTP client. cURL examples are in the developer section of this page.
Templates & projects Saving, organising and sharing your work.
3 items
How many templates ship with Zandovi?
200+ templates across 18 categories: gift cards, coupons, certificates, business cards, tickets, social-media posts, birthday cards and more. Edit any of them, save your own variants, and share them with your team.
Can I have multiple templates in one project?
Yes. Projects group related templates with tabbed navigation, thumbnail previews, drag-to-reorder, and per-template visibility (private or shared).
Can I copy a template to another project?
Yes. Templates can be copied between projects, and entire projects can be cloned with all of their templates duplicated.
QR codes & barcodes Scannable codes baked into your designs.
3 items
What QR code options are supported?
QR codes have configurable error-correction levels, custom colours, an optional logo overlay, and configurable margin. Bind them to a variable for dynamic content.
Which barcode formats are supported?
CODE128, EAN-13, UPC, CODE39 and ITF-14. Each can be bound to a variable for dynamic values.
Can codes be different per row in a batch?
Yes — that is the main use case. Bind the code to a variable and every rendered output gets its own scannable code derived from the CSV row.
Teams & organizations Working with teammates and managing access.
5 items
How do teams work?
On sign-up, each user gets a personal organization automatically. You can create additional team organizations, invite teammates by email, and switch between organizations from the workspace picker.
What member roles are available?
OWNER (full control + billing), ADMIN (manage members + templates), and MEMBER (use templates, contribute designs).
Can I transfer ownership of an organization?
Yes. Ownership can be transferred to another OWNER or ADMIN, and members can be removed at any time.
Is single sign-on (SSO) supported?
SSO is planned for the Enterprise plan.
How are invitations handled?
Invitations are emailed with a token that has a configurable expiry. Pending invitations can be listed, resent or revoked.
Use cases Things real teams are using Zandovi for.
12 items
Personalized social-media graphics for marketing campaigns
Marketing teams upload a CSV of customer names, segment tags and offer codes, bind them to a brand-locked template, and generate up to 400 personalized social posts in one job. Each post is on-brand because the template is locked — only the variable values change. Outputs feed straight into the scheduling tool of choice.
Bulk event badges with attendee QR codes
Event organisers upload an attendee CSV with name, company, ticket type and a unique attendee ID. The template binds the name and company to text variables and the QR code to the attendee ID. Zandovi renders up to 400 badges in a single ZIP, ready for the print shop.
Course completion certificates at scale
Education platforms generate course-completion certificates by feeding student name, course title, completion date and a verification URL into a certificate template. Output is a print-ready PDF per student at 300 DPI with embedded fonts.
Gift cards and coupons for retail
Retail brands design one gift card template, then issue up to 400 unique cards with personalized recipient names, gift amounts and unique barcode codes — generated from a CSV and emailed to recipients in a single batch.
Dynamic menu cards for restaurants
Restaurants build a single menu-card template (dish name, ingredients, price, restaurant name), then re-generate the whole menu whenever prices change. One CSV update reprints the entire menu without touching the design.
Personalized email graphics from a backend
Developers call the public API from their backend to render a personalized hero image for every transactional email — including the recipient name, order number, and a QR code linking to the order receipt. Each render is under a second at 1080p.
Localized social posts for multiple regions
Global marketing teams maintain one template per format, and render localized variants — translated copy, regional currency, locale-specific imagery — by switching out variables per market. One source design, dozens of localized outputs.
Conference tickets with scannable barcodes
Conferences generate uniquely numbered tickets — each with a CODE128 barcode tied to a ticket ID — and email them as PDF attachments straight from their booking system via the Zandovi API.
Real-estate listing flyers
Real-estate agencies bind listing photo, price, address, agent name and a QR code linking to the full listing into a flyer template. New listings produce a new printable flyer in seconds with no manual design work.
Open Graph images for blog posts
Blogs generate per-post OG images automatically: the post title, author and tag are bound to variables, and the build pipeline calls the API to render a unique 1200×630 image for every article URL.
Membership cards for clubs and gyms
Clubs design a membership card with member name, photo, tier and a QR code tied to the member ID. A nightly batch keeps every card collection up to date.
Birthday and anniversary cards for CRM workflows
CRM platforms call the API on a customer's birthday or anniversary to render a personalized greeting image, attach it to the outgoing email, and ship it — fully automated.
Ready to design

Design once. Generate thousands.

The next 400 badges, 300 gift cards or 200 certificates are one CSV away. Start with a template, make it yours — and never assemble a design by hand again.

Free forever plan · No credit card required