quota_exceeded — Plan quota exhausted
What the API returns
{
"error": {
"code": "quota_exceeded",
"message": "The plan quota for this resource is exhausted.",
"request_id": "req_01JRQ8F4X9N2K7YB3C5V6W8H0T"
}
}Every Wapito error is this one envelope. Branch on code, which is stable; message is written for people and can be reworded; details appears only when there is something specific to say; request_id is what to quote to support.
What it means
quota_exceeded is an HTTP 429 error from the Wapito WhatsApp API: plan quota exhausted. The response message reads “The plan quota for this resource is exhausted.” It is retryable: the same request can succeed later without changes. 4 endpoints can raise it, POST /messages/text among them.
Why it happens
You have used up an allowance that resets on a schedule rather than a rate that recovers in seconds. Sandbox channels have daily message and number-check allowances and a monthly request allowance; premium channels have their own ceilings. The details object carries the quota name, how much you have used and when the window resets, so your scheduler can wait for the exact moment rather than guessing.
How to fix quota_exceeded
Read details.resets_at and pause the job until then instead of retrying into a wall.
Check details.quota and details.used to see which allowance ran out - messages, checks and requests are metered separately.
If this is production traffic rather than a runaway loop, move the channel to a plan whose ceiling matches your volume.
Endpoints that raise it
Where you will meet it
- Check Number
Feature guide
Retry guidance
Safe to retry
The condition is transient, so the same request can succeed later without any change on your side. Retry with exponential backoff and jitter — start at one second, double each attempt, cap at a minute — and stop after a handful of tries so a stuck condition surfaces as an alert rather than a hot loop.
On a 429, read the Retry-After header first when the response carries one — rate_limited always sends it, in seconds — and when the details object names a window or a reset time, wait for exactly that. Both beat a guessed backoff.
Frequently asked questions
Can I see how much of a quota is left before I hit it?
Yes. The usage endpoint reports the current window for each metered resource, so a scheduler can decide in advance whether a batch will fit. Reading it once per batch rather than once per message keeps the check cheap and stops the reads themselves from consuming the allowance.
Do quotas reset at midnight in my timezone?
Windows are tracked in UTC, so a daily allowance rolls over at midnight UTC regardless of where you are. Use details.resets_at rather than computing the boundary yourself, because it accounts for the exact window the counter is using for that specific resource.
Related
Try it on your own number
Create a channel, link a WhatsApp number by QR or pairing code, and call the API in a couple of minutes. The Sandbox plan is free and needs no card.