Rate Limits
Rate Limits
OwlStack limits how many requests an API key can make per minute, so one integration cannot degrade the service for everyone else. Each key gets its own budget, so a busy key never eats another key's allowance.
Limits by plan
The ceiling depends on the plan behind the key. Every plan with API access sits well above what a publishing integration needs, and Business runs on the highest ceiling, for teams automating at agency volume.
We do not publish the exact threshold, because it is a moving abuse control rather than a promise. Read the current value from the X-RateLimit-Limit header instead of hardcoding a number.
Rate limit headers
Every response carries the current state of your budget:
X-RateLimit-Limit: <requests allowed in this window>
X-RateLimit-Remaining: <requests left>
X-RateLimit-Reset: <unix timestamp>| Header | Description |
|---|---|
X-RateLimit-Limit | Requests allowed in the current window |
X-RateLimit-Remaining | Requests left in the current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
Retry-After | Seconds to wait. Sent on a 429 only |
When rate limited
Go over the limit and you get a 429 Too Many Requests:
{
"error": "too_many_requests",
"message": "Rate limit exceeded. Please try again later."
}The response also carries Retry-After, and X-RateLimit-Reset tells you when the window turns over.
Best practices
- Wait for
Retry-Afteron a 429, then retry with exponential backoff - Check
X-RateLimit-Remainingbefore firing a burst of requests - Publish in batches instead of one request per post
- Cache reads you make repeatedly