Skip to content

Rate Limiting

The Beeving API is limited to 60 requests per minute per workspace.

Quota Headers

Every response includes headers to track your usage:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1708689600
HeaderDescription
X-RateLimit-LimitMaximum requests per minute
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp of the next reset

Handling Rate Limits

When you exceed the limit, you receive a 429 error:

json
{
  "message": "Too Many Attempts.",
  "code": 429
}

Retry Implementation

js
async function apiCall(url, options, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const res = await fetch(url, options)

    if (res.status === 429) {
      const retryAfter = parseInt(res.headers.get('Retry-After') || '30')
      await new Promise(r => setTimeout(r, retryAfter * 1000))
      continue
    }

    return res
  }
  throw new Error('Max retries exceeded')
}

Tips to Optimize Usage

  • Use per_page=100 to reduce the number of pages to fetch
  • Use bulk endpoints (POST /contacts/bulk) for mass operations
  • Cache data that changes infrequently (lists, tags, pipeline stages)
  • Use webhooks instead of polling for real-time events

API v1.0