How to Send SMS
This guide walks you through sending SMS messages using Exotel, covering both the dashboard interface and the API. Before sending, ensure you have completed the DLT registration process and have approved templates.
Prerequisites​
Before sending your first SMS, complete these steps:
| Step | Description | Guide |
|---|---|---|
| 1. DLT Registration | Register as a telemarketer entity on a DLT portal | DLT Registration |
| 2. Sender ID | Register and approve your sender ID (header) | Sender ID |
| 3. Template Approval | Get your message templates approved on DLT | SMS Templates |
| 4. API Credentials | Get your API key and token from the dashboard | SMS API Overview |
Method 1: Send SMS via Dashboard​
Step 1: Navigate to SMS Section​
- Log in to your Exotel Dashboard.
- Go to App Bazaar in the left sidebar.
- Click on SMS to open the SMS management section.
Step 2: Compose Your Message​
- Click Send SMS or New SMS.
- From (Sender ID): Select your approved sender ID from the dropdown. This must be a DLT-registered header.
- To (Recipient): Enter the recipient's phone number with country code (e.g.,
+919876543210). You can add multiple numbers separated by commas for bulk sends. - Message Body: Select a pre-approved DLT template or type your message. If typing manually, ensure it matches an approved template exactly.
Step 3: Add DLT Details​
- DLT Entity ID: Enter your DLT entity ID (this may be pre-filled from your account settings).
- DLT Template ID: Select or enter the template ID that matches your message content.
Step 4: Send​
- Review your message details.
- Click Send to dispatch the message.
- You will see a confirmation with the message SID for tracking.
Save frequently used templates in your dashboard for quick access. You can also upload a CSV file for bulk sends.
Method 2: Send SMS via API​
Single SMS​
Send a single message to one recipient using the Send SMS API:
curl -X POST "https://<api_key>:<api_token>@api.exotel.com/v1/Accounts/<account_sid>/Sms/send" \
-d "From=EXOTEL" \
-d "To=+919876543210" \
-d "Body=Your order #12345 has been shipped. Track at https://example.com/track" \
-d "DltEntityId=1234567890123" \
-d "DltTemplateId=1234567890123456" \
-d "EncodingType=plain" \
-d "Priority=normal" \
-d "StatusCallback=https://your-server.com/sms-callback"
Required Parameters​
| Parameter | Description |
|---|---|
From | Your approved sender ID (DLT-registered header) |
To | Recipient phone number with country code |
Body | Message content matching a DLT-approved template |
DltEntityId | Your DLT entity registration ID |
DltTemplateId | The approved DLT template ID for this message |
Optional Parameters​
| Parameter | Description | Default |
|---|---|---|
EncodingType | plain or unicode | plain |
Priority | normal or high | normal |
StatusCallback | Webhook URL for delivery reports | None |
SmsType | transactional, transactional_opt_in, or promotional | transactional |
Bulk SMS (Same Message)​
Send the same message to multiple recipients using the Bulk SMS API:
curl -X POST "https://<api_key>:<api_token>@api.exotel.com/v2/Accounts/<account_sid>/Sms/bulksend" \
-H "Content-Type: application/json" \
-d '{
"sms": [
{
"From": "EXOTEL",
"To": ["+919876543210", "+919876543211", "+919876543212"],
"Body": "Flash sale! 50% off on all items. Visit https://example.com",
"DltEntityId": "1234567890123",
"DltTemplateId": "1234567890123456"
}
]
}'
Bulk SMS (Dynamic Messages)​
Send unique messages to different recipients in a single request (max 100 per call):
curl -X POST "https://<api_key>:<api_token>@api.exotel.com/v2/Accounts/<account_sid>/Sms/bulksend" \
-H "Content-Type: application/json" \
-d '{
"sms": [
{
"From": "EXOTEL",
"To": "+919876543210",
"Body": "Hi Rahul, your OTP is 123456",
"DltEntityId": "1234567890123",
"DltTemplateId": "1234567890123456"
},
{
"From": "EXOTEL",
"To": "+919876543211",
"Body": "Hi Priya, your OTP is 654321",
"DltEntityId": "1234567890123",
"DltTemplateId": "1234567890123456"
}
]
}'
Tracking Delivery​
After sending, track delivery using one of these methods:
- Status Callback (Webhook): Set the
StatusCallbackparameter to receive real-time delivery reports at your endpoint. See SMS Webhooks. - API Polling: Use the SMS Details API to check the status of a specific message by its SID.
- Dashboard: View delivery reports in the SMS section of your Exotel dashboard.
Common Issues​
| Issue | Cause | Solution |
|---|---|---|
FAILED_DLT_TEMPLATE | Message does not match approved template | Ensure your message body exactly matches the DLT template, including variable placeholders |
FAILED_DLT_ENTITY | Invalid DLT entity ID | Verify your DLT entity ID in your DLT portal account |
FAILED_INVALID_SENDER | Sender ID not approved | Register your sender ID on the DLT portal and map it in Exotel |
FAILED_DND | Recipient on DND list | Use transactional SMS for essential communications; promotional SMS cannot reach DND numbers |
| Rate limit exceeded | Too many API calls | Stay within 200 requests/minute; use bulk endpoints for high volume |
Always test your SMS flow in a staging environment before going live. Verify that your DLT template ID, entity ID, and sender ID are correctly configured.
Next Steps​
- SMS Templates -- Create and manage templates
- Bulk SMS -- Advanced bulk messaging guide
- SMS Delivery Reports -- Understand delivery statuses
- SMS API Reference -- Full API documentation