API reference / Track results
Outcomes and what to do
Every send ends with a status of success or failure, a numeric reason_code and a text reason. They arrive on the status webhooks and on callback_url. See Results of your sends.
Branch on reason_code, not on reason. The text can be reworded; the number can't.
Retry? means:
- Yes: resend now.
- Later: resend after some time passes.
- After fixing: change something first. Resending unchanged fails the same way.
- No: don't resend to this contact on this channel.
Delivered
The send went out. Nothing to do.
| Code | Reason | Retry? | What to do |
|---|---|---|---|
| 0 | Success | n/a | The voicemail was left, the call was answered, or the text or email was sent. |
Mailbox reached but couldn't take a message
The call reached the contact's carrier, but the mailbox couldn't record a voicemail. Retrying won't help until the contact fixes their mailbox. Check what the contact agreed to on Consent, then reach them on another channel they agreed to, such as a text. The proof of delivery recording plays what the mailbox said.
| Code | Reason | Retry? | What to do |
|---|---|---|---|
| 4001 | VoiceMail Not Setup | No | The contact never set up their mailbox. |
| 4002 | VoiceMail Full | No | The contact's mailbox is full. |
Didn't reach the contact
This attempt didn't reach the contact. Unless the row says otherwise, retry later, inside the contact's calling hours and within your contact frequency limit. See Delivery rules.
| Code | Reason | Retry? | What to do |
|---|---|---|---|
| 4000 | VoiceMail Not Detected | Later | The line answered, but no voicemail greeting was detected. Try another time of day. |
| 4003 | Temporarily unreachable | Later | The contact's number was temporarily unreachable, often because their phone carrier is having network problems. Try again later. If many sends fail this way at once, contact support with a drop_id. |
| 4004 | Number not reachable | Later | The call couldn't connect. If it repeats, check the number with the contact. |
| 4005 | No Answer | Later | Nobody answered. |
| 4006 | User Busy | Later | The line was busy. |
| 4008 | Spam detected | Later | The carrier rejected the call as unwanted, or no audio was detected on the line. Check your caller ID's reputation, or send from another phone line. |
| 4011 | TCPA Hours | Later | A text outside the contact's allowed hours (federal and state-specific calling hours in their time zone). Resend inside the window. Voice sends wait for the window instead. |
| 4012 | Timeout | Later | The call or AI conversation didn't finish in time. |
| 4013 | Too Many Attempts | Later | The number reached your contact frequency limit (default 3 attempts in 3 days), counted across your account. Resend after the window, or change the limit. The webhook's frequency_limit object shows the limit and the count. Test numbers are exempt. |
| 4023 | Network Blocked | Later | The carrier's network blocked the call as unwanted. Check your caller ID's reputation and registration before resending. |
| 4024 | Carrier Intercept | No | The carrier played an intercept message, usually for a disconnected or changed number. Check the number with the contact. |
| 4025 | Reached Automated Menu | No | The call reached an automated menu, not a person or a mailbox. |
| 4026 | Call Screening Detected | No | The call reached a call-screening service. |
Number can't be used
The number itself can't take this send. Fix or replace it on the contact; resending to the same number fails the same way.
| Code | Reason | Retry? | What to do |
|---|---|---|---|
| 3011 | Must be E.164 format | After fixing | A number isn't in E.164 format (+, country code, number). Applies to the recipient and to number fields such as caller_id and transfer_to. |
| 3012 | Phone number not valid | After fixing | The number is too short to be valid, or the contact has no number in the phone_selector slot you named. |
| 4007 | Not Mobile | No | The number isn't a mobile, and mobile_only is on for the send, the campaign or the account. Use a channel that reaches landlines, or turn mobile_only off. |
| 4009 | Public Safety Number | No | The number is an emergency or public-safety number. Remove it from your list. |
| 4019 | RND Reassigned | No | The Reassigned Numbers Database says the number changed hands after the contact's consent. Remove it and ask the contact for their current number. We check the database only when you add your own RND credentials; register with the RND directly to qualify for its safe harbor. |
| 4021 | RND Error | Later | The reassigned-number check, run with your RND credentials, failed for this number. Check the credentials, then retry later; if it repeats, contact support with the drop_id. |
Not allowed: stop
You may not contact this person this way. Don't resend and don't work around the block.
| Code | Reason | Retry? | What to do |
|---|---|---|---|
| 4015 | Geographic Region Blocked | No | The destination country is sanctioned or turned off on your account, or the caller ID or your account location isn't allowed to reach it. If you should be able to reach that country, contact support. |
| 4016 | Internal DNC | No | The number is on your do-not-contact list. Remove it only if the contact asked to hear from you again. |
| 4017 | Known Litigator | No | The number is on a known TCPA litigator list. We check with your own Blacklist Alliance or WebRecon key when you add one on the Integrations page, and with ours otherwise. |
| 6004 | Opt-in Flagged | No | The contact's opt-in was flagged as spam. Don't send until you have a new, documented opt-in. |
| 6005 | Opt-in Revoked | No | The contact revoked consent, for example by replying STOP. Only a new, documented opt-in allows sending again. |
| 6006 | Opt-in Pending | Later | The contact was asked to confirm their opt-in and hasn't confirmed. Resend once they do. |
| 6011 | Opt-in Missing | After fixing | Your account requires consent, and none is on file for this channel. Record the contact's opt-in, then resend. See Consent. |
Your account or setup
Something about your account, your registration or the request has to change first. Nothing is wrong with the contact. Fix the cause, then resend with a new Idempotency-Key.
| Code | Reason | Retry? | What to do |
|---|---|---|---|
| 3000 | No Funds | After fixing | Your balance is empty. Add funds or turn on auto-recharge, then resend. |
| 3001 | Audio file not valid | After fixing | The audio isn't usable: media_id isn't on your account, or audio_url couldn't be downloaded or isn't MP3 or WAV. Upload it with the Media API and send media_id. |
| 3002 | No Voice | After fixing | voice_id isn't valid, text-to-speech has no voice_id, or an AI call has bad voice_ids or voice_rotation. |
| 3003 | Campaign Deleted | No | The campaign was deleted while sending. Create it again if you still want to send. |
| 3004 | Not Included in Plan | After fixing | Your plan doesn't include this product. Change your plan, or use a channel it includes. |
| 3007 | Not authorized | After fixing | The key, secret or token was wrong, expired or missing the scope. Reported on callback_url only. See Authentication. |
| 3008 | No api container | After fixing | Your account's API setup is incomplete. Contact support with the log_id from the callback_url body. |
| 3009 | Too many phone numbers | After fixing | More than 100 phone numbers in one request. Split it. |
| 3010 | Nothing to do | After fixing | phone_numbers was empty. |
| 3013 | Invalid IVR or Route | After fixing | A phone line id isn't valid or isn't yours, or inbound_routing isn't forward or byoc. Use an id from GET /phone/public/lines. |
| 3014 | Not allowed audio_url | After fixing | Your account only allows approved audio, so audio_url is refused. Send a media_id, or tts_body with voice_id. |
| 3015 | No TTS | After fixing | voice_id was sent without tts_body. |
| 3016 | BYOC not enabled | After fixing | The send has a byoc object, but bring-your-own-carrier isn't on for your account. Remove it, or ask support. |
| 3017 | Invalid STI | After fixing | byoc.sti_orig_id isn't a valid UUID. |
| 3018 | Invalid Attestation | After fixing | byoc.sti_attestation isn't A, B or C. |
| 3019 | Invalid Callback | After fixing | callback_url isn't a valid URL. Pass a public http(s) URL, or leave it out. |
| 3020 | Missing Parameters | After fixing | A required field is missing or invalid: a text with no body, template_id or media; a contact_id that isn't yours; a bad phone_selector or digit; or a transfer key without transfer_to. |
| 3021 | TTS too long | After fixing | tts_body is over 1,200 characters, counted after merge fields are filled in. Shorten it. |
| 3022 | Not Allowed in Trial | After fixing | Trial accounts can only send to numbers verified on the account. Send to one, or choose a plan. |
| 3023 | US Identity Verification Required | After fixing | Sending to US numbers needs identity verification on your account. Complete it in the dashboard. |
| 3024 | Conversational Number Not Allowed | After fixing | The line is a conversational number, which only replies in the inbox. Send bulk texts from a line on a registered texting campaign. |
| 3025 | Daily Texting Limit Reached | Later | Your registered texting campaign reached the daily limit the carriers allow it. Resend after midnight Pacific time. Campaign texts don't get this code: the campaign holds the rest of its contacts and resumes at 9 a.m. Pacific the next day. |
| 3027 | Idempotency Key Conflict | After fixing | The Idempotency-Key was used in the last 24 hours with a different body or route. Use a new key for each new request. |
| 3028 | Invalid Idempotency Key | After fixing | Idempotency-Key isn't 1 to 255 printable ASCII characters. A random UUID works. |
| 3029 | Phone Line Has No SMS Campaign | After fixing | The phone_line_id has no registered texting campaign. Attach the line to an approved campaign, or use another line. |
| 3030 | Invalid Transfer IVR | After fixing | transfer_ivr_id isn't valid. Use a phone line id from GET /phone/public/lines. |
| 3031 | Transfer Destination Missing | After fixing | A transfer key was set with nowhere to transfer to. Add transfer_ivr_id or transfer_to. |
| 3032 | Invalid Media | After fixing | Bad media_urls or media_ids, more than 10 files, media with template_id, or media on a voice route. |
| 3033 | Media Not Found | After fixing | A media_id isn't on your account, was deleted, or has no uploaded file. |
| 3034 | Media Fetch Failed | Later | A media URL didn't answer 200 in time, or redirected. Host it at a public https URL. |
| 3035 | Media Too Large | After fixing | A file is over 1 MiB, or the files total over 5 MiB. |
| 3036 | Unsupported Media Type | After fixing | A file isn't JPEG, PNG, GIF, WAV or MP3, judged by its bytes. |
| 3037 | Media Blocked by Malware Scan | No | The malware scan flagged a file. Don't resend it. |
| 3038 | Media Scan Pending | Later | The malware scan didn't finish in time. A retry reuses the finished scan. |
| 3039 | Media Scan Failed | Later | The malware scan failed. The file may be fine; retry. |
| 3999 | Other | After fixing | reason names the cause, for example No Agent, Agent Is Draft, Agent Not Active, No Template or Identity Not Verified. Fix it and resend. If reason doesn't say what to change, contact support with the drop_id. |
| 4010 | No Caller ID | After fixing | No phone line to call from. The send named no phone_line_id and your account has no default phone line. Pass phone_line_id, or set a default line. Bring-your-own-carrier accounts can pass caller_id instead. |
| 5000 | Account Inactive | After fixing | Your account is cancelled, frozen or paused, which stops every channel. Contact support to restore access. |
| 5001 | Payment Required | After fixing | A subscription payment failed and the grace period passed, which stops every channel. Update your card, then resend. |
| 5002 | Trial Expired | After fixing | The trial period ended with no paid plan, which stops every channel. Choose a plan, then resend. |
| 6000 | Carrier Denied Use Case | After fixing | The carriers rejected your texting campaign's use case. Change the registration. |
| 6001 | Carrier Suspension | After fixing | The carriers suspended your texting campaign. Contact support before sending more. |
| 6002 | Pool Suspended | After fixing | Your number pool is suspended. Contact support. |
| 6003 | Pool Not Ready | Later | Your number pool is still waiting for carrier approval, or wasn't found. Resend once it's approved. |
| 6007 | Must Use Number Pool | After fixing | This send must go out from your number pool. For a byoc send, add caller_id or pool_id. |
| 6008 | Must Use Compliant Number Pool | After fixing | Your number pool has no opt-in confirmation message. Contact support to switch to a number pool that has one. |
| 6009 | Unregistered Brand | After fixing | Your account requires a registered brand, and the send had no valid brand_id. Pass one from GET /automation/public/brands, or register a brand. |
Email-specific
These codes apply to email only. See Email.
| Code | Reason | Retry? | What to do |
|---|---|---|---|
| 5003 | Not Entitled | After fixing | Your plan doesn't include email. |
| 5005 | Missing From Address | After fixing | No from address. Pass mailbox_id or from. |
| 5006 | Invalid From Address Format | After fixing | The from address isn't a valid email address. |
| 5007 | Sending Domain Not Found | After fixing | The from domain isn't one of your sending domains. Add and verify it. |
| 5008 | From Domain Mismatch | After fixing | The from address isn't on the sending domain. |
| 5009 | Domain Not Owned By Team | After fixing | The sending domain belongs to another account. |
| 5010 | Sending Domain Not Provisioned | After fixing | The sending domain's DNS records aren't verified. Finish the DNS setup. |
| 5011 | Sending Domain Not Verified With Provider | After fixing | The email provider hasn't verified the sending domain. Finish verifying it. |
| 5012 | Trial Daily Send Limit Exceeded | Later | The trial daily email limit is reached. Wait a day, or choose a plan. |
| 5013 | Daily Send Limit Exceeded | Later | Your daily email limit is reached. Wait a day, or ask support to raise it. |
| 5014 | Recipient On Do-Not-Contact List | No | The address is on your do-not-contact list. |
| 5015 | Recipient Opted Out Of Email | No | The contact opted out of email. |
| 5016 | Contact Not Found | After fixing | Your account requires email consent, and contact_id doesn't match a contact. Fix contact_id. |
| 5017 | No Email Consent On File | After fixing | Your account requires email consent, and the contact has none on file. Record it, then resend. |
| 5019 | Frequency Cap Exceeded (Bulk) | Later | The contact reached your bulk email frequency cap. Wait, or change the cap. |
| 5020 | Frequency Cap Exceeded (Transactional) | Later | The contact reached your transactional email frequency cap. Wait, or change the cap. |
| 5030 | Hard Bounce | No | The address bounced permanently and is now suppressed. Ask the contact for a new address. |
| 5031 | Soft Bounce | Later | The address bounced for a temporary reason. |
| 5032 | Spam Complaint | No | The recipient marked the email as spam and is now suppressed. |
Temporary problem on our end
Something failed while handling the send. Retry. If the same code keeps coming back, contact support with the id named below.
| Code | Reason | Retry? | What to do |
|---|---|---|---|
| 3026 | Daily Texting Limit Unavailable | Later | We couldn't check your texting campaign's daily limit, so the text wasn't sent. Retry. |
| 5018 | Consent Lookup Error | Yes | Email consent couldn't be checked. Retry; if it repeats, contact support with the email_id. |
| 5021 | Frequency Cap Lookup Error | Yes | The email frequency cap couldn't be checked. Retry; if it repeats, contact support with the email_id. |
| 5022 | Send Error | Yes | The email provider failed the send. Retry; if it repeats, contact support with the email_id. |
Other codes
1000 (Pending) marks an attempt that isn't finished. Results never carry it.
Codes 3005, 3006, 4014, 4018, 4020, 4022, 4027, 5004 and 6010 are reserved and aren't returned.
While Drop Cowboy provides tools to support compliance efforts, customers remain solely responsible for obtaining proper consent, maintaining opt-out lists, and complying with all federal and state telemarketing regulations. Consult with your legal counsel to ensure your specific use case and consent mechanisms comply with applicable laws.