Rate Limits

Voicebip enforces per-workspace rate limits using a Redis sliding window. Limits vary by tier.

Limits by Tier

TierRequests / MinuteConcurrent Calls
Starter (free)1,00010
Builder5,000100
Scale20,000500

429 Response

When your rate limit is exceeded, the API returns HTTP 429 with a Retry-After header:

1{
2 "error_code": "RATE_LIMITED",
3 "message": "Rate limit exceeded. Retry after 12 seconds.",
4 "request_id": "req_xxxxxxxxxxxx",
5 "documentation_url": "https://docs.voicebip.com/errors/RATE_LIMITED"
6}

The Retry-After header contains the number of seconds to wait before retrying.

How It Works

Rate limits are tracked per workspace (not per API key). The sliding window resets every minute. All API endpoints count toward the same limit.

Handling Rate Limits

1import time
2import requests
3
4def api_call_with_retry(url, headers, max_retries=3):
5 for attempt in range(max_retries):
6 resp = requests.get(url, headers=headers)
7 if resp.status_code == 429:
8 wait = int(resp.headers.get('Retry-After', 5))
9 time.sleep(wait)
10 continue
11 return resp
12 raise Exception("Rate limit exceeded after retries")