eusend
Reference

API Reference

Every endpoint at a glance. All endpoints are prefixed with https://api.eusend.dev.

All endpoints are prefixed with https://api.eusend.dev. All authenticated endpoints require Authorization: Bearer <key>.

A machine-readable OpenAPI 3.1 description of everything on this page — request and response schemas, parameters, error codes, and a unique operationId per operation — is published at https://eusend.dev/openapi.json. Point a client generator or an LLM function-calling runtime at it rather than transcribing the tables below.

Emails

MethodEndpointDescription
POST/emailsSend a single email (schedule with scheduled_at)
POST/emails/batchSend up to 100 emails
GET/emailsList emails (filter by status, from, to, tag)
GET/emails/:idGet email + event history
PATCH/emails/:idReschedule a scheduled email
POST/emails/:id/cancelCancel a scheduled email

Suppressions

MethodEndpointDescription
GET/suppressionsList suppressed addresses
POST/suppressionsSuppress an address
POST/suppressions/batchImport up to 1,000 addresses
GET/suppressions/exportDownload the whole list as CSV
DELETE/suppressions/:idUn-suppress by entry id or address

Templates

MethodEndpointDescription
POST/templatesCreate a template
GET/templatesList templates
GET/templates/:idGet a template
GET/templates/:id/previewRender a preview with variables
PATCH/templates/:idUpdate a template
DELETE/templates/:idDelete a template

Broadcasts

MethodEndpointDescription
POST/broadcastsCreate a broadcast (draft)
GET/broadcastsList broadcasts
GET/broadcasts/:idGet broadcast
PATCH/broadcasts/:idUpdate draft / schedule broadcast
POST/broadcasts/:id/sendSend, schedule, or resume broadcast
POST/broadcasts/:id/testSend a test copy to your own domains
POST/broadcasts/:id/cancelCancel scheduled or in-flight broadcast
DELETE/broadcasts/:idDelete a draft or cancelled broadcast

Sending to an audience with /send requires a paid plan; /test works on every plan. See Broadcasts.

Audiences

MethodEndpointDescription
POST/audiencesCreate an audience
GET/audiencesList audiences
DELETE/audiences/:idDelete an audience
POST/audiences/:id/contactsAdd / upsert a contact
POST/audiences/:id/contacts/batchBatch upsert up to 1,000 contacts
POST/audiences/:id/contacts/batch-deleteDelete up to 1,000 contacts by id
GET/audiences/:id/contactsList contacts
GET/audiences/:id/contacts/:contactIdGet a contact
PATCH/audiences/:id/contacts/:contactIdUpdate contact (name, subscription)
DELETE/audiences/:id/contacts/:contactIdRemove a contact

Domains

MethodEndpointDescription
POST/domainsRegister a domain
GET/domainsList domains
GET/domains/:idGet domain details
DELETE/domains/:idDelete domain
POST/domains/:id/verifyRe-check DKIM DNS now
GET/domains/:id/domain-connectCan the DNS provider publish the records for you?

API Keys

MethodEndpointDescription
POST/api-keysCreate an API key
GET/api-keysList API keys
DELETE/api-keys/:idRevoke an API key

POST /api-keys accepts permission (full_access, the default, or sending_access) and, on a sending_access key only, domain_id to restrict it to one sending domain. See Authentication for what each permission reaches.

Webhooks

MethodEndpointDescription
POST/webhooksCreate a webhook
GET/webhooksList webhooks
GET/webhooks/:idGet webhook + recent deliveries
PATCH/webhooks/:idUpdate a webhook
DELETE/webhooks/:idDelete a webhook
GET/webhooks/:id/secretReveal the signing secret
POST/webhooks/:id/rotate-secretRotate the signing secret

System

MethodEndpointDescription
GET/healthLiveness check — is the API serving? (no auth)
GET/health/readyReadiness check — also proves Postgres and Valkey (no auth)