WhatsApp Cloud API reference

Every WhatsApp Cloud API limit, in one table

82documented limits
11groups
2026-08-20last verified

Last verified against Meta for Developers - Cloud API overview, messaging limits, templates, media and pricing

Four different things get called a "WhatsApp API limit", and most production incidents come from confusing one with another. The messaging limit (tier) caps how many unique customers you can open business-initiated conversations with in a moving 24 hours, and it is set per business portfolio, not per phone number. Throughput caps how many messages per second a single business phone number can move: 80 mps by default, up to 1,000 mps after an automatic upgrade. API rate limits cap calls per hour per app and WABA, with a separate pair rate limit on how fast you may message one individual. Finally, content caps bound what a single message may contain: characters, buttons, list rows, media bytes. Each fails with a different error code and needs a different fix.

Tier upgrades are mechanical, not discretionary. Verify your business, or send 2,000 delivered high-quality template messages to unique users within a 30-day period, to reach the 2,000 tier; above that, Meta moves you up one tier within 6 hours whenever you have used at least half of your current limit in the past 7 days while keeping quality high. There is nothing to apply for: usage plus quality is the application. If your BSP quotes numbers different from this page, both can be right, because solution providers layer their own queueing, per-account throttles and commercial tiers on top of Meta's platform limits, and some published figures predate Cloud API defaults. The values below are Meta's own, the floor every BSP number sits on.

One date matters more than any number here: on 1 October 2026, free-form service messages inside the 24-hour window become billable per delivered message, turning the window from a formatting rule into a billing boundary. Model the impact with the WhatsApp API cost calculator. Values marked "see docs" are ones Meta describes qualitatively rather than as fixed numbers. Everything here was checked against Meta's documentation on the date shown above; treat the source links as the final word. For the error codes these limits throw when exceeded, see the companion directory at /errors/whatsapp.

Jump to: Business-initiated messaging tiers · Throughput (messages per second) · Cloud API rate limits (calls per hour) · Customer service window and free entry points · Message template limits · Message content limits (text, interactive, special types) · Media types and size limits · Quality rating and phone number status · Phone numbers, test numbers and registration · Webhook delivery and retries · Pricing model (summary, no per-country rates)

Business-initiated messaging tiers

The messaging limit is the number of unique WhatsApp user phone numbers you can deliver business-initiated (template) messages to in a moving 24-hour period, counting only messages sent outside an open customer service window. It is calculated at the business portfolio level and shared by every business phone number in the portfolio, so adding a second number adds nothing. When you hit the ceiling, further business-initiated sends fail and WhatsApp Manager shows the number as Restricted until the moving window rolls past enough earlier sends; quality-based throttling surfaces separately as 131048, and per-user marketing caps as 131049. Operational tip: count unique recipients per 24 hours on your own side and cut campaigns off at roughly 90% of the tier, leaving headroom for transactional sends. The full failure catalogue is at /blog/whatsapp-api-error-codes.

