Rate limits ensure fair usage and platform stability. Limits are applied per team, across all API tokens belonging to that team.Documentation Index
Fetch the complete documentation index at: https://docs.qwairy.co/llms.txt
Use this file to discover all available pages before exploring further.
Current Limits
Two windows are enforced simultaneously on every request:| Window | Limit |
|---|---|
| Per-minute (burst) | 1,000 requests / minute |
| Per-day (daily cap) | 20,000 requests / day |
429 Too Many Requests.
Need higher limits for production workloads (e.g. ingesting data for many brands/domains)? Contact us at team@qwairy.co.
Rate Limit Headers
Every response, including429s, includes headers for both windows:
| Header | Description |
|---|---|
X-RateLimit-Limit | Per-minute request cap |
X-RateLimit-Remaining | Requests remaining in the current minute window |
X-RateLimit-Reset | ISO 8601 timestamp when the minute window resets |
X-RateLimit-Daily-Limit | Per-day request cap |
X-RateLimit-Daily-Remaining | Requests remaining in the current day window |
X-RateLimit-Daily-Reset | ISO 8601 timestamp when the day window resets |
Retry-After | Seconds to wait before retrying, based on the limit actually hit (only set on 429) |
Example Headers
Handling Rate Limits
When either window is exceeded, the API returns429 Too Many Requests with a body indicating which window was hit:
limit field is either "burst" (per-minute) or "daily". Retry-After and the X-RateLimit-*-Reset headers are always aligned with the actual blocker, so you can trust Retry-After without having to inspect the payload.
Best Practices
Trust Retry-After
Use the
Retry-After header as-is. It already reflects whichever window (minute or day) is the real blocker.Watch both remaining headers
Monitor
X-RateLimit-Remaining and X-RateLimit-Daily-Remaining to throttle proactively.Cache responses
Store and reuse data that doesn’t change frequently (brands, competitors, topics).
Batch and filter
Use query filters (
provider, period, limit) to fetch only the data you need.Retry Logic Example
Optimizing API Usage
Use Filtering Parameters
Instead of fetching all data and filtering client-side, use query parameters:Cache Static Data
Some data changes infrequently and can be cached:- Brands list: Changes rarely
- Competitors list: Changes when you add/remove competitors
- Topics/Tags: Changes when you modify your workspace

