POST/v1/emails/send

Authorization

Bearer token

Authorizationrequiredheader

Send your API key as Bearer YOUR_API_KEY.

Permissionemail.send

The sender domain must be verified and allowed by the API key's domain scope.

Headers

Authorizationrequired

Bearer YOUR_API_KEY

Content-Typerequired

application/json

Idempotency-Keyrequired

A stable key for this send operation

Body parameters

application/json

fromrequiredstring

Bare sender email address; use fromName for a display name.

torequiredstring or string[]

One address, or an array of 1–100 addresses.

subjectstring

Required without templateId; 1–500 characters.

htmlstring

HTML body. Provide html, text, or both; at least one is required without a template.

textstring

Plain-text body. Provide html, text, or both; at least one is required without a template.

templateIdoptionalstring

ID of a published template. Its subject, HTML, and text replace subject, html, and text. See Templates.

templateVariablesoptionalobject

Values for the template's variables, keyed by variable name: strings, numbers, or booleans.

fromNameoptionalstring

Sender display name, 1–100 characters.

replyTooptionalstring

Reply-to email address.

ccoptionalstring or string[]

Copy recipients. Only with one primary recipient. to, cc, and bcc together can have at most 50 addresses.

bccoptionalstring or string[]

Blind copy recipients. Only with one primary recipient. to, cc, and bcc together can have at most 50 addresses.

metadataoptionalobject

Additional metadata for the send.

scheduledAtoptionalstring

When to send, as an ISO 8601 timestamp with a timezone offset, such as 2026-10-05T09:00:00+01:00. Must be in the future and at most 30 days ahead.

Response

application/json202 Accepted

Example identifiers below are illustrative.

messageId identifies the message; deliveryIds identify its recipient deliveries. totalQueued is the number queued or scheduled. scheduledAt is the scheduled time, or null for an immediate send. The Node.js and PHP SDKs unwrap the HTTP data object.

With scheduledAt, each delivery has status scheduled and is sent within about a minute of that time. Until then you can reschedule or cancel it with its messageId. A scheduled send uses your sending allowance when it is sent, not when you schedule it: if your allowance is used up at that time, its deliveries become failed with the reason quota_exceeded and nothing is charged. A recipient suppressed before that time, or a key revoked since, is not sent and not charged. Your plan limits how many recipients can wait in scheduled emails at once, and a scheduled send also counts toward the daily limit of the day it is scheduled for; see Usage limits.

Acceptance is not delivery. Follow email.delivered, email.bounced, and email.failed, or check email logs.

Nexiom Connect
Open dashboard