WhatLimitNotesSource
Unverified business (starting tier)250 unique customers / rolling 24hApplies to every new portfolio until it is verified or qualifies by sending volume. Reported as TIER_250 in the API.docs ↗
Tier 2 (TIER_2K)2,000 unique customers / rolling 24hReached by verifying the business, via partner-led verification, or by sending 2,000 delivered messages outside customer service windows to unique users within a 30-day moving period using high-quality templates.docs ↗
Tier 3 (TIER_10K)10,000 unique customers / rolling 24hAutomatic once eligible (see upgrade criteria row).docs ↗
Tier 4 (TIER_100K)100,000 unique customers / rolling 24hAutomatic once eligible. Also one of the prerequisites for throughput upgrades beyond 80 mps.docs ↗
Unlimited (TIER_UNLIMITED)No cap on unique customers per 24hAutomatic once eligible. Required for a business phone number to qualify for the 1,000 mps throughput upgrade.docs ↗
Scope of the limitBusiness portfolio level, shared by all phone numbersMeta: messaging limits are calculated and set at the business portfolio level and are shared by all business phone numbers within a portfolio. A single number can exhaust the whole portfolio's capacity.docs ↗
What is countedUnique user phone numbers messaged outside a customer service windowReplies inside an open 24-hour window and multiple messages to the same user do not consume additional units.docs ↗
Automatic upgrade criteria (from 2,000 upward)Next tier within 6 hours once eligibleEligible when you send high-quality messages across all numbers and templates AND have used at least half of your current limit in the last 7 days. Meta: the portfolio's limit increases by one level within 6 hours.docs ↗
DowngradeOne tier down if quality stays LowPer the Help Center: if a Flagged number's quality has not recovered to Medium or High by the 7th day, status returns to Connected but the messaging limit decreases to the next level.docs ↗
How to check your current limitwhatsapp_business_manager_messaging_limit field; WhatsApp ManagerRequest the field via the WhatsApp Business Phone Number API, or view it under Account tools > Messaging limits in WhatsApp Manager. Changes arrive via the business_capability_update and account_alerts webhooks.docs ↗

Throughput (messages per second)

Throughput is the speed limit per business phone number, measured in messages per second and inclusive of inbound and outbound messages of all types. Exceed it and sends fail synchronously with 130429 Rate limit hit: the message never enters WhatsApp's pipeline, so there is nothing to wait for and you must re-send. Every Cloud API number starts at up to 80 mps and is upgraded automatically to as much as 1,000 mps once it qualifies; there is no application form. The first upgrade takes the number offline for up to a minute, during which sends return 131057 (maintenance mode). Operational tip: run outbound traffic through a token bucket set slightly below your current tier, and treat 130429 as a signal to drain the queue more slowly rather than retry immediately.

WhatLimitNotesSource
Default throughputUp to 80 messages per second per business phone numberInclusive of inbound and outbound messages and all message types.docs ↗
Upgraded throughputUp to 1,000 messages per second by automatic upgradeNo request needed. Once upgraded, the number is automatically upgraded for any future throughput increases with no downtime.docs ↗
WhatsApp Business app numbers (coexistence)Fixed 20 messages per secondNumbers connected through the WhatsApp Business app are not eligible for upgrades.docs ↗
Upgrade eligibilityUnlimited messaging limit + 100K unique users in a moving 24h + quality score YELLOW or higherAll three conditions must hold for the business phone number.docs ↗
Upgrade downtimeUp to 1 minuteDuring the upgrade the number is not usable and sends return 131057 (maintenance mode). A business_capability_update webhook with event THROUGHPUT_UPGRADE confirms completion.docs ↗
Error when exceeded130429 Rate limit hitRetry with backoff and pace sends below the limit. Media sent by upload (media ID) rather than link performs better at high throughput.docs ↗

Cloud API rate limits (calls per hour)

Separate from messaging tiers and throughput, Meta caps how many API requests an app may make against a WABA per hour. These ceilings mostly bite management and read traffic — template CRUD, phone number reads, media fetches — rather than message sends. Exceeding the app-level budget returns error 4; the WABA-level budget returns 80007; both clear on their own, so exponential backoff is the entire fix. The pair rate limit is different in kind: it throttles how fast one business number may message one individual and fails with 131056, typically when a bot loops or an agent pastes a long script as many separate sends. Operational tip: batch consecutive lines addressed to the same user into a single message body — it avoids 131056 and reads better on the customer's screen.

