---
title: Limits | API Docs
description: Request, media, paging, and fair-use limits.
---

JSON request bodies are capped at 64 KiB. Larger bodies are rejected rather than truncated. Media uploads have kind-specific ceilings documented on the upload operation.

Paging inputs are refused rather than clamped. Send a supported `limit` and preserve returned cursors exactly.

## Request rate

Each API key has a request rate limit and a cap on open event streams. Going over returns HTTP `429` with `error.code` [4012](/channel/whatsapp/error/codes/4xxx/4012/index.md) or [4013](/channel/whatsapp/error/codes/4xxx/4013/index.md) and a `Retry-After` header. Wait that long and retry, and close event streams you don’t use.

Handle HTTP `429` on every operation. It carries a registered numeric `error.code` and, wherever a retry time is honest, a `Retry-After` header mirrored by `error.retry_after`. What the wait means depends on the code — for [4006](/channel/whatsapp/error/codes/4xxx/4006/index.md) (a spend cap) it is the exact reset of the cap window; for [4008](/channel/whatsapp/error/codes/4xxx/4008/index.md) (the distinct-customer ceiling below) it is a minimum, and a retry then may still be refused. See [error handling](/channel/whatsapp/guides/platform/errors/index.md).

The channel’s portfolio-level messaging tier is separate from this API’s request rate. The phone-number read exposes the reported tier token but does not publish a numeric ceiling in this version.
