Send transactional and campaign emails from an approved sender.
Send Transactional Email
POST
/transactionalAttachments are optional. Use POST only — GET does not support attachments.
| Field | Example | Description |
|---|---|---|
| token* | xxxxxxxx | Your API key. |
| senderEmail* | xxxxxxxxxx | Your approved sender email. |
| senderName* | xxxxxxxxxx | Your approved sender name. |
| senderFrom* | xxxxxxxxxxxxx | Sender of the transaction. |
| transactionName* | xxxxxxxxxxxxx | Name for this transaction message. |
| recipient* | xxxxxxxxxxxxxx | Recipient's email address. |
| subject* | xxxxxxxxxxxxxx | Email subject. |
| message* | xxxxxxxxxxx | The transactional message. |
| attachments[N][filename] | invoice.pdf | Filename with extension (optional, up to 5 files). |
| attachments[N][content] | BASE64_STRING | Base64-encoded file content — not a raw file upload. |
Attachment rules
- Each file needs a
filename(with extension) and Base64-encodedcontent. - Maximum 5 files, 5MB per file, 8MB total.
- Allowed types: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, CSV, TXT, JPG, PNG, GIF, ZIP.
Form-data example
attachments[0][filename] = invoice.pdf
attachments[0][content] = BASE64_STRING
attachments[1][filename] = receipt.xlsx
attachments[1][content] = BASE64_STRINGSend Campaign Email
POST
/campaign| Field | Example | Description |
|---|---|---|
| token* | xxxxxxxx | Your API key. |
| senderEmail* | xxxxxxxxxxx | Your approved sender email. |
| senderName* | xxxxxxxx | Your approved sender name. |
| senderFrom* | xxxxxxxxxxx | Sender of the campaign. |
| campaignName* | xxxxxxxxx | Name for this campaign message. |
| recipient* | xxxxxxxxxxx | Recipient's email address. |
| subject* | xxxxxxxxx | Email subject. |
| templateCode | xxxxxxxxxx | Your saved template code. |
| html | xxxxx | HTML or plain text (optional — either templateCode or html). Only supported with POST & JSON method. |
Email Webhooks (inbound)
POST
https://your-server.com/webhooks/kudismsKudiSMS sends POST webhooks to your configured callback URL when an email status changes (delivery, bounce, open, click, etc.).
- Set your callback URL in the KudiSMS dashboard.
- Match webhooks to sends using
api_reference(same UUID from the send API response). - Webhooks include
type: "email"to distinguish from SMS/voice. - Respond with HTTP 200 to acknowledge.
Status & code
| Status | Code | Description |
|---|---|---|
| DELIVERED | 000 | Email delivered successfully |
| SENT | 001 | Email accepted by the provider |
| BOUNCED | 100 | Email could not be delivered |
| QUEUED | 101 | Delivery queued or temporarily delayed |
| HELD | 102 | Email held for review |
| UNKNOWN | 150 | Unrecognized status |
Example payload
{
"type": "email",
"status": "DELIVERED",
"api_reference": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"vendor": "Kudisms",
"data": {
"code": "000",
"cost": "3.00",
"recipient": "customer@example.com",
"time": "2026-06-19 10:15:30",
"description": "Recipient has received the email successfully",
"views": 0,
"clicks": 0
}
}Updated at, Sunday, July 19, 2026