> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vumasign.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rate limits

> Per key, per minute, set by the plan.

export const rateLimitedStatus = "429";

| Plan | Live key, per minute | Test key, per minute |
| - | - | - |
| Free | 60 | 60 |
| Team | 600 | 600 |
| Business | 600 | 600 |
| API | 600 | 600 |

The ceiling follows the **plan**, not the key: every key an organisation holds is bounded by the
same number, and each is counted on its own — so a batch job and an interactive integration can be
given a key each and neither can starve the other.

Every successful authenticated response carries `RateLimit-Limit`, `RateLimit-Remaining` and
`RateLimit-Reset`, so you can watch your allowance drain without being refused first; a
{rateLimitedStatus} carries them too, and adds `Retry-After`.

The sandbox gets the **same** number as production, deliberately. A rehearsal at a rate you will
never be allowed to use makes a {rateLimitedStatus} rarer in rehearsal than in production — which is exactly
backwards for the one code path a sandbox exists to exercise. Matching them means an integration
that passes in the sandbox passes live, and that its retry handling is exercised where a {rateLimitedStatus} costs
nothing.
