Skip to main content
Rate limits apply to every endpoint across the WhatsApp, Platform, and Workflows APIs. They are counted per API key, or per IP when no key is present.

Requests per minute

The window is a fixed minute, not a rolling one. A project with no active plan gets the free limit.

Response headers

Every response carries your current state:
When you exceed the limit, Kapso returns 429 with:
Read X-RateLimit-Remaining and back off before you hit zero, rather than waiting for the 429.

Workflow execution burst limit

Starting workflow executions has a second, tighter limit measured per second and per workflow. It stops a single runaway workflow from consuming your whole per-minute budget. Exceeding it returns 429 with its own headers:

Meta’s limits are separate

The WhatsApp API proxies Meta. Meta enforces its own throughput and messaging limits on top of Kapso’s, so a request can pass Kapso’s limit and still be rejected upstream:
Your WABA messaging tier controls how many business-initiated conversations you can start per day. See Meta’s messaging limits. Broadcasts are not affected by this. Kapso paces them internally to stay within throughput limits, so you do not need to throttle a broadcast yourself.

Handling 429

Retry with exponential backoff, honoring Retry-After: