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

# Rate Limits

> ARouter API rate limits, credit-based quotas, and how to check your current limits.

ARouter enforces rate limits to ensure fair access and protect service availability. Making additional accounts or API keys does **not** increase your rate limits — capacity is governed globally per account.

## Checking Your Current Limits

To check the rate limit or credits remaining on an API key, make a `GET` request to `/v1/key`:

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    import requests

    response = requests.get(
        "https://api.arouter.ai/v1/key",
        headers={"Authorization": f"Bearer {AROUTER_API_KEY}"}
    )
    print(response.json())
    ```
  </Tab>

  <Tab title="Node.js">
    ```typescript theme={null}
    const response = await fetch("https://api.arouter.ai/v1/key", {
      headers: { Authorization: `Bearer ${process.env.AROUTER_API_KEY}` },
    });
    const keyInfo = await response.json();
    console.log(keyInfo);
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl https://api.arouter.ai/v1/key \
      -H "Authorization: Bearer $AROUTER_API_KEY"
    ```
  </Tab>
</Tabs>

A valid API key returns:

```json theme={null}
{
  "data": {
    "label": "my-key",
    "limit": 100.0,
    "limit_reset": "monthly",
    "limit_remaining": 72.45,
    "usage": 27.55,
    "usage_daily": 2.10,
    "usage_weekly": 8.40,
    "usage_monthly": 27.55,
    "is_free_tier": false
  }
}
```

| Field                                  | Description                                                   |
| -------------------------------------- | ------------------------------------------------------------- |
| `limit`                                | Credit limit for this key (null = unlimited)                  |
| `limit_reset`                          | When the limit resets (`daily`, `weekly`, `monthly`, or null) |
| `limit_remaining`                      | Credits remaining before the key is blocked                   |
| `usage`                                | All-time credits consumed                                     |
| `usage_daily` / `_weekly` / `_monthly` | Usage for the current UTC period                              |
| `is_free_tier`                         | Whether the account has purchased credits before              |

## Free Tier Limits

Models with IDs ending in `:free` are available without purchasing credits, subject to these limits:

| Condition                         | RPM        | RPD           |
| --------------------------------- | ---------- | ------------- |
| No paid credits purchased         | 20 req/min | 50 req/day    |
| At least \$5 in credits purchased | 20 req/min | 1,000 req/day |

<Note>
  Free tier limits apply to free model variants (`:free` suffix) only. Paid models require a credit balance.
</Note>

## DDoS Protection

Cloudflare's DDoS protection automatically blocks requests that dramatically exceed reasonable usage patterns. These blocks are temporary and lift once traffic normalizes.

## Negative Balance

If your account has a negative credit balance, you may see `402 Payment Required` errors — including on free models. Adding credits to bring your balance above zero restores access.

## Per-Key Spending Limits

You can configure spending limits on individual API keys to control costs:

* **Limit**: Maximum credits the key can consume
* **Reset interval**: `daily`, `weekly`, `monthly`, or `never`

Set limits when creating or updating a key via the [Key Management API](/en/api-reference/keys/create-key).

## Model-Specific Limits

Some high-demand models may have additional per-model rate limits independent of your account's overall quota. If you encounter `429 Too Many Requests` errors on a specific model, consider:

* Using the `:floor` or `:nitro` variant to access different provider endpoints
* Specifying an ordered candidate model list to spread load across models
* Implementing exponential backoff and retry logic in your client

See [Error Handling](/en/guides/error-handling) for retry best practices.
