Skip to main content
Public API v1 enforces per-route rate limits keyed by API key (falling back to client IP when no key is present).

Limits by endpoint class

GET /health uses the detail tier. List, detail, write, and analytics limits are independent. The metric catalog uses the list tier, not the analytics query tier.

Response headers

Every response includes rate limit headers: When you exceed the limit, the API returns 429 with code RATE_LIMIT_EXCEEDED and a Retry-After header (seconds to wait). The error envelope may also include retry_after.

Best practices

  • Backoff on 429 — sleep for Retry-After seconds (or exponential backoff with jitter) before retrying.
  • Avoid tight polling loops — use reasonable intervals for agent tools; combine cursor pagination with backoff instead of hammering list endpoints.
  • Cache view metadata — GET /views changes infrequently; cache view id → name/filter mapping in your integration.
  • Batch sensibly — fetch message threads only for tickets you need, not every row in a list response.

Legacy /public/* limits

Deprecated legacy endpoints use different limits (30–300 requests / minute depending on endpoint). See the legacy OpenAPI reference if you still call /public/* during migration.