Skip to content

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.

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.

Thea returns 429 with a rate-limited problem and a Retry-After header giving the seconds to wait:

HTTP/1.1 429 Too Many Requests
Retry-After: 12
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
Content-Type: application/problem+json

Wait at least that long before retrying. To stay under the limits:

  • Use webhooks instead of polling for changes.
  • Sync with updated_since and limit=100 rather than re-reading everything.
  • Cache GET /specialties; it rarely changes.