Skip to main content

Error Code Dictionary

Centralized reference for all HTTP and application-level error codes across Exotel APIs.

HTTP Status Codes

These standard HTTP codes apply to all Exotel API endpoints.

CodeStatusDescriptionHow to Fix
200OKRequest succeeded
202AcceptedRequest accepted for processing (async)Check status via callback or polling
400Bad RequestMissing or invalid parametersCheck required fields and parameter formats
401UnauthorizedInvalid API key or tokenVerify your API key and token in the dashboard
402Payment RequiredPlan limit exceeded or insufficient balanceTop up your account or upgrade your plan
403ForbiddenAccount suspended or insufficient permissionsContact support to check account status
404Not FoundResource does not existVerify the resource SID/ID in the URL
409ConflictResource state conflictCheck the resource's current state before retrying
429Too Many RequestsRate limit exceededImplement exponential backoff; max 200 req/min for most endpoints
500Internal Server ErrorServer-side failureRetry with exponential backoff
502Bad GatewayUpstream service unavailableRetry after a few seconds
503Service UnavailableService temporarily downCheck status.exotel.com and retry later

Voice API Error Codes

Call Status Values

StatusDescription
queuedCall is waiting to be sent to the operator
ringingPhone is ringing
in-progressCall is active
completedCall ended normally
failedCall could not be completed
busyCalled party returned a busy signal
no-answerCalled party did not answer within the timeout
canceledCall was canceled before being answered

Voice v2 (CCM) Error Codes

HTTP CodeError CodeDescriptionHow to Fix
4011010Authentication failedVerify API key and token
40410731User (agent) not foundAdd the agent as a co-worker in the dashboard
4091012User device unavailable (OFF)Ask agent to turn on their device
40910705User device unverifiedAgent must verify their device in the dashboard
40910706User device busyAgent is on another call; wait and retry
40410716Virtual number not foundCheck the ExoPhone SID or number format
5001100Internal server errorRetry the request

SMS Error Codes

Delivery Status Codes

Intermediate Statuses

CodeStatusDescription
21010queuedSMS is queued for sending
21015sendingSMS is being sent to the operator
21020submittedSMS has been submitted to the operator

Success Statuses

CodeStatusDescription
20005DELIVERED_TO_HANDSETSMS delivered to the recipient's phone
20006DELIVERED_TO_OPERATORSMS delivered to the operator (handset confirmation pending)

Failure Statuses

CodeStatusDescriptionHow to Fix
23005FAILED_DNDRecipient is on Do Not Disturb registryUse transactional route or remove DND
23010FAILED_INVALID_NUMBERPhone number is invalidVerify the number format (E.164 recommended)
23015FAILED_SPAMMessage flagged as spamReview message content; avoid spam-like patterns
23020FAILED_BLACKLISTEDRecipient number is blacklistedContact support to review blacklist
23072FAILED_INVALID_SENDERSender ID not approvedRegister your Sender ID in the dashboard
23080FAILED_DLT_SCRUBBINGBlocked by DLT scrubbingEnsure DLT registration is complete
23081FAILED_DLT_ENTITYDLT entity ID invalidRegister/verify your DLT entity ID
23082FAILED_DLT_TEMPLATEDLT template mismatchEnsure template ID matches message content
23083FAILED_DLT_CONSENTDLT consent not foundRegister consent for the recipient number

SMS Status Flow

queued → sending → submitted → DELIVERED_TO_OPERATOR → DELIVERED_TO_HANDSET
→ FAILED_* (any failure status)
note

DLT-related failures (23080-23083) are specific to India and occur when DLT registration, template, or consent requirements are not met.


WhatsApp Error Codes

Delivery Statuses

CodeStatusDescription
30001SentMessage sent to WhatsApp servers
30002DeliveredMessage delivered to recipient's device
30003SeenRecipient opened/read the message

Error Statuses

CodeDescriptionHow to Fix
30004Rate limit exceededReduce message frequency; implement backoff
30005Unknown errorRetry the request
30006Message expired (TTL exceeded)Increase TTL or send again
30007Message blocked by WhatsAppReview message content for policy violations
30008Invalid phone numberVerify the number is valid and on WhatsApp
30009Media download failedCheck the media URL is accessible and valid
30010Invalid template nameVerify template name matches approved template
30011Template parameter mismatchEnsure parameters match template placeholders
30012Template not approvedSubmit template for approval first
30013Recipient not on WhatsAppFall back to SMS for this number
30014Message too longReduce message length
30020Account not registered for WhatsAppComplete WhatsApp Business setup
30030Business account restrictedContact Meta/WhatsApp support
30040Recipient blocked your numberCannot message this recipient
30041Spam detectedReview message content and sending patterns

WhatsApp Payment Statuses (India Only)

CodeStatusDescription
30050Payment SuccessPayment completed by recipient
30049Payment PendingPayment initiated but not completed

Contact Center Error Codes

Contact Upload Errors

Error CodeDescriptionHow to Fix
INVALID_PHONEPhone number format is invalidUse E.164 format
DUPLICATE_ENTRYContact already exists in the listRemove duplicates from CSV
MISSING_REQUIREDRequired field is emptyFill in all mandatory columns
INVALID_FORMATField value format is wrongCheck data types (string, number, date)
QUOTA_EXCEEDEDContact list limit reachedDelete old contacts or upgrade plan
INVALID_EMAILEmail address format is invalidFix the email format

Rate Limits

APIRate LimitNotes
SMS API200 requests/minPer account
Voice v1 API200 requests/minPer account
Voice v2 (CCM) API200 requests/minPer account
WhatsApp APIVaries by tierBased on WhatsApp Business API tier
ExoPhone DetailsThrottledExcessive requests return HTTP 429
Best Practices for Rate Limits
  1. Implement exponential backoff when you receive HTTP 429
  2. Use bulk endpoints (Bulk SMS, Campaign APIs) for high-volume operations
  3. Cache API responses where possible (e.g., ExoPhone details, number metadata)
  4. Use webhooks/callbacks instead of polling for status updates