Start building

Developer guide

Rate limits

Per-key and per-address budgets, the headers that report them, and how to back off.

Open the Developer Center

Never send patient information to a sandbox key.

On this deployment: Headless Connect API: Not available in this environment
  • Headless Connect API: Not available in this environment. What runs now: Sandbox-key calls to /api/v1 on the nonproduction deployment with synthetic data: claims scan, formulary, rulebook, the sandbox order preview, delivery reads and replay, and the MCP endpoint, on a deployment whose database has the 20261101090000-range migrations applied (a hard deploy-order dependency the merge gate enforces; ahead of them the rulebook, claims scan, MCP and replay answer 503).

Budgets

Rate limits
BudgetLimitCounted per
Every request a key makes600 per minutekey
Every write a key makes, in addition120 per minutekey
Reads, with or without a key (the public catalog, disclosures and formulary included)600 per minutenetwork address
Writes presenting a key to a keyed resource, before the key's own budgets1200 per minutenetwork address
Writes with no key, and writes to a public resource (records requests)60 per minutenetwork address

A key's budget is spent before its scope is checked, so a request a key is not allowed to make still counts. Keys behind one egress address do not share their budgets; their writes share only a per-address ceiling of 1200 a minute.

Headers and refusals

  • RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset (seconds) on every keyed answer.
  • 429 rate_limited with Retry-After when a budget is spent. Wait that long; nothing was applied.
  • 503 rate_limit_unavailable with Retry-After: 30 when the budget could not be checked. The request was refused, not applied.

Back off with jitter and retry writes with their original Idempotency-Key, so a retry after a timeout cannot apply twice.