Skip to main content
The limits below are per-account defaults — contact us to raise them.

Limits

LimitDefaultScope
Request rate50 requests / minute (token bucket)Per account
Concurrent WebSocket connections10Per account
Audio duration per request300 secondsPer request
Audio file size50 MBPer request

When you hit a limit

Both limit types return HTTP 429 with different error codes:
  • RATE_LIMIT_EXCEEDED (429) — request rate limit hit; retry with exponential backoff
  • CONCURRENT_LIMIT_EXCEEDED (429) — too many open WebSocket connections; close idle connections first
See Errors for the full error code reference.

Exponential backoff

A simple retry loop with exponential backoff handles transient 429s and 503s without hammering the API.
import time

import requests


def transcribe_with_retry(url, headers, files, data, max_retries=5):
    resp = None
    for attempt in range(max_retries):
        # timeout=180 leaves headroom over the server-side 90s ASR + 60s refinement limits
        resp = requests.post(url, headers=headers, files=files, data=data, timeout=180)
        if resp.status_code not in (429, 503):
            return resp
        time.sleep(min(2**attempt, 30))  # 1s, 2s, 4s, 8s, 16s
    return resp  # all retries exhausted — log and report with request_id