Skip to main content

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:

StepDescriptionGuide
1. DLT RegistrationRegister as a telemarketer entity on a DLT portalDLT Registration
2. Sender IDRegister and approve your sender ID (header)Sender ID
3. Template ApprovalGet your message templates approved on DLTSMS Templates
4. API CredentialsGet your API key and token from the dashboardSMS API Overview

Method 1: Send SMS via Dashboard​

Step 1: Navigate to SMS Section​

  1. Log in to your Exotel Dashboard.
  2. Go to App Bazaar in the left sidebar.
  3. Click on SMS to open the SMS management section.

Step 2: Compose Your Message​

  1. Click Send SMS or New SMS.
  2. From (Sender ID): Select your approved sender ID from the dropdown. This must be a DLT-registered header.
  3. 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.
  4. 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​

  1. DLT Entity ID: Enter your DLT entity ID (this may be pre-filled from your account settings).
  2. DLT Template ID: Select or enter the template ID that matches your message content.

Step 4: Send​

  1. Review your message details.
  2. Click Send to dispatch the message.
  3. You will see a confirmation with the message SID for tracking.
tip

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​

ParameterDescription
FromYour approved sender ID (DLT-registered header)
ToRecipient phone number with country code
BodyMessage content matching a DLT-approved template
DltEntityIdYour DLT entity registration ID
DltTemplateIdThe approved DLT template ID for this message

Optional Parameters​

ParameterDescriptionDefault
EncodingTypeplain or unicodeplain
Prioritynormal or highnormal
StatusCallbackWebhook URL for delivery reportsNone
SmsTypetransactional, transactional_opt_in, or promotionaltransactional

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:

  1. Status Callback (Webhook): Set the StatusCallback parameter to receive real-time delivery reports at your endpoint. See SMS Webhooks.
  2. API Polling: Use the SMS Details API to check the status of a specific message by its SID.
  3. Dashboard: View delivery reports in the SMS section of your Exotel dashboard.

Common Issues​

IssueCauseSolution
FAILED_DLT_TEMPLATEMessage does not match approved templateEnsure your message body exactly matches the DLT template, including variable placeholders
FAILED_DLT_ENTITYInvalid DLT entity IDVerify your DLT entity ID in your DLT portal account
FAILED_INVALID_SENDERSender ID not approvedRegister your sender ID on the DLT portal and map it in Exotel
FAILED_DNDRecipient on DND listUse transactional SMS for essential communications; promotional SMS cannot reach DND numbers
Rate limit exceededToo many API callsStay within 200 requests/minute; use bulk endpoints for high volume
warning

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​