Send email
One call, up to 100 recipients — receipts, OTPs, notifications. Each recipient is billed individually and tracked to delivery.
Send
POST/api/v1/email/send
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| to | string[] | Yes | Up to 100 recipient addresses. Duplicates are collapsed; suppressed addresses are skipped (and not billed). |
| subject | string | Yes | The subject line. |
| html | string | No | HTML body. At least one of html or text is required. |
| text | string | No | Plain-text body/fallback. |
| from | string | No | Local part (billing) or full address on your verified domain. Omit to use the domain's default from-address. |
| domain_uuid | uuid | No | Required only when your team has more than one verified domain. |
curl -X POST https://api.mobilesasa.com/api/v1/email/send \
-H "Authorization: Bearer $MOBILESASA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to": [
"[email protected]",
"[email protected]"
],
"subject": "Your July invoice is ready",
"html": "<p>Hi! Invoice INV-2041 for KES 12,400 is attached to your account page.</p>",
"from": "billing"
}'Response — 200
{
"success": true,
"data": {
"accepted": 2,
"suppressed": 0,
"failed": 0,
"cost_total": 0.2,
"messages": [
{ "uuid": "aa1f…", "to_email": "[email protected]", "status": "sent" },
{ "uuid": "bb2e…", "to_email": "[email protected]", "status": "sent" }
]
}
}Track what happened
GET/api/v1/email/messages
Every recipient is a message row whose status advances as the provider reports back: sent → delivered, or bounced / complained (both of which also suppress the address for you).
curl "https://api.mobilesasa.com/api/v1/email/messages?status=bounced&page=1" \
-H "Authorization: Bearer $MOBILESASA_TOKEN"Suppression is permanent by design
A hard bounce means the mailbox doesn't exist; a complaint means the person marked you as spam. Sending to either again damages your domain's reputation, so the platform won't — those addresses come back in the response as
suppressed and cost nothing. Contact support to lift a suppression that was genuinely transient.Need thousands of recipients?
Use bulk campaigns — same billing, asynchronous fan-out with progress counters.