code: "rate_limited",
and details.retry_after_seconds tells you how long to wait. A Retry-After header
carries the same value.
Rate limit headers
Every/v1 response — success or 429 — includes your current limit state, so you
can pace requests proactively instead of waiting for a 429:
The same values are also sent under
X-RateLimit-Limit, X-RateLimit-Remaining,
and X-RateLimit-Reset aliases — read whichever your HTTP client exposes.
Staying within the limit
- Watch
RateLimit-Remainingand slow down as it approaches zero rather than waiting to be throttled. - Cache data that doesn’t change often (tutors, classrooms, subjects) rather than re-fetching on every run.
- Page efficiently with
limit=100instead of many small pages. - Back off on a
429: honourRetry-After(ordetails.retry_after_seconds), then retry with exponential backoff (e.g. 1s, 2s, 4s).