Send an email
Send one message (to one address or up to 50). Runs the full pipeline: suppression check, contact upsert, template render, tracking instrumentation, and dispatch. Supports scheduling via sendAt and safe retries via the Idempotency-Key header.
Reading a failure — every failure of the send pipeline keeps the top-level code send_failed, at whatever HTTP status fits (404 for a missing template, 403 for an unverified from domain). The specific cause is in details[0].code — e.g. template_not_found. Branch on code === "send_failed" for "the send did not happen", then read details[0].code when you need to tell a wrong template id in your config from a transient provider problem worth retrying. details is absent when there is no cause more specific than the message.
A 200 does not mean delivered. Each entry in messages is either an accepted message (with an id and a status) or a skip ({ to, skipped } — suppressed, unsubscribed, over quota). Skips are part of a 200 body. Accepted messages are queued: the provider round trip happens after this response returns, so track final delivery with GET /v1/emails/{id} or the email.* webhooks, not from this call.
Request
- Base URL: https://api.volanea.com
- URL: https://api.volanea.com/v1/send
- Auth: HTTP bearer
Headers
A unique key for this logical send; a repeat replays the stored response instead of sending again.
Request body
Response
Per-recipient results.
Changes
No recorded changes to this operation across all 1 revision of this API.