HealthCodesAPI

Rate limits & quotas

Two separate limits: a per-minute rate limit that stops a runaway loop, and a monthly quota that is the commercial boundary.

PlanRequests/monthRate limit
Free1,00030/min
Developer50,000120/min
Business500,000600/min
EnterpriseCustomCustom

Headers

Every authenticated response carries where you stand, so you never have to poll the dashboard to find out.

Response headers
X-Quota-Limit: 50000
X-Quota-Remaining: 48213
X-RateLimit-Limit-Minute: 120

What counts

One HTTP request to a /v1 endpoint. Requests that fail because of an error on our side (500) are not counted against you. Requests rejected for an invalid key are not counted against anyone, because there is no account to count them against.

When you exceed a limit

Both produce 429 with different codes. rate_limit_exceeded clears within the minute — back off and retry. monthly_quota_exceeded lasts until the 1st, and retrying will not help.

We email at 80% and 90% of the monthly quota before you reach it, once per threshold per period.

Being a good client

  • Cache. Reference data changes a few times a month; re-fetching an unchanged code on every page view spends quota to learn nothing.
  • Prefer one search over many single lookups when you are resolving a list.
  • Use ?changed_since= to pull what moved rather than re-reading everything.
  • Retry 429 and 500 with exponential backoff, and nothing else.