WhatLimitNotesSource
Default per app per WABA200 requests per hourApplies to Cloud API endpoints for a WABA with no registered phone number.docs ↗
Active WABA (at least one registered number)5,000 requests per hour per app per active WABAThe working limit for most production integrations. Covers WABA metadata, assigned users, phone numbers, message templates and subscribed apps endpoints.docs ↗
Credit Line API5,000 requests per hourListed separately in the overview.docs ↗
Pair rate limit (one number to one user)1 message every 6 seconds (about 10 per minute, 600 per hour)Up to 45 messages may be sent in a 6-second burst, but the burst borrows from future quota; a burst of 20 requires roughly a 2-minute wait before sending more to that user. Exceeding it returns 131056.docs ↗
Registration endpoint10 requests per business number in a 72-hour moving windowDeregistration has the same limit. Exceeding either returns 133016.docs ↗
Template creation100 templates per WABA per hourMeta: you can create a maximum of 100 templates in a WhatsApp Business Account per hour.docs ↗
WhatsApp Flow in throttled state10 messages per hour using that FlowApplies only while the Flow is throttled; exceeding it returns 132069.docs ↗
429 / error behaviourError 4 (app), 80007 (WABA), 130429 (throughput)Meta advises checking the Application Rate Limit panel in App Dashboard for code 4, then trying again later or reducing request frequency. Branch on the error code rather than the HTTP status.docs ↗

Customer service window and free entry points

Whether you may send free-form text or must use an approved template depends on the customer service window. It opens when a user messages or calls your business number and lasts 24 hours from their latest message or call, resetting every time. Outside it, a free-form send fails with 131047 Re-engagement message and only templates go through. Conversations that begin from a Click to WhatsApp ad or a Facebook Page call-to-action button open a longer 72-hour free entry point during which every message type is free. The window is also becoming a billing boundary: from 1 October 2026 Meta bills service messages inside it per delivered message — see the October 2026 billing change and model your exposure with the cost calculator. Operational tip: store the timestamp of each inbound message and compute window state locally instead of discovering it via 131047.

WhatLimitNotesSource
Customer service window24 hours from the user's most recent message or callMeta: if the user messages or calls you again before the timer expires, the timer resets to 24 hours. Inside the window you may send service (free-form) messages without pre-approval.docs ↗
Outside the windowTemplate messages onlySending a non-template message returns 131047 Re-engagement message. A reply from the user reopens the window.docs ↗
Free entry point (FEP) window72 hoursOpens when you reply within 24 hours to a user who messaged you from a Click to WhatsApp Ad or a Facebook Page call-to-action button. Any message type to that user, templates included, is free of charge for the 72 hours.docs ↗
Per-user marketing template limitsSee docs (not a fixed published number)Meta caps how many marketing templates a user receives across businesses in a period; when reached your send fails with 131049. Wait at least 24 hours before retrying that user.docs ↗

Message template limits

Templates are the only message type allowed outside the customer service window, and they carry the most detailed limits: how many a WABA can hold, how long each component can be, how many buttons of each kind are allowed, and how variables may be placed. Getting a limit wrong costs a review cycle — creation is rejected outright (error 2388040 for oversized components), and at send time hydrated text that exceeds the body limit fails with 132005. Meta also paces some marketing templates while it gathers early quality signals, so a healthy template can deliver slowly at first. Operational tip: lint templates before submission with the WhatsApp template checker, and if one is rejected work through the rejection playbook before resubmitting — repeated rejections feed the same quality signals that pause templates.

