Skip to content

Send an email

POST /v1/emails

Request body

FieldTypeRequiredNotes
fromstringYes"a@b.ng" or "Name <a@b.ng>"; domain must be verified for live keys
tostring or string[]YesUp to 50 recipients
subjectstringYesMax 998 characters
htmlstringOne of these threeHTML body
textstringOne of these threePlain-text body (recommended alongside html)
template_idstringOne of these threeServer-side template (with variables)
cc, bcc, reply_tostring or string[]No
attachmentsobject[]No{filename, content (base64), content_type}, max 10
tagsstring[]NoUp to 10, for filtering
headersobjectNoCustom email headers
scheduled_atstringNoISO 8601 timestamp for future sends
idempotency_keystringNoSafe retries

Response 201

{
"id": "bb82eb79-b220-4801-85ef-cb3203ae2024",
"from": "PayLink <receipts@paylink.ng>",
"to": ["amaka@halo.ng"],
"subject": "Receipt for ₦45,000",
"status": "queued",
"sandbox": false,
"tags": [],
"scheduled_at": null,
"created_at": "2026-06-13T09:14:07.614Z"
}

An idempotent replay of a previous send returns 200 with the original email.

Errors

422 validation_error · 403 domain_not_verified (live keys, unverified from-domain) · 422 suppressed_recipient · 429 rate_limit_exceeded