Fields
string
required
The account to send from (
acc_…).attendee[]
Recipients as
[{ "display_name": "Ana", "identifier": "ana@example.com" }], a list of addresses, or one comma-separated string. At least one recipient is required (except for replies).string
string
HTML body. A text version is made from it automatically.
string
Plain-text body, if you want to set it yourself.
attendee
display_name changes the sender’s name. identifier sends from an alias; the provider must allow it (a Gmail “Send mail as” address, for example).string
The
email_… id of an email to answer. See Replies and threads.attendee[]
Addresses for the
Reply-To header.object[]
[{ "name": "X-Campaign", "value": "q4" }]. Allowed: any X-… header, List-Unsubscribe, List-Unsubscribe-Post, and Reply-To. Content-Type is accepted and ignored.file[] | object[]
Multipart: files in fields named
attachments. JSON: [{ "filename", "content_type", "content" }] with content in base64.to, cc, bcc, tracking_options and custom_headers as JSON text.
Requests are limited to 30 MB in total, attachments included. Providers have their own limits, for example 25 MB for Gmail.
Response
201 Created
message_ididentifies the email in every mailbox it reaches. Its Sent copy has the samemessage_id.provider_idisnull: SMTP doesn’t return an id when sending. The Sent copy gets its ids when it syncs.tracking_idis atrk_…id when you usetracking_options, otherwisenull.- The Sent copy syncs a moment later, and you receive an
email.newevent with the full email andorigin: "api".