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

# Rate Limiting

> Protect your budget with request rate limits.

Rate limiting helps you control costs and prevent abuse by limiting the number of requests that can be made in a given time period.

## Configuring Rate Limits

Set rate limits in your project settings:

1. Go to your project **Settings**
2. Navigate to **Gateway** → **Rate Limiting**
3. Configure your limits

## Limit Types

### Requests Per Minute (RPM)

Limit the total number of requests per minute:

```
RPM: 100  →  Max 100 requests per minute
```

### Tokens Per Minute (TPM)

Limit the total tokens (input + output) per minute:

```
TPM: 100000  →  Max 100,000 tokens per minute
```

### Daily Request Limit

Limit total requests per day:

```
Daily: 10000  →  Max 10,000 requests per day
```

## Rate Limit Headers

When rate limiting is enabled, responses include headers:

```
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1699900000
```

## Handling Rate Limits

When a rate limit is exceeded, the gateway returns a `429 Too Many Requests` response:

```json theme={null}
{
  "error": {
    "message": "Rate limit exceeded. Please retry after 45 seconds.",
    "type": "rate_limit_error",
    "retry_after": 45
  }
}
```

### Implementing Retries

```python theme={null}
import time
from openai import OpenAI, RateLimitError

client = OpenAI(
    base_url="https://gateway.muxx.dev/v1",
    default_headers={"X-Muxx-Api-Key": "muxx_sk_live_xxxxxxxxxxxx"}
)

def call_with_retry(messages, max_retries=3):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(
                model="gpt-4o",
                messages=messages
            )
        except RateLimitError as e:
            if attempt < max_retries - 1:
                wait_time = e.retry_after or 60
                time.sleep(wait_time)
            else:
                raise
```

## Per-User Rate Limits

You can apply rate limits per user by including user metadata:

```python theme={null}
client = OpenAI(
    base_url="https://gateway.muxx.dev/v1",
    default_headers={
        "X-Muxx-Api-Key": "muxx_sk_live_xxxxxxxxxxxx",
        "X-Muxx-User-Id": "user_123"
    }
)
```

Then configure per-user limits in the dashboard.

## Rate Limit Alerts

Set up alerts to notify you when approaching limits:

1. Go to **Settings** → **Alerts**
2. Add a rate limit alert
3. Choose threshold (e.g., 80% of limit)
4. Select notification channel (email, Slack, webhook)
