Xquik enforces rate limits to ensure fair usage and platform stability. Limits are applied per user account using a fixed window counter.Documentation Index
Fetch the complete documentation index at: https://docs.xquik.com/llms.txt
Use this file to discover all available pages before exploring further.
Quick answer: 60 GET/1s, 30 POST/60s, 15 DELETE/60s per account.
Hit the limit? Respect the
Retry-After header. Avoid 429s? Use the client-side rate limiter below.Rate limit tiers
Read
GET, HEAD, and OPTIONS share a limit of 60 requests per 1 second.Write
POST, PUT, and PATCH share a limit of 30 requests per 60 seconds.Delete
DELETE requests are limited to 15 requests per 60 seconds.Action-specific limits
Some write endpoints have stricter limits that apply on top of the general write tier:Connect account
POST /x/accounts is limited to 3 attempts per 15 minutes.Follow
POST /x/users/{id}/follow is limited to 20 requests per 60 seconds and 400 per day.How limits work
Xquik uses a fixed window counter:Window starts on first request
The first request starts a 1-second read window or a 60-second write/delete window.
Each request increments the counter
Every request within the window increments the counter for its tier (read, write, or delete).
Response headers
When you exceed the rate limit, the response includes:Retry-After header
Retry-After is the wait time in seconds before retrying. Standard read throttles return Retry-After: 1. Write and delete throttles return Retry-After: 60. Account connection cooldowns return Retry-After: 900.JSON retry field
The JSON body includes
error: "rate_limit_exceeded" and retryAfter in seconds, so clients can back off even when they do not expose response headers directly.Retry-After header. Requests sent before the fixed window resets keep returning 429 until Retry-After elapses.
Client-side rate limiter
Prevent hitting server-side limits by implementing a client-side rate limiter. This is more efficient than relying on 429 responses and backoff.Rate limiting libraries
Instead of building your own rate limiter, consider these battle-tested libraries:Node.js libraries
Use bottleneck with
npm install bottleneck, or p-limit with npm install p-limit.Python library
Use ratelimit with
pip install ratelimit.Go library
Use rate with
go get golang.org/x/time/rate.bottleneck example
Best practices
Batch operations where possible
Batch operations where possible
Fetch events in larger pages (
limit=100) instead of many small requests. 1 request for 100 events is better than 10 requests for 10 events each.Use webhooks instead of polling
Use webhooks instead of polling
Webhooks deliver events in real time with zero polling overhead. You only receive traffic when something happens. See the webhooks overview.
Cache responses client-side
Cache responses client-side
Monitor and webhook configurations change infrequently. Cache
GET responses for list endpoints and invalidate only after mutations (create, update, delete).Implement exponential backoff
Implement exponential backoff
When you receive a 429, wait for the
Retry-After duration. If the retry also fails, double the wait time. See the error handling guide for complete retry implementations.Spread requests evenly
Spread requests evenly
Avoid sending all requests in a burst at the start of each window. Spread them evenly across each tier’s window to avoid hitting the limit early.
Error Handling
Retry strategies and error recovery patterns.
API Overview
Base URL, authentication, and conventions.