Design It Once. Pull the HTML from Your Own Code.
The email is built in the editor, where designers can see what they’re doing. The API is how the finished thing reaches everything else you run — a CMS, a CRM, a build script, a nightly job. One header, one call, production HTML.
Included on every plan, the free Start plan included. See plans →
One bearer token, no OAuth dance
List every project and folder
Export as HTML or as a ZIP
Fill in variables at export time
Hosted images, or everything in the ZIP
Read-only, so nothing can overwrite a design
From a key to production HTML in three steps
There is no SDK to install and no sandbox to apply for. If your language can send an HTTP request, it can talk to Postcards.
-
1
Create a key
Workspace Settings, API tab, give it a name you’ll recognize in six months. The key is shown once and belongs to the workspace, not to you.
-
2
Find the project
List your projects, or walk the folders you already organize them into. Every project answers to a numeric id and to a short hex one.
-
3
Export it
Post to the export endpoint and take back the markup — inline in a JSON body, raw, or as a ZIP with the images and fonts alongside.
The whole thing is one header and a URL.
Everything is served from one base URL and authorized with one bearer token. Nothing to negotiate, nothing to refresh.
curl https://api-postcards.designmodo.com/api/v1/projects \
-H "Authorization: Bearer YOUR_KEY"
-
Read what you already have
Six endpoints cover the whole surface: projects, folders, usage, and the export itself. Lists come back fifty at a time, up to a hundred if you ask for more.
endpointsGET /projects
GET /projects/{id}
GET /folders
GET /folders/{id}
GET /usage
POST /projects/{id}/export -
Ask for the shape you need
The export body decides what comes back: HTML pointing at hosted assets, or a ZIP holding the images and fonts so you can host them yourself.
export body{
"imageHosting": true,
"minify": true,
"format": "html"
}
One design, filled in differently every time you ask
Leave placeholders in the design and hand their values to the export call. The same project becomes a hundred different emails without a hundred copies.
"variables": {
"{{first_name}}": "Alex",
"{{company}}": "Acme"
}
-
Partial by design
Pass the values you have. Any placeholder you don’t mention is left exactly as it is, so your own sending platform can fill it in afterwards.
-
Strip the whitespace
Ask for minified output and the markup comes back tight — useful when a platform counts bytes or clips a message past a certain size.
-
Host the images or don’t
Turn image hosting on and the markup points at hosted assets — on the paid plans, with CDN delivery on Pro. Turn it off and you get a ZIP to put wherever you like.
For the part of email production nobody enjoys doing
Designing the email is the interesting half. Getting the approved version into the system that sends it is the half that eats an afternoon.
-
Feed your sending platform
Pull the HTML straight into the tool that sends it. The one-click integrations cover the common platforms; the API covers the rest of them.
-
Wire up transactional mail
Receipts and password resets live in your application, not in a marketing tool. Keep the transactional templates designed here and fetch them at build.
-
Hand clients a pipeline
An agency shipping for a dozen brands can script the export instead of repeating it by hand for every campaign and every client.
-
Publish from your CMS
Editors publish a post; a job exports the matching newsletter with that week’s values already dropped into the placeholders.
-
Localize at export time
One approved layout, one export per language, values supplied per call. The brand stays fixed while the copy changes.
-
Watch the quota
The usage endpoint reports the plan, the billing period, and how many exports are gone — enough to put on a dashboard or alert on.
Deliberately narrow, so a script can’t ruin your afternoon
Projects and folders are read-only. Creating and editing stay in the editor, which means no integration you write can quietly rewrite a design somebody spent a day on.
-
Rate limits you can plan for
Sixty reads a minute per key and ten exports a minute. Go over and the response tells you how long to wait before trying again.
-
Errors that say what happened
A bad key, a plan that doesn’t cover an option, a quota that ran out — each comes back as its own named error rather than one generic failure.
-
Keys belong to the workspace
A key keeps working when the person who made it moves on, so an integration doesn’t break the week somebody leaves. Review them periodically.
-
Revoked means revoked
Delete a key and the next call made with it is refused. Treat one like a password: out of screenshots, out of version control.
Don’t want to write the call at all?
The same key works with our MCP server. Point Claude, Cursor, or ChatGPT at it and ask for the export in a sentence instead of code.
API Questions
-
What can the Postcards API do?
It gives you read access to your projects and folders, reports your export usage, and renders any project to production HTML or a ZIP. Creating and editing projects stays in the editor — the API is for getting finished work out.
-
Which plans include API access?
Every plan, including the free Start plan. What changes between plans is your monthly export allowance, and CDN-hosted assets, which are a Pro feature.
-
How do I get an API key?
Open Workspace Settings, go to the API tab, and create a key with a descriptive name. The raw key is shown once, so copy it then — after that you only ever see a masked preview.
-
How do I authenticate a request?
Send your key as a bearer token in the Authorization header. There is no OAuth flow, no token to refresh, and no SDK you have to install first.
-
Can I inject my own content when exporting?
Yes. Leave placeholders in the design and pass their values with the export request. Unmatched placeholders are left untouched, so your sending platform can still fill in the rest.
-
Do exports through the API count against my quota?
They do — an export is an export whether it starts in the editor or in your code. The usage endpoint reports your plan, your billing period, and how much of the allowance is gone.
-
What are the rate limits?
Sixty read requests a minute per key and ten exports a minute. If you exceed either, the response tells you how long to wait before retrying.
-
Can the API delete or overwrite my projects?
No. Projects and folders are read-only over the API, and export only reads. Nothing you script can change or remove a design.
The design is finished. Go and fetch it.
Make a key, send one request, and the last manual step in your email workflow disappears.
Included on every plan, the free Start plan included. See plans →
Designmodo Inc. 169 Madison Ave, #79627, New York, NY 10016, United States
Copyright © 2010-2026