Skip to main content

Rate Limiting

Brewry implements rate limiting to ensure fair usage and system stability.

Rate Limits

  • 1 request per second per API key

Rate Limit Headers

Every API response includes rate limit information in the headers:

X-RateLimit-Limit: 1
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1616236800
HeaderDescription
X-RateLimit-LimitMaximum requests allowed per second
X-RateLimit-RemainingRemaining requests in the current window
X-RateLimit-ResetUnix timestamp when the rate limit resets

Rate Limit Exceeded

When you exceed the rate limit, you'll receive a 429 Too Many Requests response:

{
"status": "error",
"error": "Rate limit exceeded",
"code": "RATE_LIMIT_EXCEEDED",
"retry_after": 1
}

Best Practices

  1. Implement Exponential Backoff

    import time
    import random

    def make_request():
    max_retries = 3
    base_delay = 1

    for attempt in range(max_retries):
    try:
    response = requests.post(url, json=data, headers=headers)
    if response.status_code != 429:
    return response

    retry_after = int(response.headers.get('Retry-After', base_delay))
    time.sleep(retry_after + random.uniform(0, 1))
    except Exception as e:
    if attempt == max_retries - 1:
    raise e
  2. Monitor Rate Limits

    • Track remaining requests
    • Implement alerts for approaching limits
    • Log rate limit responses
  3. Optimize Request Patterns

    • Batch requests when possible
    • Distribute requests across time
    • Use appropriate request intervals

Support

Need help with rate limits?