WhatLimitNotesSource
Templates per WABA (unverified portfolio)250 message templatesMeta: if a parent business portfolio is unverified, each of its WhatsApp Business Accounts is limited to 250 message templates. Exceeding it returns 2388019.docs ↗
Templates per WABA (verified, approved display name)6,000 templatesMeta: verified portfolios with approved display names can have up to 6,000 templates per WABA.docs ↗
Template name512 characters max; lowercase alphanumeric and underscoresNames are case-sensitive identifiers used together with the language code when sending.docs ↗
Template creation rate100 templates per WABA per hourdocs ↗
Review timeUp to 24 hoursMeta: review can take up to 24 hours while the template is in review status.docs ↗
Template pacing (marketing)See docs (not a fixed published number)Meta paces delivery of certain marketing templates while early recipient feedback is gathered; a template with poor early feedback can be paused. Described qualitatively in the template documentation.docs ↗
Header text60 characters; supports 1 parameterHeader may instead be image, video, document, or location; only the body component is required.docs ↗
Body1,024 charactersAccepts multiple parameters. Limit applies to the hydrated text as well (132005 at send time).docs ↗
Footer60 charactersdocs ↗
Button text25 charactersApplies to quick reply, URL, phone number and copy code buttons.docs ↗
Quick reply buttonsUp to 10 per templatedocs ↗
URL (call-to-action) buttonsUp to 2; URL max 2,000 characters; 1 variable appended to the enddocs ↗
Phone number button1; number max 20 charactersdocs ↗
Copy code button1; code max 20 charactersdocs ↗
Total buttonsUp to 10 button components in combinationdocs ↗
Variables (parameters)Examples required for every parameter; no leading/trailing variables; variable-to-words ratio cappedCreation errors: 2388299 for leading/trailing parameters, 2388293 when the parameters-to-words ratio is exceeded. Parameter values must not contain newlines, tabs or more than four consecutive spaces (132007 at send time).docs ↗

Message content limits (text, interactive, special types)

Free-form messages inside the customer service window have their own ceilings, and they are checked synchronously: an oversized body, a malformed field or too many buttons comes back as 100 Invalid parameter or 131009 immediately, not as a failed status later. Interactive messages are the most constrained, and their numbers differ from template buttons — a reply-button message allows three 20-character buttons while a template allows ten 25-character quick replies — so keep two validation tables. This section also covers the specialised types: contacts, location, reactions, address messages, product messages and typing indicators, each with quirks of its own (a reaction to a message older than 30 days is silently dropped with 131009, for instance). Operational tip: enforce lengths and counts in your own code before calling the API, since synchronous 4xx failures still burn rate-limit budget; the caps here are the ones a WhatsApp chatbot flow builder has to respect at design time.

WhatLimitNotesSource
Text message body4,096 charactersdocs ↗
Media caption (image, video, document)1,024 charactersdocs ↗
Interactive reply buttonsUp to 3 buttons; title 20 characters; id 256 charactersTitles must be unique within the message. Body 1,024 characters, footer 60 characters. Header may be text, image, video or document.docs ↗
Interactive list messageUp to 10 sections and 10 rows total; row title 24, row description 72, section title 24, button text 20Header text 60 characters, body 4,096 characters, footer 60 characters, row ID 200 characters. At least one row per section.docs ↗
Contacts messageUp to 257 contacts per messageMeta recommends sending far fewer for usability and negative-feedback reasons. Only formatted_name is required per contact; other metadata (addresses, birthdays, emails) may not render on the recipient's device.docs ↗
Location messageLatitude and longitude required, in decimal degreesName and address are optional strings with no documented character limits.docs ↗
Reaction messageTarget message must be 30 days old or newer, not deleted, and not itself a reactionOtherwise the reaction is not delivered and a messages webhook returns 131009. Reactions trigger only a sent status webhook, never delivered or read. The emoji field accepts a literal emoji or its Unicode escape sequence.docs ↗
Address message availabilityIndia only (business and recipient)Meta: this feature is only available for businesses based in India and their India customers. in_pin_code field max length 6; recipient must have a valid Indian phone number.docs ↗
Multi-product messageUp to 30 products organized into sectionsCustomers can add up to 99 units of each single catalog item to a cart; there is no limit on the number of distinct items in a cart.docs ↗
Typing indicatorDisplays until you respond or for 25 seconds, whichever comes firstRequires the inbound message ID, and the same request marks that message as read. Meta: only display a typing indicator if you are going to respond.docs ↗

Media types and size limits

