Rate limits
Each connected practice has two limits, counted over one-minute windows:
| Requests | Limit |
|---|---|
Reads (GET) |
300 per minute |
Writes (POST, DELETE) |
60 per minute |
Requests sent with a practice key count against that practice, so a busy
practice can’t slow down the others. Requests sent with only your partner key
(GET /specialties, webhook endpoints, and POST /connect/token)
share one more set of the same limits. If you need more, email
support@theahealth.com with your expected
volume.
Headers
Section titled “Headers”Every successful response includes the limit that applied to it:
| Header | Meaning |
|---|---|
X-RateLimit-Limit |
Requests allowed per minute. |
X-RateLimit-Remaining |
Requests left in the current window. |
X-RateLimit-Reset |
When the window resets, as a Unix timestamp in seconds. |
When you hit the limit
Section titled “When you hit the limit”Thea returns 429 with a rate-limited problem
and a Retry-After header giving the seconds to wait:
HTTP/1.1 429 Too Many RequestsRetry-After: 12X-RateLimit-Limit: 60X-RateLimit-Remaining: 0Content-Type: application/problem+jsonWait at least that long before retrying. To stay under the limits:
- Use webhooks instead of polling for changes.
- Sync with
updated_sinceandlimit=100rather than re-reading everything. - Cache
GET /specialties; it rarely changes.

