Skip to main content

What is enforced today

Public v1 list routes enforce a sliding-window throttle per organization API key and caller IP. Default public v1 budget: Successful responses include:
  • X-RateLimit-Limit
  • X-RateLimit-Remaining
  • X-RateLimit-Reset (Unix seconds)
List routes also enforce limit <= 100, support offset, and use stable descending ordering so offset pagination does not reshuffle rows with identical timestamps. When the window is exhausted, the API returns 429 with Retry-After plus the same rate-limit headers.

Plan ceilings are not guaranteed throughput

Plans list higher request ceilings than the budget above, but the live public v1 budget is what is enforced today. Do not plan an integration around the plan ceilings. Design for the 60 requests per minute budget, and contact us if you need more.
  1. Prefer incremental sync (filter appointments by startDate / endDate) over full-table pulls every minute.
  2. Cap concurrency (for example 1–2 parallel requests per key).
  3. On 429, wait at least Retry-After seconds before retrying.
  4. On unexpected 5xx or connection errors, use exponential backoff with jitter.
  5. Cache customer lists when your job only needs appointments.
Write endpoints are not available in Public API v1. See Public API write surface.

If you need higher volume

Contact sales / support for Enterprise. Do not scrape dashboard HTML or call session-authenticated /api/* routes from an integration — those are not the public contract.