Postcards API

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.

list your projects

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.

    endpoints

    GET  /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

"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.

Read the API docs →

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

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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 →

Hey there 👋 Friends from designmodo are here to help!