Rate limits
Standard headers on every response.
Defaults
Need a higher limit? Contact us. For real integrations we’ll bump you up.
Response headers
Every response includes:
X-RateLimit-Limitis the ceiling for the current window.X-RateLimit-Remainingis how many calls you have left before you hit429.X-RateLimit-Resetis the unix-seconds timestamp when the counter resets.
When you’re rate-limited
You get HTTP 429 with a Retry-After header (seconds) and this envelope:
Back off for at least Retry-After seconds. Don’t retry aggressively, or
you’ll just extend the window.
Recommended patterns
- Cache at the property level. For a given
(lat, lng, start, end)tuple, Chora responses are stable withinmeta.fresh_until. Cache by that key rather than hitting the API on every page render. - Prefer the composite widget for anonymous embeds. If you don’t
need JSON in your app,
/v1/pulsehandles a whole booking page in one anonymous HTML request. - Request sections in parallel. Every JSON endpoint is independent.
Promise.allyour weather + astronomy + michelin + events calls. - Read the
Resetheader. After a 429, wait until the header’s unix time before retrying.