Send a transactional or notification email as the organisation (scope: emails:send)
Accepted with 202 once the message is durably recorded; delivery is asynchronous. Honours `Idempotency-Key` (same key → same `id`). Rate limit 600/h per organisation. Suppressed recipients (bounces, complaints, org opt-outs) are reported per recipient and never handed to the MTA; if every `to` is suppressed the message is recorded with `status: suppressed`. `category: marketing` → 422 (use campaigns). `from` on an unverified domain → 422. A `from` on a verified domain that no sending identity may send as → 422 `sender_identity_missing` (nothing recorded). Sendable: the sending address of the domain (`<from_local_part>@<domain>`; re-run `/email-domains/{id}/verify` if its identity is missing), or a hosted mailbox of the organisation or one of its aliases with API sending enabled (Mail settings). Attachments over 2 MB decoded → 413. Webhooks: `email.sent`, `email.delivered`, `email.bounced`, `email.complained`, `email.suppressed`.
Accepted with 202 once the message is durably recorded; delivery is asynchronous. Honours Idempotency-Key (same key → same id). Rate limit 600/h per organisation. Suppressed recipients (bounces, complaints, org opt-outs) are reported per recipient and never handed to the MTA; if every to is suppressed the message is recorded with status: suppressed. category: marketing → 422 (use campaigns). from on an unverified domain → 422. A from on a verified domain that no sending identity may send as → 422 sender_identity_missing (nothing recorded). Sendable: the sending address of the domain (<from_local_part>@<domain>; re-run /email-domains/{id}/verify if its identity is missing), or a hosted mailbox of the organisation or one of its aliases with API sending enabled (Mail settings). Attachments over 2 MB decoded → 413. Webhooks: email.sent, email.delivered, email.bounced, email.complained, email.suppressed.
bearerAuthAuthorizationBearer <token>API key as Bearer token
Idempotency-Key?stringlength <= 255application/json- body
Transactional or notification email sent as the organisation. from must be on a VERIFIED sending domain (see /email-domains); omit it to use the default sender. category: marketing is refused (422) — use campaigns.
to*array<>1 <= items <= 50cc?array<>items <= 50bcc?array<>items <= 50subject*stringlength <= 998html?stringAt least one of html / text is required.
text?stringfrom?reply_to?headers?Allow-listed: X-Entity-Ref-ID, List-Unsubscribe.
category*string"transactional""notification"tags?array<>items <= 10attachments?array<>items <= 20OK
application/json- response
data*error*nullcurl -X POST "https://example.com/emails/send" \ -H "Content-Type: application/json" \ -d '{ "to": [ { "email": "ana@client.ro", "name": "Ana Popescu" } ], "subject": "Factura 2026-0042", "html": "<p>Bună ziua, atașat găsiți factura.</p>", "category": "transactional", "tags": [ "invoice" ], "headers": { "X-Entity-Ref-ID": "inv_2026_0042" } }'{ "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "queued", "category": "transactional", "from": "string", "subject": "string", "recipients": [ { "email": "user@example.com", "name": "string", "kind": "to", "status": "accepted" } ], "suppressed_recipients": [ "string" ], "tags": [ "string" ], "message_id": "string", "provider_message_id": "string", "idempotency_key": "string", "last_error": "string", "created_at": "2019-08-24T14:15:22Z", "sent_at": "2019-08-24T14:15:22Z", "delivered_at": "2019-08-24T14:15:22Z", "bounced_at": "2019-08-24T14:15:22Z", "complained_at": "2019-08-24T14:15:22Z", "events": [ { "type": "email.queued", "at": "2019-08-24T14:15:22Z" } ] }, "error": null}