Each media category has its own size ceiling and accepted MIME types, and the platform checks the real type of the bytes, not the file extension — a renamed file fails anyway. Unsupported types fail with 131051, and uploads Meta cannot process fail with 131053 media upload error; oversized files fail the same way. Uploading media to Meta first and sending by media ID is faster and more reliable at high throughput than sending by link, and uploaded media is stored encrypted for 30 days. Operational tip: validate size and MIME type locally, transcode video to H.264/AAC and OGG audio to mono OPUS before upload, and cache media IDs keyed by content hash so repeated campaigns reuse an upload instead of re-uploading the same asset — remembering the ID itself expires after 30 days.

WhatLimitNotesSource
Image5 MB; JPEG (.jpeg) and PNG (.png)Must be 8-bit, RGB or RGBA.docs ↗
Video16 MB; MP4 (.mp4) and 3GPP (.3gp)H.264 video codec and AAC audio codec.docs ↗
Audio16 MB; AAC (.aac), AMR (.amr), MP3 (.mp3), MP4 audio (.m4a), OGG (.ogg)OGG requires the OPUS codec with mono input.docs ↗
Document100 MB; .txt, .xls/.xlsx, .doc/.docx, .ppt/.pptx, .pdfdocs ↗
Sticker100 KB static, 500 KB animated; WebP (.webp)docs ↗
Maximum upload size100 MBMeta: the maximum supported file size for media messages on Cloud API is 100MB.docs ↗
Media ID validity30 days (API-returned IDs); 7 days (IDs in webhooks)Meta: all media files sent through this API are encrypted and persist for 30 days. Re-upload before expiry if you reuse assets.docs ↗
Media download URL validity5 minutesFetch the URL with your access token in the Authorization header promptly after retrieving it.docs ↗

Quality rating and phone number status

Each business phone number carries a quality rating based on recent recipient feedback — blocks, reports and the reasons users give when blocking — plus a status that reflects whether it can currently send. Quality is the leading indicator for almost every other limit on this page: it drives template pauses (132015, escalating to 132016 when a template is disabled permanently), quality-based send throttling (131048), messaging-tier downgrades and throughput-upgrade eligibility. The practical consequence of ignoring it is a shrinking ceiling everywhere at once. Operational tip: subscribe to the phone number quality webhooks and alert on any transition out of GREEN, then slow marketing volume immediately — recovery to Medium or High within 7 days keeps your current tier, while a full week at Low costs you one.

WhatLimitNotesSource
Quality rating valuesHigh (GREEN), Medium (YELLOW), Low (RED)Based on feedback from messages received in recent days, including blocks and the reasons users give. NA is shown when there is not enough data.docs ↗
Status: ConnectedCan send within the current messaging limitRequired status for sending and receiving via the API.docs ↗
Status: FlaggedSet when quality reaches LowIf quality returns to Medium or High within 7 days, status returns to Connected with no change in limit. If not, status returns to Connected on the 7th day but the messaging limit decreases one tier.docs ↗
Status: RestrictedSet when you hit your messaging limit, regardless of qualityNo outgoing business-initiated messages until 24 hours have elapsed; you can still reply to customer-initiated messages.docs ↗
NotificationsEmail and Business Manager alertSent when quality reaches Low or status changes to Flagged or Restricted. The API also emits account_alerts and phone number quality webhooks.docs ↗

Phone numbers, test numbers and registration

Account-level limits govern how many business phone numbers a portfolio can register, how the free test number behaves, and how often a number may be registered or deregistered. They rarely matter day to day but dominate onboarding and migrations: a number cap that has not been raised, a test number quietly used for production, or a retry loop wrapped around a registration script are the classic first-week failures. The registration endpoints are strictly budgeted — burning through attempts returns 133016 and locks the number out for up to 72 hours, and re-registering a freshly deleted number too soon returns 133015. Operational tip: never put /register inside automatic retry logic; run it manually or from a once-only migration script, and confirm success by reading the phone number's status field rather than by retrying.

