Buckets refill continuously, not once a minute. A key that’s used up its 600 gets a new token every 100 ms, so a steady 10 requests a second never hits the limit, while a burst of 600 at once is also fine.
These limits are about request volume. How many calls can run at the same time is a separate limit per workspace; going over it returns
429 capacity_exceeded. See Errors.Headers on every response
Every authenticated response tells you where you stand, using the IETFRateLimit header fields. The numbers describe whichever of your two buckets is closest to empty.
When you hit the limit
You get429 with code rate_limited, a Retry-After header in seconds, and the same RateLimit-* headers:
Retry-After seconds and retrying always works.
Staying under the limit
- Use webhooks instead of polling. One
call.endedevent replaces dozens ofGET /v1/calls/{id}requests. - Use
limit=100when walking lists, rather than many small pages. - Slow down early. When
RateLimit-Remaininggets low, spread requests out instead of waiting for a429. - One key per integration. Each key has its own 600-a-minute bucket, and the workspace bucket is shared by all of them.