{"id":1864,"date":"2026-02-23T10:21:17","date_gmt":"2026-02-23T10:21:17","guid":{"rendered":"https:\/\/africala.net\/blog\/?p=1864"},"modified":"2026-02-24T06:49:28","modified_gmt":"2026-02-24T06:49:28","slug":"whatsapp-business-api-error-codes","status":"publish","type":"post","link":"https:\/\/africala.net\/blog\/whatsapp-business-api-error-codes\/","title":{"rendered":"WhatsApp Business API Error Codes (2026 Guide): Meaning, Fixes &#038; Best Practices"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">If you\u2019re building on the WhatsApp Cloud API, errors are not \u201crare incidents.\u201d They are part of the system design. <\/span><span style=\"font-weight: 400;\">Every time your backend sends a request to Meta\u2019s Graph API whether it\u2019s a template message, media upload, OTP delivery, or marketing campaign WhatsApp evaluates authentication, permissions, rate limits, template validity, user eligibility, billing status, quality signals, and policy compliance. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">If anything fails in that chain, the API responds with an error. Understanding<\/span><span style=\"font-weight: 400;\">\u00a0these errors properly is what separates stable production messaging infrastructure from unreliable deployments.<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-1869\" src=\"https:\/\/africala.net\/blog\/wp-content\/uploads\/2026\/02\/WhatsApp-Business-API-Error-Codes.jpg\" alt=\"whatsapp-business-api-error-codes\" width=\"1920\" height=\"1080\" srcset=\"https:\/\/africala.net\/blog\/wp-content\/uploads\/2026\/02\/WhatsApp-Business-API-Error-Codes.jpg 1920w, https:\/\/africala.net\/blog\/wp-content\/uploads\/2026\/02\/WhatsApp-Business-API-Error-Codes-300x169.jpg 300w, https:\/\/africala.net\/blog\/wp-content\/uploads\/2026\/02\/WhatsApp-Business-API-Error-Codes-1024x576.jpg 1024w, https:\/\/africala.net\/blog\/wp-content\/uploads\/2026\/02\/WhatsApp-Business-API-Error-Codes-768x432.jpg 768w, https:\/\/africala.net\/blog\/wp-content\/uploads\/2026\/02\/WhatsApp-Business-API-Error-Codes-1536x864.jpg 1536w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><span style=\"font-weight: 400;\">This guide breaks down:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">What WhatsApp API errors really are<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">How to read and interpret them correctly<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">All major WhatsApp Cloud API error codes (Updated Feb 9, 2025)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Synchronous vs asynchronous error handling<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Template, throttling, migration, and media errors explained<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Best practices to reduce failures in production<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Let\u2019s start.<\/span><\/p>\n<h2><b>What Are WhatsApp API Errors?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">The WhatsApp Cloud API is built on <a href=\"https:\/\/developers.facebook.com\/docs\/graph-api\/\" target=\"_blank\" rel=\"noopener\">Meta\u2019s Graph API<\/a>. That means all error handling follows Graph API response patterns.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">When your system makes a request like:<\/span><\/p>\n<blockquote><p><em><span style=\"font-weight: 400;\">POST \/v19.0\/&lt;PHONE_NUMBER_ID&gt;\/messages<\/span><\/em><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">Meta evaluates:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Is the access token valid?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Does the app have permission?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Is the phone number registered?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Is the template approved?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Are you within rate limits?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Is the user eligible?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Is the business account healthy?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Is billing active?<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">If something fails, the API returns an error object. Errors are returned in two ways:<\/span><\/p>\n<h3><b>Synchronous Errors (Immediate Response)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Returned directly in the Graph API response.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><em><span style=\"font-weight: 400;\"> Example: Invalid parameter, rate limit hit, expired token.<\/span><\/em><\/p>\n<h3><b>Asynchronous Errors (Webhook Based)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Returned via webhook callbacks.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">These appear in:<\/span><\/p>\n<blockquote><p><em><span style=\"font-weight: 400;\">entry.changes.value.errors<br \/>\n<\/span><\/em><em><span style=\"font-weight: 400;\">entry.changes.value.messages.errors<\/span><\/em><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">Even if your API call returned 200 OK, the message can still fail later and you\u2019ll receive the error via webhook. <\/span><span style=\"font-weight: 400;\">Production systems must monitor both.<\/span><\/p>\n<h2><b>How to Read a WhatsApp Error Response<\/b><\/h2>\n<p><i><span style=\"font-weight: 400;\">Example:<\/span><\/i><\/p>\n<blockquote><p><i><span style=\"font-weight: 400;\">{<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">&#8220;error&#8221;: {<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">\u00a0\u00a0&#8220;message&#8221;: &#8220;(#130429) Rate limit hit&#8221;,<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">\u00a0\u00a0&#8220;type&#8221;: &#8220;OAuthException&#8221;,<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">\u00a0\u00a0&#8220;code&#8221;: 130429,<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">\u00a0\u00a0&#8220;error_data&#8221;: {<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0&#8220;messaging_product&#8221;: &#8220;whatsapp&#8221;,<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0&#8220;details&#8221;: &#8220;Cloud API message throughput has been reached.&#8221;<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">\u00a0\u00a0},<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">\u00a0\u00a0&#8220;fbtrace_id&#8221;: &#8220;Az8or2yhqkZfEZ-_4Qn_Bam&#8221;<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">}<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">}<\/span><\/i><\/p><\/blockquote>\n<p><b>Key Rules<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Build logic around <\/span><span style=\"font-weight: 400;\">code<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Read <\/span><span style=\"font-weight: 400;\">error_data.details<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Do NOT rely on titles<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Do NOT rely on <\/span><span style=\"font-weight: 400;\">error_subcode<\/span><span style=\"font-weight: 400;\"> (deprecated)<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Always log <\/span><span style=\"font-weight: 400;\">fbtrace_id<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<\/ul>\n<h2><b>1. Authorization &amp; Authentication Errors<\/b><\/h2>\n<p>These errors occur when your application cannot properly authenticate with the WhatsApp Cloud API or lacks required permissions. Until resolved, no messages can be sent.<\/p>\n<table style=\"height: 185px;\" width=\"854\">\n<thead>\n<tr>\n<th>Code<\/th>\n<th>HTTP<\/th>\n<th>Meaning<\/th>\n<th>Common Cause<\/th>\n<th>Fix<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0<\/td>\n<td>401<\/td>\n<td>AuthException<\/td>\n<td>Expired or revoked token<\/td>\n<td>Generate new access token<\/td>\n<\/tr>\n<tr>\n<td>190<\/td>\n<td>401<\/td>\n<td>Access Token Expired<\/td>\n<td>Token expired<\/td>\n<td>Refresh token<\/td>\n<\/tr>\n<tr>\n<td>10<\/td>\n<td>403<\/td>\n<td>Permission Denied<\/td>\n<td>Missing scope \/ eligibility issue<\/td>\n<td>Verify permissions in Access Token Debugger<\/td>\n<\/tr>\n<tr>\n<td>200\u2013299<\/td>\n<td>403<\/td>\n<td>API Permission Issue<\/td>\n<td>Endpoint access missing<\/td>\n<td>Enable required permissions<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>2. Integrity &amp; Policy Enforcement Errors<\/b><\/h2>\n<p>These errors indicate account-level restrictions due to policy violations or regional messaging limitations. They require compliance review before messaging can resume.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Code<\/b><\/td>\n<td><b>HTTP<\/b><\/td>\n<td><b>Meaning<\/b><\/td>\n<td><b>Cause<\/b><\/td>\n<td><b>Fix<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">368<\/span><\/td>\n<td><span style=\"font-weight: 400;\">403<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Temporarily Blocked<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Policy violation<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Review policy enforcement<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">130497<\/span><\/td>\n<td><span style=\"font-weight: 400;\">403<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Country Restricted<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Messaging not allowed in region<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Verify allowed countries<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131031<\/span><\/td>\n<td><span style=\"font-weight: 400;\">403<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Account Locked<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Policy issue or PIN mismatch<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Use Health Status API<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>3. Throttling &amp; Rate Limit Errors<\/b><\/h2>\n<p>Rate limit errors occur when your system exceeds allowed messaging throughput or API call limits. These are common in high-volume production environments.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Code<\/b><\/td>\n<td><b>HTTP<\/b><\/td>\n<td><b>Meaning<\/b><\/td>\n<td><b>Cause<\/b><\/td>\n<td><b>Fix<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">4<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">API Too Many Calls<\/span><\/td>\n<td><span style=\"font-weight: 400;\">App-level rate limit<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Reduce API frequency<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">80007<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">WABA Rate Limit<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Business-level limit reached<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Slow message sending<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">130429<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Rate Limit Hit<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Throughput exceeded<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Implement exponential backoff<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131048<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Spam Rate Limit<\/span><\/td>\n<td><span style=\"font-weight: 400;\">High block rate \/ low quality<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Improve template quality<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131056<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Pair Rate Limit<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Too many messages to same user<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Wait before retry<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">133016<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Registration Limit<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Too many attempts<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Wait until unblocked<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>4. Template Creation Errors (2388xxx Series)<\/b><\/h2>\n<p>These errors occur during template submission or approval \u2014 before any message is actually sent. They are usually formatting or policy-related issues.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Code<\/b><\/td>\n<td><b>Meaning<\/b><\/td>\n<td><b>Cause<\/b><\/td>\n<td><b>Fix<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">2388040<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Character Limit Exceeded<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Field too long<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Reduce content length<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">2388047<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Header Format Incorrect<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Invalid header format<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Correct syntax<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">2388072<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Body Format Incorrect<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Formatting violation<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Adjust formatting<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">2388073<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Footer Format Incorrect<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Footer issue<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Fix footer<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">2388293<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Parameters Ratio Exceeded<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Too many variables<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Reduce placeholders<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">2388299<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Leading\/Trailing Variable<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Variable at start\/end<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Reposition variable<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>5. Template Sending Errors (132000\u2013132016)<\/b><\/h2>\n<p>These are among the most common production errors. They occur when sending template messages outside the 24-hour window or when template parameters do not match the approved configuration.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Code<\/b><\/td>\n<td><b>HTTP<\/b><\/td>\n<td><b>Meaning<\/b><\/td>\n<td><b>Cause<\/b><\/td>\n<td><b>Fix<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">132000<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Param Count Mismatch<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Variables count incorrect<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Match template exactly<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">132001<\/span><\/td>\n<td><span style=\"font-weight: 400;\">404<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Template Not Found<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Wrong name\/language<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Verify template<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">132005<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Hydrated Text Too Long<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Dynamic values too long<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Shorten variables<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">132007<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Policy Violated<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Disallowed content<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Revise template<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">132012<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Param Format Mismatch<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Wrong parameter type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Fix parameter format<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">132015<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Template Paused<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Low quality rating<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Improve &amp; resubmit<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">132016<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Template Disabled<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Repeated violations<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Create new template<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">132068<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Flow Blocked<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Flow config issue<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Correct flow<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">132069<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Flow Throttled<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Too many flow sends<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Slow down<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>6. Conversation Window Errors<\/b><\/h2>\n<p>These errors are triggered when messaging rules related to the 24-hour customer service window are violated.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Code<\/b><\/td>\n<td><b>HTTP<\/b><\/td>\n<td><b>Meaning<\/b><\/td>\n<td><b>Cause<\/b><\/td>\n<td><b>Fix<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131047<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">24-Hour Window Closed<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Outside conversation window<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Send template message<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131049<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Meta Not Delivered<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Marketing limits<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Wait 24 hours<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131050<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">User Opted Out<\/span><\/td>\n<td><span style=\"font-weight: 400;\">User stopped marketing<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Do not retry<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>7. Media Errors<\/b><\/h2>\n<p>Media-related failures occur when uploading or downloading images, videos, or documents through the API.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Code<\/b><\/td>\n<td><b>HTTP<\/b><\/td>\n<td><b>Meaning<\/b><\/td>\n<td><b>Cause<\/b><\/td>\n<td><b>Fix<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131052<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Media Download Error<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Cannot download user media<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Ask user to resend<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131053<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Media Upload Error<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Unsupported MIME type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Validate file type<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>8. Phone Registration &amp; Migration Errors<\/b><\/h2>\n<p>These errors occur during onboarding, number registration, or WABA migration processes.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Code<\/b><\/td>\n<td><b>Meaning<\/b><\/td>\n<td><b>Cause<\/b><\/td>\n<td><b>Fix<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">133010<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Not Registered<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Phone not onboarded<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Register number<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">133005<\/span><\/td>\n<td><span style=\"font-weight: 400;\">PIN Mismatch<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Incorrect 2FA PIN<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Reset PIN<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">133008\/133009<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Too Many PIN Attempts<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Rapid retries<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Wait &amp; retry<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">2388103<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Migration Failed<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Account mismatch<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Align WABA setup<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>9. Synchronization Errors<\/b><\/h2>\n<p>Synchronization errors occur when onboarding flows exceed allowed API usage or time windows.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Code<\/b><\/td>\n<td><b>Meaning<\/b><\/td>\n<td><b>Cause<\/b><\/td>\n<td><b>Fix<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">2593107<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Sync Limit Exceeded<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Called too many times<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Offboard &amp; re-onboard<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">2593108<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Sync Outside Window<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Beyond 24 hours<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Re-onboard<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>10. WhatsApp Business Account Errors<\/b><\/h2>\n<p>These errors relate to billing, eligibility, or temporary account state restrictions.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Code<\/b><\/td>\n<td><b>HTTP<\/b><\/td>\n<td><b>Meaning<\/b><\/td>\n<td><b>Cause<\/b><\/td>\n<td><b>Fix<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131042<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Payment Eligibility Issue<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Billing inactive<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Set up credit line<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131057<\/span><\/td>\n<td><span style=\"font-weight: 400;\">500<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Maintenance Mode<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Throughput upgrade<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Retry later<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>11. Other Core Errors<\/b><\/h2>\n<p>These are general request validation or delivery-related errors.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Code<\/b><\/td>\n<td><b>HTTP<\/b><\/td>\n<td><b>Meaning<\/b><\/td>\n<td><b>Cause<\/b><\/td>\n<td><b>Fix<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">100<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Invalid Parameter<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Misspelled field<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Validate request<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131008<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required Param Missing<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Missing field<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Add parameter<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131021<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Recipient Same as Sender<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Same number used<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Change recipient<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131026<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Message Undeliverable<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Not WA user \/ outdated app<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Ask user to update<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131000<\/span><\/td>\n<td><span style=\"font-weight: 400;\">500<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Unknown Error<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Internal failure<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Retry &amp; escalate<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>12. Marketing Messages API Additional Codes<\/b><\/h2>\n<p>These apply specifically to the Marketing Messages API, which enforces stricter template category rules.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Code<\/b><\/td>\n<td><b>HTTP<\/b><\/td>\n<td><b>Meaning<\/b><\/td>\n<td><b>Cause<\/b><\/td>\n<td><b>Fix<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">131055<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Method Not Allowed<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Non-marketing template<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Use marketing template<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">134100<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Only Marketing Supported<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Wrong category<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Switch template<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">134101<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Template Syncing<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Newly created template<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Wait 10 mins<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">134102<\/span><\/td>\n<td><span style=\"font-weight: 400;\">500<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Template Unavailable<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Sync\/eligibility issue<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Check onboarding<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">132018<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Template Validation Error<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Param issue<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Fix parameters<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">1752041<\/span><\/td>\n<td><span style=\"font-weight: 400;\">400<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Duplicate Onboarding<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Already invited<\/span><\/td>\n<td><span style=\"font-weight: 400;\">No action required<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>Best Practices to Reduce WhatsApp API Errors<\/b><\/h2>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Build logic around <\/span><span style=\"font-weight: 400;\">code + details<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Implement exponential backoff (130429, 131056, 4)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Validate E.164 phone numbers<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Confirm template approval before sending<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Log every response (code, details, fbtrace_id)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Monitor webhooks continuously<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Maintain high template quality<\/span><\/li>\n<\/ul>\n<h2><b>Production Debugging Flow<\/b><\/h2>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Check HTTP status<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Check numeric <\/span><span style=\"font-weight: 400;\">code<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Read <\/span><span style=\"font-weight: 400;\">error_data.details<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Confirm conversation window<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Confirm template approval<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Check rate limits<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Verify billing<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Retry only if safe<\/span><\/li>\n<\/ol>\n<h2><b>Scale WhatsApp Messaging the Right Way<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">If you&#8217;re deploying messaging at scale and want:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Intelligent retry systems<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Template lifecycle monitoring<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Rate limit management<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Quality optimization<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Multi-country WhatsApp support<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Africala provides production-ready <\/span><b>WhatsApp Business API integration<\/b><span style=\"font-weight: 400;\">, advanced <\/span><b>WhatsApp Chatbot automation<\/b><span style=\"font-weight: 400;\">, and reliable <\/span><b>WhatsApp notification infrastructure<\/b><span style=\"font-weight: 400;\"> across 20+ African countries. Explore our <\/span><a href=\"https:\/\/africala.net\/products\/whatsapp-api\/\"><b>WhatsApp Business API solutions<\/b><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you\u2019re building on the WhatsApp Cloud API, errors are not \u201crare incidents.\u201d They are part of the system design. Every time your backend sends a request to Meta\u2019s Graph API whether it\u2019s a template message, media upload, OTP delivery, or marketing campaign WhatsApp evaluates authentication, permissions, rate limits, template validity, user eligibility, billing status, [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":1870,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[],"class_list":["post-1864","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-whatsapp"],"_links":{"self":[{"href":"https:\/\/africala.net\/blog\/wp-json\/wp\/v2\/posts\/1864","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/africala.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/africala.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/africala.net\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/africala.net\/blog\/wp-json\/wp\/v2\/comments?post=1864"}],"version-history":[{"count":6,"href":"https:\/\/africala.net\/blog\/wp-json\/wp\/v2\/posts\/1864\/revisions"}],"predecessor-version":[{"id":1872,"href":"https:\/\/africala.net\/blog\/wp-json\/wp\/v2\/posts\/1864\/revisions\/1872"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/africala.net\/blog\/wp-json\/wp\/v2\/media\/1870"}],"wp:attachment":[{"href":"https:\/\/africala.net\/blog\/wp-json\/wp\/v2\/media?parent=1864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/africala.net\/blog\/wp-json\/wp\/v2\/categories?post=1864"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/africala.net\/blog\/wp-json\/wp\/v2\/tags?post=1864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}