Skip to main content

SMS Status Codes

Complete reference for SMS delivery status codes returned by the Exotel SMS API in the DetailedStatusCode and DetailedStatus fields.

note

Status codes in the range 23084–24000 are reserved and may be expanded for future use.

Intermediate Statuses

These statuses indicate the SMS is still in progress and may change.

DetailedStatusCodeStatusDetailedStatusDescription
21010queuedPENDING_TO_OPERATORSMS is queued and being processed by Exotel
21015sendingSENDING_TO_OPERATORSMS has been processed and is en-route to the operator
21020submittedPENDING_ON_OPERATORSMS submitted to the operator, pending delivery. In India, promotional SMS may remain here if submitted outside 10AM–9PM

Success Statuses

DetailedStatusCodeStatusDetailedStatusDescription
20005sentDELIVERED_TO_HANDSETDelivered to the recipient's handset (confirmed)
20006sentDELIVERED_TO_OPERATORDelivered to operator. In some regions, handset confirmation is not available and this is the final status

Failure Statuses

DND / Blacklist

DetailedStatusCodeStatusDetailedStatusDescription
23005failed-dndFAILED_REJECTED_DNDRejected — recipient is on the DND (Do Not Disturb) registry
23020failedFAILED_REJECTED_BLACKLISTRecipient is blacklisted — they have opted out (STOP/DND)
23060failedFAILED_REJECTEDRejected by Exotel or the operator for unspecified reasons

Delivery Failures

DetailedStatusCodeStatusDetailedStatusDescription
23010failedFAILED_INVALID_DESTINATION_NUMBERDestination number is incorrect, not SMS-enabled, or is a PSTN landline
23015failedFAILED_SPAM_DETECTEDBlocked by carrier spam filters. Filters vary by carrier and can change without notice
23030failedFAILED_UNAVAILABLE_ROUTENo route available from the carrier or fallback carriers
23035failedFAILED_SUBSCRIBER_UNAVAILABLESubscriber temporarily unavailable (out of coverage, switched off). A retry later may succeed
23040failedFAILED_SUBSCRIBER_UNKNOWNSubscriber unknown to operators or no longer active
23050failedFAILED_EXPIREDMessage expired — submitted to operator and retried within the network expiration window with no success
23072failedFAILED_INVALID_SENDER_IDInvalid or unregistered Sender ID. In India: Sender ID (header) not registered on operator's DLT platform
24105failedFAILED_HANDSET_ERRORNot delivered due to handset failure
24110failedFAILED_OPERATOR_ERRORFailed due to an issue at the operator end
24120failedFAILED_SUBSCRIBER_ERRORSubscriber-side issues unrelated to the handset (e.g., insufficient mobile balance)
24990failedFAILED_UNKNOWN_ERRORFailed for unknown reasons. Contact support if this appears frequently

System Errors

DetailedStatusCodeStatusDetailedStatusDescription
24010failedFAILED_SYSTEM_ERRORFailed while processing within Exotel's system

DLT Failures (India only)

Applicable only to SMS sent to Indian destination numbers via domestic lines.

DetailedStatusCodeStatusDetailedStatusDescription
23070failedFAILED_INVALID_MESSAGERejected as invalid by the operator. Causes: message exceeds 2000 characters, unidentified character, or missing DLT Entity ID
23080failedSENDER_BLOCKED_BY_DLTSender ID (header) blocked at DLT — mismatch, non-registration, or template not linked to sender
23081failedENTITY_BLOCKED_BY_DLTDLT Entity ID blocked or missing — not passed in API or configured on dashboard, or values mismatching
23082failedTEMPLATE_BLOCKED_BY_DLTTemplate ID blocked at DLT — not set, content mismatch, or template not registered
23083failedFAILED_DLT_SCRUBBING_ERRORBlocked at DLT even after registration — Sender ID blocked for spam, consent issues, or other DLT platform issues
23084failedFAILED_DLT_CONSENT_ERRORDLT consent registration required to send to this recipient
23181failedDLT_TEMPLATE_ID_INVALIDTemplate is invalid. Some operators may report this as 23182: DLT_TEMPLATE_NOT_FOUND
23182failedDLT_TEMPLATE_NOT_FOUNDTemplate was not found on the DLT portal
23183failedDLT_TEMPLATE_ID_INACTIVETemplate is inactive
23184failedDLT_TEMPLATE_ID_BLACKLISTEDTemplate blacklisted — may occur when users report the message
23185failedDLT_TEMPLATE_DOES_NOT_MATCHMessage body does not match the registered DLT template. Some operators may also report 23186 as this code
23186failedDLT_LENGTH_EXCEEDEDMessage exceeds the 2000-character maximum
23281failedDLT_ENTITY_NOT_FOUNDEntity ID not found on the DLT portal. Some operators may report this as 23081: ENTITY_BLOCKED_BY_DLT

HTTP API Error Codes

POST errors (/send, /bulksend)

HTTP CodeAPI Error CodeScenario
40340000Trial account attempting to send promotional SMS
403340030Trial account not KYC-compliant (number not whitelisted or wrong whitelist type)
40340001Insufficient account balance
40340002Account inactive
40340003Account not configured to send SMS to the recipient's country
50035000Internal server error — contact support
50040100Error processing the request
40040200Message body is empty or missing (single send)
40040201Messages is a mandatory field (bulk send)
40040202Message body is invalid
40040203All destination numbers are invalid
40040204SmsType not set correctly
40040205From field is empty
40040206From format does not match SmsType
40040207Array passed where string expected
40040208Messages must be an array
40040209EncodingType not set correctly
40040210From is a mandatory field
40040300Indian promotional account: no numeric sender ID found
40040301International account: no transactional sender ID found
40040400More than 100 messages in a dynamic bulk request
40040406More than 100 numbers in a static bulk request
42940402Too many POST requests
42940404Trial account SMS limit exceeded (max 10)
50340405Throttle limit exceeded
40540502POST to unrecognized SMS endpoint

GET errors (/SMS/Messages/{SmsSid})

HTTP CodeAPI Error CodeScenario
200SID not found — returns "No matching results"
42940403Too many GET requests
40040501Invalid parameters in GET request

Common errors (all methods)

HTTP CodeAPI Error CodeScenario
40340002Account inactive
40040500Invalid parameters (e.g., call to /v1/Accounts/<sid>/Sms without a valid action)
400Unsupported API version
400/Accounts/ missing from URL
40334009Account SID missing from URL or action forbidden on resource
401Auth key or token missing
40134010Invalid auth key or token
40034001Non-alphanumeric auth key or token

Status Flow

queued (21010) → sending (21015) → submitted (21020) → DELIVERED_TO_HANDSET (20005)
→ DELIVERED_TO_OPERATOR (20006)
→ FAILED_* (any failure)
tip
  • If the SMS body contains special characters (like -, &, %), URL-encode the text before sending.
  • If EncodingType is not set, Exotel auto-detects whether the message is plain or unicode.