> ## Documentation Index
> Fetch the complete documentation index at: https://docs.typelessapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rate limits

> Default per-account limits for request rate, WebSocket concurrency, and audio size, plus retry guidance.

The limits below are per-account **defaults** — contact us to raise them.

## Limits

| Limit                            | Default                             | Scope       |
| -------------------------------- | ----------------------------------- | ----------- |
| Request rate                     | 50 requests / minute (token bucket) | Per account |
| Concurrent WebSocket connections | 10                                  | Per account |
| Audio duration per request       | 300 seconds                         | Per request |
| Audio file size                  | 50 MB                               | Per 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](/reference/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.

```python theme={null}
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
```
