For an SMS sent via Exotel SMS API, you can find out the delivery Status of the SMS via two means:
A. You can PULL the status by querying Exotel for the specific SMS that you sent.
For this you need to make a GET request to
ExotelSid is your Exotel Sid
ExotelToken is the token <--- You can get this from the Settings page
SmsSid is the "Sid" (unique id) of the SMS that you got in response to your send request
Ex: curl "https://Exotel:firstname.lastname@example.org/v1/Accounts/Exotel/SMS/Messages/4dd44cc0f7010ee43ca256126f3efc88"
B. You can have Exotel PUSH the SMS status to you after delivery.
For this, you need to pass an additional parameter "StatusCallback" along with your other parameters (like 'From', 'To' and 'Body').
=> This parameter should be a URL that is hosted by you. Ex: http://example.com/
=> Exotel will make a POST request to the above URL with the following parameters: "SmsSid", "Status" and "DateUpdated".
In both the above cases, Status will be one of
"sent" => the SMS was successfully delivered to the recipient
"failed-dnd" => the delivery of the SMS failed because the number belongs to the TRAI NCPR list
"failed" => the delivery of the SMS failed because of other reasons (ex, number not reachable, switched off, etc.)