Endpoint
POST https://app.octopods.io/api/v1/sms/messages
Authentication:
X-Octopods-Auth: YOUR_CHANNEL_API_KEYfor the SMS channel you want to send from (see API Overview and Authentication).Content type:
application/json.
Unlike WhatsApp, SMS does not require a template — you can send any text body.
Request body
Field | Type | Required | Description |
| string | Yes | Recipient phone in E.164 format, e.g. |
| string | Yes | The text of the SMS. Cannot be blank. |
| string | No | Display name to associate with the contact if one does not already exist. |
| boolean | No | Set to |
| string | No | The ID of the teammate the sent message should be attributed to. |
Full example
curl -X POST "https://app.octopods.io/api/v1/sms/messages" \
-H "X-Octopods-Auth: YOUR_CHANNEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"destination_phone": "+14155552671",
"body": "Hi Alex — your order is on the way!",
"destination_user_name": "Alex Rivera",
"open_intercom_conversation": true
}'
Successful response
HTTP 201 Created:
{
"request_id": "abc123…",
"message_id": 98765,
"channel_message_id": "provider-id-here"
}
Use message_id with GET /api/v1/sms/messages/{message_id} to poll delivery status.
Encoding and segments
SMS is billed per segment, not per message. The encoding you use changes the segment size:
GSM-7 — plain ASCII characters. Up to 160 characters per segment.
Unicode (UCS-2) — any emoji, accented character, or other non-GSM character. Up to 70 characters per segment.
A single emoji can push the whole message into Unicode and double the segment count. If cost matters, prefer plain text.
Error codes
Errors return HTTP 400 Bad Request with:
{ "request_id": "…", "error_code": N, "error": "…" }
Code | Meaning | Fix |
1 |
| Include the recipient phone. |
2 | Message body is empty. | Send a non-empty |
3 |
| Use E.164 format (leading |
4 | SMS provider returned an error. | See the |
5 | Deprecated API key. | Copy the current key from the SMS channel settings screen. |
Note: Full details and recovery steps for provider errors are in Troubleshooting Failed Proactive Messages.
Checking delivery status
To see whether a sent SMS reached the device, call:
GET https://app.octopods.io/api/v1/sms/messages/{message_id}
See Checking Message Delivery Status for the full response shape.
What’s next
