day3 API
Email from your code.
One key, JSON in, JSON out.
Send transactional email, sync your users into audiences, and drive campaigns and automations over HTTPS. Billed by emails sent, never by list size.
Your first request
curl https://go.day3.app/api/v1/audiences \
-H "Authorization: Bearer $DAY3_API_KEY"A 200 with a data array means you’re set up. No key yet? The
quickstart gets you from nothing to a delivered email in three
steps.
Start here
Send transactional email→Resets, receipts, magic links. One POST, Resend-compatible.Sync your users→Upsert by email, batch 1,000 per call, attributes that register themselves.Migrate a list→Move off Resend, Mailchimp or Kit without re-mailing anyone who left.Webhooks→Signed events for deliveries, bounces and complaints. No polling.Campaigns and automations→Draft, preview and send newsletters. Enroll contacts into flows.MCP server→Let Claude Code or Cursor draft and test a campaign for you.
Read Conventions once. Pagination, idempotency, ids and rate limits work the same on every endpoint and aren’t repeated per page.
Objects
| Object | Id prefix | What it is |
|---|---|---|
eml_ | One transactional email. | |
| Audience | aud_ | A list of contacts. Everything else lives inside one. |
| Contact | sub_ | A subscriber. Unique by email within an audience. |
| Field | fld_ | A registered custom attribute key. |
| Segment | seg_ | A saved filter, evaluated live. |
| Topic | top_ | A category a contact can opt out of on its own. |
| Campaign | cmp_ | One email to a whole audience. |
| Automation | aut_ | A published flow a contact runs through. |
| Suppression | sup_ | An account-wide “never email this address”. |
Set up in the app, not the API
Sending domains, senders and OAuth clients live in the app at go.day3.app . Automations are built on the app’s canvas and only enrolled into from code. Verify a sending domain under Sending before you mail real subscribers.
Last updated on