Loading...
SMX supports both one-off custom messages and bulk dispatch. Both routes depend on an active linked Android device in the project.
Send one custom message to one receiver through the project's active linked Android device.
| Header | Required | Description |
|---|---|---|
| X-SMX-API-Key | Yes | Project API key. |
| Content-Type: application/json | Yes | Required for JSON request bodies. |
| Idempotency-Key | Optional | Supported on send-custom for retry-safe submissions. |
| Field | Type | Required | Description |
|---|---|---|---|
| receiver | string | Yes | Single E.164 receiver. |
| text | string | Yes | Custom SMS body, limited by the backend max length. |
1{2 "success": true,3 "data": {4 "messageId": "msg_01hy78abc..."5 }6}| Status | When | Codes |
|---|---|---|
| 200 | The message was queued, or an idempotent replay returned the original result. | — |
| 400 | Validation or delivery prerequisites blocked the send. | DEVICE_NOT_LINKED, VALIDATION_FAILED |
| 401 | The API key header was missing or invalid. | API_KEY_MISSING, API_KEY_INVALID |
| 403 | The API key belongs to a project that is not active. | PROJECT_DISABLED |
Queue the same message body for a list of receivers. One bulk request supports up to 100 receivers at once.
| Field | Type | Required | Description |
|---|---|---|---|
| receivers | string[] | Yes | Bulk receiver list. Maximum 100 receivers per request. |
| text | string | Yes | Shared message body for all receivers. |
1{2 "success": true,3 "data": {4 "results": [5 { "receiver": "+967778994568", "success": true, "messageId": "msg_01..." }6 ]7 }8}| Status | When | Codes |
|---|---|---|
| 200 | The bulk request completed and returns per-receiver results. | — |
| 400 | The receiver list or delivery prerequisites were invalid. | DEVICE_NOT_LINKED, VALIDATION_FAILED |
| 401 | The API key header was missing or invalid. | API_KEY_MISSING, API_KEY_INVALID |
| 403 | The API key belongs to a project that is not active. | PROJECT_DISABLED |
When a bulk request contains more receivers than the allowed threshold, the API rejects it with validation context inside the details object.
1{2 "success": false,3 "origin": "validation",4 "codes": ["VALIDATION_FAILED"],5 "message": "Max receivers exceeded (100)",6 "details": {7 "maxReceivers": 100,8 "receivedCount": 1059 }10}