WhatLimitNotesSource
Business phone numbers per portfolio (new)2 registered business phone numbersMeta: new business portfolios are initially capped at two registered business phone numbers.docs ↗
After verification or reaching the 2,000 tier20 registered business phone numbersMeta: if your business becomes verified, or reaches a messaging limit of 2,000, the cap is automatically increased to 20. Higher caps: see docs.docs ↗
Test business phone numberFree messages to up to 5 verified recipient phone numbersCreated automatically in Get Started; each recipient must be verified by code. Intended for development, not production.docs ↗
Registration / deregistration attempts10 per number per 72-hour moving window (each endpoint)Exceeding returns 133016. A recently deleted number needs about 5 minutes before re-registration (133015).docs ↗
Two-step verification PIN6 digits, required to registerWrong PIN returns 133005; too many guesses 133008; guesses too fast 133009.docs ↗

Webhook delivery and retries

Inbound messages, delivery statuses, template status changes and account alerts all arrive as webhooks, so your endpoint's behaviour is effectively one of your limits. Meta expects a fast HTTP 200 and retries failures with decreasing frequency for up to 7 days; because retries go to every subscribed app, they routinely produce duplicates. There is no documented hard cap on webhook volume, but a handler that does synchronous work will fall behind at the throughput levels above and make you misread message state — sends look "lost" when it is your receiver that is behind. Operational tip: acknowledge immediately, enqueue, and deduplicate on message ID. If statuses stop arriving entirely, check your subscription and TLS setup before blaming Meta; the catalogue at /blog/whatsapp-api-error-codes distinguishes errors that arrive in webhooks from those returned in the API response.

WhatLimitNotesSource
Retry windowUp to 7 days, with decreasing frequencyMeta: if a webhook request receives a status other than 200 or cannot be delivered, Meta retries delivery with decreasing frequency until it succeeds, for up to 7 days.docs ↗
Duplicate notificationsPossible on retryRetries go to every app subscribed to the WABA and can result in duplicate webhook notifications; deduplicate on the message id.docs ↗
Required responseHTTP 200Respond immediately and do the work after acknowledging; slow or erroring endpoints trigger retries. See /blog/webhook-not-firing-debugging-guide.docs ↗

Pricing model (summary, no per-country rates)

Since 1 July 2025 Meta charges per delivered template message rather than per conversation, with rates that depend on the template category and the recipient's country calling code. This section summarises the structure and deliberately omits per-country figures — Meta's rate cards are the source of truth. The structural change to plan for is 1 October 2026, when free-form service messages inside the 24-hour window become billable per message; the arithmetic, and the decisions worth making beforehand, are worked through in the October 2026 billing guide, and you can model both eras of your bill with the WhatsApp API cost calculator. Exceeding a "limit" here produces no error code at all — the failure mode is a quietly larger invoice. Operational tip: tag every outbound message with its category and window state in your own logs so you can reconcile Meta's invoice line by line.

WhatLimitNotesSource
Billing unitPer template message, charged when deliveredEffective July 1, 2025. Replaced the earlier per-conversation model.docs ↗
CategoriesMarketing, utility, authentication templates; service (free-form) messagesRates vary by category and by the recipient phone number's country calling code.docs ↗
Service messages (free-form inside the 24h window)Free (since 1 November 2024)Meta has announced that service messages become billable per message from 1 October 2026; confirm current treatment and rates on the pricing page.docs ↗
Utility templates inside an open windowFreeMeta: utility template messages sent within an open customer service window are free. Announced to change from 1 October 2026; see pricing page.docs ↗
Free entry point conversationsFree for 72 hoursAny message type to a user who messaged you from a Click to WhatsApp ad or Facebook Page CTA button, provided you reply within 24 hours.docs ↗
Volume tiersLower utility and authentication rates at higher monthly volumeVolume is aggregated across all accounts in the business portfolio each month and tiers reset monthly; marketing is not tiered.docs ↗
Per-country ratesSee Meta's rate cardsRates differ by recipient market; this page intentionally does not reproduce them. Meta's page lists adjustments effective 1 July 2026 and 1 October 2026 for specific markets, including a new authentication-international rate.docs ↗

