Send an email to one or more recipients
Queues a transactional email for delivery to up to 1000 recipients. Each recipient receives an individual EmailMessage record; delivery is dispatched asynchronously via a background task. Recipients on the suppression list (prior bounce, complaint, or unsubscribe) are rejected.
apiKeyAuthX-Api-Key<token>Your API key, sent as X-Api-Key. Format bsk_<key_id>.<secret>. Create one in the dashboard under Settings → Developer tools.
Idempotency-Key?stringMakes retries safe. Send a unique value (a UUID works) per logical send; repeating the request with the same key within 24 hours returns the original response with Idempotent-Replayed: true instead of sending and charging again. Reusing a key with a different body is 422 idempotency_key_reused. Max 255 characters.
- body
recipients*array<>1 <= items <= 1000subject*string1 <= length <= 255body*string1 <= lengthtraffic_class?stringEmail is transactional only (receipts, codes, alerts) and needs approval. See GET /sending-profile.
promotional- Promotionaltransactional- Transactional
"transactional""promotional""transactional"Queued. One email per recipient, all sharing batch_id.
application/json- response
batch_id*stringShared by every message in this send, and by their webhook events.
uuidrecipients*integerNumber of messages queued.
total_price*stringTotal cost of the send as a decimal string, e.g. 1.20. Charged up front.
currency*stringISO 4217 code, e.g. KES.
messages*array<>One email per recipient.
curl -X POST 'https://api.softlinksms.co.ke/api/v1/email' \ -H 'Content-Type: application/json' \ -d '{ "recipients": [ "user1@example.com", "user2@example.com" ], "subject": "Your order has shipped!", "body": "<p>Your order has shipped!</p>"}'{ "batch_id": "7b2e4c1d-0a9f-4e3b-8c6d-5f1a2b3c4d5e", "recipients": 1, "total_price": "0.25", "currency": "KES", "messages": [ { "id": "9d8c7b6a-5f4e-4d3c-8b2a-1f0e9d8c7b6a", "traffic_class": "transactional", "recipient": "user1@example.com", "price": "0.25", "currency": "KES", "batch_id": "7b2e4c1d-0a9f-4e3b-8c6d-5f1a2b3c4d5e", "message_id": null, "response_code": null, "response_description": null, "status": "pending", "created_at": "2026-10-19T08:15:00.412000Z" } ]}