How limits work
After successful API key authentication, requests are rate-limited per organization so limits are shared across all app instances (when Redis is available). Anonymous traffic uses a different keying strategy if the org context is missing.Two buckets
- General API — applies to most
GET/POST/PUT/DELETEroutes under the Developer API. - Send / outbound — a stricter limit applies to sending messages:
POST /sendPOST /send/templatePOST /send/media
HTTP 429
When a limit is exceeded, the API responds with 429 Too Many Requests and a JSON body indicating too many requests for the organization. Retry after a short delay, ideally with exponential backoff.Environment variables (defaults)
These can be set on the server; defaults are typical per-hour windows (see your deployment’sdeveloperApiRateLimiter config for exact behavior):
Exact numbers depend on your server configuration; use
429 response headers (when exposed by the rate limiter) to tune client retry behavior.
Subscription and plan limits
Some operations also enforce plan limits (for example contact or label creation). Those are separate from the HTTP rate limiter and return 403 with an explanatorymessage when a limit blocks the action.