Every WhatsApp Cloud API limit, in one table
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.
| What | Limit |
|---|---|
| Unverified business (starting tier) | 250 unique customers / rolling 24h |
| Tier 2 (TIER_2K) | 2,000 unique customers / rolling 24h |
| Tier 3 (TIER_10K) | 10,000 unique customers / rolling 24h |
| Tier 4 (TIER_100K) | 100,000 unique customers / rolling 24h |
| Unlimited (TIER_UNLIMITED) | No cap on unique customers per 24h |
| Scope of the limit | Business portfolio level, shared by all phone numbers |
| What is counted | Unique user phone numbers messaged outside a customer service window |
| Automatic upgrade criteria (from 2,000 upward) | Next tier within 6 hours once eligible |
| Downgrade | One tier down if quality stays Low |
| How to check your current limit | whatsapp_business_manager_messaging_limit field; WhatsApp Manager |
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.
| What | Limit |
|---|---|
| Default throughput | Up to 80 messages per second per business phone number |
| Upgraded throughput | Up to 1,000 messages per second by automatic upgrade |
| WhatsApp Business app numbers (coexistence) | Fixed 20 messages per second |
| Upgrade eligibility | Unlimited messaging limit + 100K unique users in a moving 24h + quality score YELLOW or higher |
| Upgrade downtime | Up to 1 minute |
| Error when exceeded | 130429 Rate limit hit |
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.
| What | Limit |
|---|---|
| Default per app per WABA | 200 requests per hour |
| Active WABA (at least one registered number) | 5,000 requests per hour per app per active WABA |
| Credit Line API | 5,000 requests per hour |
| Pair rate limit (one number to one user) | 1 message every 6 seconds (about 10 per minute, 600 per hour) |
| Registration endpoint | 10 requests per business number in a 72-hour moving window |
| Template creation | 100 templates per WABA per hour |
| WhatsApp Flow in throttled state | 10 messages per hour using that Flow |
| 429 / error behaviour | Error 4 (app), 80007 (WABA), 130429 (throughput) |
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.
| What | Limit |
|---|---|
| Customer service window | 24 hours from the user's most recent message or call |
| Outside the window | Template messages only |
| Free entry point (FEP) window | 72 hours |
| Per-user marketing template limits | See docs (not a fixed published number) |
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.
| What | Limit |
|---|---|
| Templates per WABA (unverified portfolio) | 250 message templates |
| Templates per WABA (verified, approved display name) | 6,000 templates |
| Template name | 512 characters max; lowercase alphanumeric and underscores |
| Template creation rate | 100 templates per WABA per hour |
| Review time | Up to 24 hours |
| Template pacing (marketing) | See docs (not a fixed published number) |
| Header text | 60 characters; supports 1 parameter |
| Body | 1,024 characters |
| Footer | 60 characters |
| Button text | 25 characters |
| Quick reply buttons | Up to 10 per template |
| URL (call-to-action) buttons | Up to 2; URL max 2,000 characters; 1 variable appended to the end |
| Phone number button | 1; number max 20 characters |
| Copy code button | 1; code max 20 characters |
| Total buttons | Up to 10 button components in combination |
| Variables (parameters) | Examples required for every parameter; no leading/trailing variables; variable-to-words ratio capped |
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.
| What | Limit |
|---|---|
| Text message body | 4,096 characters |
| Media caption (image, video, document) | 1,024 characters |
| Interactive reply buttons | Up to 3 buttons; title 20 characters; id 256 characters |
| Interactive list message | Up to 10 sections and 10 rows total; row title 24, row description 72, section title 24, button text 20 |
| Contacts message | Up to 257 contacts per message |
| Location message | Latitude and longitude required, in decimal degrees |
| Reaction message | Target message must be 30 days old or newer, not deleted, and not itself a reaction |
| Address message availability | India only (business and recipient) |
| Multi-product message | Up to 30 products organized into sections |
| Typing indicator | Displays until you respond or for 25 seconds, whichever comes first |
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.
| What | Limit |
|---|---|
| Image | 5 MB; JPEG (.jpeg) and PNG (.png) |
| Video | 16 MB; MP4 (.mp4) and 3GPP (.3gp) |
| Audio | 16 MB; AAC (.aac), AMR (.amr), MP3 (.mp3), MP4 audio (.m4a), OGG (.ogg) |
| Document | 100 MB; .txt, .xls/.xlsx, .doc/.docx, .ppt/.pptx, .pdf |
| Sticker | 100 KB static, 500 KB animated; WebP (.webp) |
| Maximum upload size | 100 MB |
| Media ID validity | 30 days (API-returned IDs); 7 days (IDs in webhooks) |
| Media download URL validity | 5 minutes |
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.
| What | Limit |
|---|---|
| Quality rating values | High (GREEN), Medium (YELLOW), Low (RED) |
| Status: Connected | Can send within the current messaging limit |
| Status: Flagged | Set when quality reaches Low |
| Status: Restricted | Set when you hit your messaging limit, regardless of quality |
| Notifications | Email and Business Manager alert |
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.
| What | Limit |
|---|---|
| Business phone numbers per portfolio (new) | 2 registered business phone numbers |
| After verification or reaching the 2,000 tier | 20 registered business phone numbers |
| Test business phone number | Free messages to up to 5 verified recipient phone numbers |
| Registration / deregistration attempts | 10 per number per 72-hour moving window (each endpoint) |
| Two-step verification PIN | 6 digits, required to register |
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.
| What | Limit |
|---|---|
| Retry window | Up to 7 days, with decreasing frequency |
| Duplicate notifications | Possible on retry |
| Required response | HTTP 200 |
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.
| What | Limit |
|---|---|
| Billing unit | Per template message, charged when delivered |
| Categories | Marketing, utility, authentication templates; service (free-form) messages |
| Service messages (free-form inside the 24h window) | Free (since 1 November 2024) |
| Utility templates inside an open window | Free |
| Free entry point conversations | Free for 72 hours |
| Volume tiers | Lower utility and authentication rates at higher monthly volume |
| Per-country rates | See Meta's rate cards |
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.