The limits
A request counts against every limit that applies to it: a send counts toward the 120-request limit, the 30-sends limit and the creator’s hourly send limit.
The failed-authentication limit only ever refuses credentials OnlyX does not recognize: over it, such requests get
429 instead of 401. A valid key is never refused because of other failures from the same address, and an expired or revoked credential always gets its normal 401.
Headers
Every/v1 response to an authenticated request tells you where you stand, for the tightest limit the request counted against:
GET /v1/me also returns your general limit as rateLimit: {"limit": 120, "windowSeconds": 60}.
When you hit a limit
You get429 Too Many Requests with a Retry-After header (seconds) and the standard error body:
Retry-After seconds before retrying. A 429 never performs the action, so retrying a write after waiting is safe; use the same Idempotency-Key anyway.
Backoff example
Staying under the limits
- Watch
X-RateLimit-Remainingand slow down before it reaches 0 instead of waiting for a429. - Cache reads that change slowly: creators, reports, fan lists, tracking links.
- Poll gently: connection status every 10 seconds at most while a creator signs in, message delivery every 5 to 10 seconds, the overview report only when
Retry-Aftersays so. - Page with
limit=100(or 50 for conversations) rather than many small pages. - Spread sends out. The creator-wide limit of 300 sends per hour applies whatever key you use, and a natural pace is better for the account anyway.
- One key per integration. Each integration then has its own 120-per-minute budget and cannot starve another.
Related
- Errors:
RATE_LIMITEDand other retryable errors. - Idempotency: safe retries.