quota_exceeded — Plan quota exhausted

HTTP 429
Retryable

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

  1. Read details.resets_at and pause the job until then instead of retrying into a wall.

  2. Check details.quota and details.used to see which allowance ran out - messages, checks and requests are metered separately.

  3. 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

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.