Rate limits
WhatsTIG applies limits at several levels to protect the platform, connected accounts and other customers.
API request limits
| Level | Limit |
|---|---|
| Project | Plan's apiRequestsPerMinute (Free 120, Starter 600, Business 3,000, Enterprise 10,000), with bursts of up to a quarter of the minute's budget |
| Platform | A global safety valve shared by all tenants (configurable by the operator) |
Exceeding a limit returns 429 RATE_LIMITED with a Retry-After header (seconds) and details.retryAfterSeconds.
Back off for at least that long; the SDKs do this automatically for retry-safe requests.
Sending limits
Sending is paced per WhatsApp instance (and per project, organization and platform) by the session workers, not by rejecting your API calls. Accepted messages wait in the queue until their instance has capacity. Defaults set by the operator are conservative (20 messages per minute per instance, bursts of 5); individual instances can have their own policy. These are platform-protection defaults, not a statement about what WhatsApp tolerates. WhatsApp's own limits are undocumented and depend on the account; sending too much, too fast, or to people who did not ask for it gets accounts restricted.
Practical guidance:
- Send only to people who opted in, and stop immediately when someone opts out.
- Ramp up gradually on new numbers.
- Spread large notification runs over time; use
expiresInSecondsfor messages that are worthless when late. - Watch for
instance.error/RESTRICTEDand for risingFAILED/UNKNOWNrates.
Backlog and quota
| Condition | Response |
|---|---|
More queued messages in the project than the plan allows (maxQueuedMessagesPerProject) | 429 BACKLOG_LIMIT_REACHED (retry after ~30 s) |
Monthly accepted messages reach the plan's monthlyMessages | 403 QUOTA_EXCEEDED |
The backlog limit is per project, so one project's large backlog never blocks another project or organization.
Fairness
Each instance has its own send lane. A tenant with a 50,000-message backlog on its numbers does not slow down a tenant sending a single message on a different number, even within the same WhatsTIG deployment.
Current usage
GET /v1/usage returns daily counters (messages.accepted, messages.sent, messages.received,
media.bytes_uploaded, api.requests) and your plan limits. messages.sent counts only messages WhatsApp
acknowledged; queued, failed and unknown messages are never counted as sent.