Built for developers

Integrate email marketing into your application with our REST API. Full documentation, code examples and webhooks.

Token authentication

Secure Bearer token auth with scoped API keys per account.

JSON:API format

Consistent, predictable API responses following the JSON:API specification.

Real-time webhooks

Receive events for bounces, complaints, opens and clicks via configurable webhook endpoints.

Rate limiting

Fair rate limits per account with clear headers and retry-after information.

Get started quickly

Add a contact with a single API call.

terminal
curl -X POST https://euromailing.com/api/v1/contacts \
  -H "Authorization: Bearer eml_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "contact": {
      "email": "jan@voorbeeld.nl",
      "first_name": "Jan",
      "last_name": "De Vries"
    }
  }'
201 application/json
{
  "data": {
    "id": "a1b2c3d4-...",
    "type": "contact",
    "attributes": {
      "email": "jan@voorbeeld.nl",
      "first_name": "Jan",
      "last_name": "De Vries",
      "subscribed_at": "2026-03-23T10:30:00Z"
    }
  }
}

Point Claude Code at your mailbox

The inbound API was written for agents. A local Claude Code session reads your mail, writes a draft and leaves it waiting — the send button stays yours.

claude code
Authorization: Bearer eml_live_…

GET   /api/v1/messages?status=open&domain=voorbeeld.nl

PATCH /api/v1/messages/{id}  {"handled": true}

PATCH /api/v1/messages/{id}  {"draft": "<p>Dag Jan, dat kan zeker…</p>"}
1

Poll and claim

Filter by domain, address, status or time. Whoever claims a message keeps it, so two sessions never answer the same question.

2

Leave a draft

As one block of HTML, or as question-and-answer pairs that land under the paragraph each one responds to.

3

Never sends

The draft appears on the message, labelled with the key that wrote it. A person reads it, edits it and presses send.

Agents find the documentation themselves at /llms.txt — machine-readable, with scopes, error codes and examples.