Skip to Content
API ReferenceEmailsSend email

Send email

Send an email to one or more recipients. Equivalent to AWS SES SendEmail.

POST /api/v1/partner/email/send
POST/api/v1/partner/email/sendSend an email to one or more recipients.
curl -X POST "https://apis.splashifypro.com/api/v1/partner/email/send" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY"

Request body

FieldTypeRequiredNotes
fromstringyesSender address. Must be on a verified identity. Format: "name <addr@example.com>" or just addr@example.com
tostring[]yesUp to 50 recipients (combined to + cc + bcc)
ccstring[]noCarbon copy
bccstring[]noBlind carbon copy
reply_tostringnoSets the Reply-To: header
subjectstringyesSubject line
html_bodystringconditionalHTML body. One of html_body or text_body is required
text_bodystringconditionalPlaintext body. Auto-derived from HTML if omitted
configuration_set_namestringnoRoutes events to this config set’s destinations
customer_idstring (uuid)noOptional partner-side downstream customer attribution
categorystringnotransactional (default) or marketing
tagsobjectnoArbitrary key-value pairs that ride on mail.tags in webhooks

Response

{ "success": true, "results": [ { "recipient": "customer@example.com", "message_id": "550e8400-e29b-41d4-a716-446655440000", "status": "queued" } ] }

results carries one entry per recipient — to + cc + bcc are flattened.

FieldNotes
recipientLowercase + trimmed
message_idUse this on GET /emails/:message_id to poll status
statusqueued or rejected
reasonPresent when status: rejected — typically "suppressed"

cURL

curl https://apis.splashifypro.com/api/v1/partner/email/send \ -H "Authorization: Bearer $SPLASHIFY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "from": "hello@yourcompany.com", "to": ["customer@example.com"], "subject": "Welcome", "html_body": "<h1>Welcome</h1>", "text_body": "Welcome." }'

Node

const res = await fetch( "https://apis.splashifypro.com/api/v1/partner/email/send", { method: "POST", headers: { Authorization: `Bearer ${process.env.SPLASHIFY_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ from: "hello@yourcompany.com", to: ["customer@example.com"], subject: "Welcome", html_body: "<h1>Welcome</h1>", }), } ); const data = await res.json();

Python

import requests, os r = requests.post( "https://apis.splashifypro.com/api/v1/partner/email/send", headers={"Authorization": f"Bearer {os.environ['SPLASHIFY_API_KEY']}"}, json={ "from": "hello@yourcompany.com", "to": ["customer@example.com"], "subject": "Welcome", "html_body": "<h1>Welcome</h1>", }, )

Attachments

/send accepts an attachments[] array of base64-encoded files. PDFs, images, documents, spreadsheets, ZIPs are all supported.

{ "from": "billing@yourcompany.com", "to": ["customer@example.com"], "subject": "Your invoice", "html_body": "<p>Invoice attached.</p>", "attachments": [ { "filename": "invoice.pdf", "content_type": "application/pdf", "content_base64": "<base64 of file bytes>" } ] }

Caps: 20 files, 10 MiB total per message. Executable / script extensions (.exe, .bat, .js, .ps1, .sh, …) are blocked. See Send with attachments for the full reference, inline-image (CID) handling, and per-language code samples.

Common errors

StatusCodeMeaning
400INVALID_REQUESTMissing required field; read message
400INVALID_ATTACHMENTAttachment failed validation — see Send with attachments
400FROM_NOT_VERIFIEDVerify your domain at POST /identities
400TOO_MANY_RECIPIENTSSplit into multiple sends
402INSUFFICIENT_BALANCERecharge wallet
403SANDBOX_QUOTA_REACHEDDaily 200/day cap hit — request production access
403SENDING_PAUSEDAccount paused — contact support
429RATE_LIMITEDPer-second cap exceeded — back off