WhatsApp guides and tools

Other platforms

Frequently asked questions

What are the WhatsApp messaging limit tiers?

250, 2,000, 10,000, 100,000 and unlimited unique customers per rolling 24 hours for business-initiated messages. New portfolios start at 250 and reach 2,000 by business verification or by sending 2,000 delivered high-quality template messages to unique users in 30 days. Above that, Meta raises the tier within 6 hours once you have used at least half your limit in 7 days with good quality.

Is the messaging limit per phone number or per account?

Per business portfolio. Meta calculates the limit at the portfolio level and shares it across every business phone number in that portfolio, so three numbers under one portfolio at the 10,000 tier draw from a single pool of 10,000 unique customers per day rather than 30,000.

What is the WhatsApp Cloud API throughput limit?

Up to 80 messages per second per business phone number by default, counting inbound and outbound messages of all types. Numbers that reach an unlimited messaging limit, message 100K or more unique users in a moving 24 hours, and hold at least a Yellow quality score are upgraded automatically to as much as 1,000 mps. Exceeding throughput returns error 130429.

How many API calls per hour can I make?

200 requests per hour per app per WABA by default, rising to 5,000 per hour per app per active WABA once at least one phone number is registered. These limits mostly affect management and read traffic. Separately, a business number may send one message every 6 seconds to the same user, with bursts of up to 45 that borrow from future quota.

How long is the WhatsApp 24-hour window, and what is the 72-hour window?

The customer service window opens when a user messages or calls you and lasts 24 hours from their most recent message or call, resetting each time. Inside it you can send free-form messages; outside it only templates are allowed. Conversations that begin from a Click to WhatsApp ad or a Facebook Page CTA button open a 72-hour free entry point window during which any message is free.

What are the WhatsApp template character limits?

Header text 60 characters with one variable, body 1,024 characters, footer 60 characters, button text 25 characters, URL 2,000 characters, phone number 20 characters, copy code 20 characters. A template can have up to 10 quick reply buttons, 2 URL buttons, 1 phone button and 1 copy code button, up to 10 buttons in total. Names are up to 512 lowercase characters and underscores.

What are the WhatsApp media size limits?

Images 5 MB (JPEG, PNG), video 16 MB (MP4, 3GPP with H.264 and AAC), audio 16 MB (AAC, AMR, MP3, M4A, OGG with mono OPUS), documents 100 MB (PDF, Office formats, text) and stickers 100 KB static or 500 KB animated WebP. Captions are limited to 1,024 characters, uploaded media IDs expire after 30 days, and download URLs expire after 5 minutes.

How many buttons and list rows can an interactive WhatsApp message have?

A reply-button message allows up to 3 buttons with 20-character titles and 256-character IDs. A list message allows up to 10 sections and 10 rows total, with 24-character row and section titles, 72-character row descriptions and 200-character row IDs. These caps differ from template buttons, which allow up to 10 quick replies with 25-character labels, so validate the two message families separately.

How does WhatsApp API pricing work in 2026?

Since 1 July 2025 Meta bills per delivered template message by category (marketing, utility, authentication) and by recipient country. Utility templates inside an open 24-hour window and free-form service messages have been free, with volume discounts for utility and authentication. From 1 October 2026 service messages inside the window become billable per message and several markets get adjusted rates, so model costs before the switch.

Why do template messages fail even when I am under every limit?

The usual suspects are invisible per-user caps and quality controls rather than your tier: Meta limits how many marketing templates one user receives across all businesses (error 131049), paces newly created marketing templates while early feedback comes in, and pauses low-quality templates outright (132015, then 132016 if it repeats). Recipients without WhatsApp fail with 131026. Check the template's status and quality in WhatsApp Manager before assuming a rate limit.

Build on WhatsApp without tracking every limit yourself

Conferbot paces sends, queues retries and surfaces limit errors as readable status.