Skip to main content

WhatsApp Status Codes

This reference documents all WhatsApp message statuses and error codes returned by the Exotel platform. Use these codes to track message delivery, diagnose failures, and implement automated error handling.

Message Delivery Statuses​

StatusDescriptionFinality
acceptedMessage accepted by Exotel for processingIntermediate
queuedMessage queued for delivery to WhatsAppIntermediate
sentMessage sent to WhatsApp serversIntermediate
deliveredMessage delivered to the recipient's deviceFinal (positive)
readRecipient opened and viewed the messageFinal (positive)
failedMessage delivery failedFinal (negative)

Status Flow​

accepted → queued → sent → delivered → read
↘ failed
note

The read status is only sent when the recipient has read receipts enabled. If read receipts are turned off, the last status you receive is delivered.

Error Code Categories​

RangeCategoryDescription
0-99AuthorizationAuthentication and permission errors
100-199Invalid RequestMalformed or incorrect request parameters
400-499Rate LimitingThroughput and rate limit errors
1000-1099Account IssuesAccount configuration or billing errors
2000-2099Template ErrorsTemplate-related failures
130xxxWhatsApp Cloud APIErrors from Meta's Cloud API
131xxxWhatsApp MessagingMessaging-specific errors from Meta

Authorization Errors (0-99)​

CodeTitleDescriptionResolution
0Auth ErrorAuthentication credentials are invalidVerify your API key and token
1API Key MissingNo API key provided in the requestInclude API key in request authentication
2Account SuspendedYour Exotel account is suspendedContact Exotel support

Invalid Request Errors (100-199)​

CodeTitleDescriptionResolution
100Invalid ParameterOne or more request parameters are invalidCheck all parameter values and formats
101Missing ParameterA required parameter is missingInclude all required fields in your request
102Invalid Phone FormatPhone number is not in E.164 formatUse format: +919876543210
103Invalid Content TypeRequest content type is not supportedUse Content-Type: application/json
104Invalid Message TypeUnsupported message type specifiedUse a valid message type (text, template, etc.)
105Invalid Media URLMedia URL is not accessible or invalidEnsure URL is HTTPS and publicly accessible

Rate Limiting Errors (400-499)​

CodeTitleDescriptionResolution
400Rate LimitAPI rate limit exceededReduce request frequency; implement backoff
401Throughput LimitMessage throughput limit exceededContact account manager for higher throughput
470Messaging LimitReached business messaging limit for the dayWait for the 24-hour window to roll over

Account Errors (1000-1099)​

CodeTitleDescriptionResolution
1000Insufficient BalanceAccount balance too low to send messagesRecharge your Exotel account
1001WhatsApp Not EnabledWhatsApp is not enabled on your accountContact Exotel to enable WhatsApp
1002Number Not RegisteredPhone number not registered for WhatsApp BusinessRegister the number in the Exotel dashboard
1003WABA Not ConnectedWhatsApp Business Account not connectedComplete WABA setup in the dashboard

Template Errors (2000-2099)​

CodeTitleDescriptionResolution
2000Template Not FoundTemplate name does not existVerify template name (case-sensitive, lowercase)
2001Template Not ApprovedTemplate is not yet approved by MetaWait for approval or use a different template
2002Template PausedTemplate is paused due to quality issuesImprove quality; see Quality Rating
2003Template DisabledTemplate permanently disabledCreate a new template
2004Parameter MismatchNumber of parameters does not match templateProvide the correct number of parameters
2005Invalid LanguageTemplate language code is incorrectUse the correct language code (e.g., en, hi)
2006Invalid CategoryTemplate category mismatchVerify the template category

WhatsApp Cloud API Errors (130xxx)​

These errors originate from Meta's WhatsApp Cloud API:

CodeTitleDescriptionResolution
130429Rate Limit HitToo many requests to WhatsApp APIImplement exponential backoff
130472Experiment Rate LimitExceeded experiment rate limitWait and retry
130497Scheduling ErrorMessage scheduling failedRetry the request

WhatsApp Messaging Errors (131xxx)​

CodeTitleDescriptionResolution
131000Generic ErrorUnknown error from WhatsAppRetry; contact support if persistent
131005Permission DeniedNo permission to send this message typeCheck WABA permissions
131008Required Parameter MissingMissing parameter in the messageCheck all required fields
131009Invalid ParameterA parameter value is not validValidate parameter values
131016Service UnavailableWhatsApp service temporarily unavailableRetry after a few minutes
131021Recipient Not on WhatsAppThe recipient number is not on WhatsAppVerify the recipient has WhatsApp installed
131026Message UndeliverableCannot deliver message to this numberCheck if the number is valid and active
131042Business EligibilityBusiness is not eligible for this message typeReview Meta business policies
131045Incorrect CertificateSSL certificate issueVerify your webhook HTTPS configuration
131047Re-engagement MessageSession expired (24+ hours since last reply)Use a template message instead
131048Spam Rate LimitSent too many messages flagged as spamReduce volume; improve content quality
131051Unsupported Message TypeMessage type not supportedUse a supported message type
131052Media Download ErrorCould not download the media from your URLVerify media URL accessibility
131053Media Upload ErrorError uploading media to WhatsAppRe-upload or use a different media file

Handling Errors Programmatically​

function handleWhatsAppError(error) {
const { code, title, detail } = error;

// Authorization errors - fix credentials
if (code < 100) {
logCritical('Auth error', error);
return { retry: false, action: 'fix_credentials' };
}

// Invalid request - fix parameters
if (code >= 100 && code < 200) {
logError('Invalid request', error);
return { retry: false, action: 'fix_parameters' };
}

// Rate limits - retry with backoff
if (code >= 400 && code < 500) {
logWarning('Rate limited', error);
return { retry: true, delay: 60000 }; // Wait 1 minute
}

// Account issues - non-retryable
if (code >= 1000 && code < 1100) {
logCritical('Account issue', error);
return { retry: false, action: 'check_account' };
}

// Template errors - non-retryable
if (code >= 2000 && code < 2100) {
logError('Template error', error);
return { retry: false, action: 'fix_template' };
}

// WhatsApp API errors - some retryable
if (code === 131016 || code === 130429) {
return { retry: true, delay: 30000 }; // Retry after 30 seconds
}

// Session expired - use template
if (code === 131047) {
return { retry: false, action: 'send_template' };
}

// Default - log and investigate
logError('Unknown error', error);
return { retry: false, action: 'investigate' };
}

Retryable vs. Non-Retryable Errors​

CategoryRetryableAction
Auth errors (0-99)NoFix credentials
Invalid request (100-199)NoFix parameters
Rate limits (400-499)YesExponential backoff
Account issues (1000-1099)NoFix account configuration
Template errors (2000-2099)NoFix or recreate template
Service unavailable (131016)YesRetry after 30 seconds
Rate limited (130429)YesRetry after 60 seconds
Session expired (131047)NoUse template message
Not on WhatsApp (131021)NoVerify recipient
Spam rate limit (131048)YesWait, improve quality
tip

Implement a retry mechanism with exponential backoff for retryable errors. Start with a 30-second delay, then double it for each subsequent retry, up to a maximum of 5 minutes.

Monitoring and Alerting​

MetricAlert ThresholdAction
Failed message rate> 5%Investigate error codes
Auth errorsAny occurrenceCheck credential rotation
Template errorsAny occurrenceReview template configuration
Rate limit hits> 10 per hourOptimize sending rate
Session expired errors> 20% of sendsReview session management logic

Next Steps​