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.
| Method | Endpoint | Description |
|---|
POST | /emails | Send a single email (schedule with scheduled_at) |
POST | /emails/batch | Send up to 100 emails |
GET | /emails | List emails (filter by status, from, to, tag) |
GET | /emails/:id | Get email + event history |
PATCH | /emails/:id | Reschedule a scheduled email |
POST | /emails/:id/cancel | Cancel a scheduled email |
| Method | Endpoint | Description |
|---|
GET | /suppressions | List suppressed addresses |
POST | /suppressions | Suppress an address |
POST | /suppressions/batch | Import up to 1,000 addresses |
GET | /suppressions/export | Download the whole list as CSV |
DELETE | /suppressions/:id | Un-suppress by entry id or address |
| Method | Endpoint | Description |
|---|
POST | /templates | Create a template |
GET | /templates | List templates |
GET | /templates/:id | Get a template |
GET | /templates/:id/preview | Render a preview with variables |
PATCH | /templates/:id | Update a template |
DELETE | /templates/:id | Delete a template |
| Method | Endpoint | Description |
|---|
POST | /broadcasts | Create a broadcast (draft) |
GET | /broadcasts | List broadcasts |
GET | /broadcasts/:id | Get broadcast |
PATCH | /broadcasts/:id | Update draft / schedule broadcast |
POST | /broadcasts/:id/send | Send, schedule, or resume broadcast |
POST | /broadcasts/:id/test | Send a test copy to your own domains |
POST | /broadcasts/:id/cancel | Cancel scheduled or in-flight broadcast |
DELETE | /broadcasts/:id | Delete a draft or cancelled broadcast |
Sending to an audience with /send requires a paid plan; /test works on every plan.
See Broadcasts.
| Method | Endpoint | Description |
|---|
POST | /audiences | Create an audience |
GET | /audiences | List audiences |
DELETE | /audiences/:id | Delete an audience |
POST | /audiences/:id/contacts | Add / upsert a contact |
POST | /audiences/:id/contacts/batch | Batch upsert up to 1,000 contacts |
POST | /audiences/:id/contacts/batch-delete | Delete up to 1,000 contacts by id |
GET | /audiences/:id/contacts | List contacts |
GET | /audiences/:id/contacts/:contactId | Get a contact |
PATCH | /audiences/:id/contacts/:contactId | Update contact (name, subscription) |
DELETE | /audiences/:id/contacts/:contactId | Remove a contact |
| Method | Endpoint | Description |
|---|
POST | /domains | Register a domain |
GET | /domains | List domains |
GET | /domains/:id | Get domain details |
DELETE | /domains/:id | Delete domain |
POST | /domains/:id/verify | Re-check DKIM DNS now |
GET | /domains/:id/domain-connect | Can the DNS provider publish the records for you? |
| Method | Endpoint | Description |
|---|
POST | /api-keys | Create an API key |
GET | /api-keys | List API keys |
DELETE | /api-keys/:id | Revoke 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.
| Method | Endpoint | Description |
|---|
POST | /webhooks | Create a webhook |
GET | /webhooks | List webhooks |
GET | /webhooks/:id | Get webhook + recent deliveries |
PATCH | /webhooks/:id | Update a webhook |
DELETE | /webhooks/:id | Delete a webhook |
GET | /webhooks/:id/secret | Reveal the signing secret |
POST | /webhooks/:id/rotate-secret | Rotate the signing secret |
| Method | Endpoint | Description |
|---|
GET | /health | Liveness check — is the API serving? (no auth) |
GET | /health/ready | Readiness check — also proves Postgres and Valkey (no auth) |