Adrata Developers
Metered responses expose readable budget headers for request limits, and some agent or enrichment routes may include additional bucket context.
if (error instanceof RateLimitError && error.retryAfter) {
await sleep(error.retryAfter * 1000);
}`x-ratelimit-limit`, `x-ratelimit-remaining`, `x-ratelimit-used`, `x-ratelimit-reset`, `x-ratelimit-scope`, `x-ratelimit-bucket`, and `retry-after` are exposed for browser clients.
CRUD, AI-token, enrichment, and workspace budgets are tracked separately so background AI work does not silently consume the same capacity as normal record reads and writes.
Back off by bucket, not globally. A 429 on enrichment should not pause simple reads unless the response says the workspace-wide bucket is exhausted.