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

# Rate Limits & Tiers

> Understand how API usage limits work, what each tier includes, and how to upgrade to Pro.

## Tiers

API usage is governed by tier-based, endpoint-specific rate limits. Every Partner API account starts on the **Free** tier.

| | Free | Pro |
| :- | :- | :- |
| Rate limits | Default limits (see below) | Higher limits, customizable per agreement |
| Commission | Per partner agreement | Per partner agreement |

> [!NOTE]
>
> Tier upgrades are handled manually. Contact the Houdini team through the [Partner Portal](https://app.houdiniswap.com/partner/dashboard) to request an upgrade.

You can see your current tier in the [Partner Dashboard](https://docs.houdini.com/analytics-and-settlement.md).

## Endpoint Limits

Rate limits are enforced per endpoint.

### Free Tier Limits

| Endpoint | Min | Hour | Day |
| :- | :- | :- | :- |
| quote | 10 | 20 | 50 |
| exchange | 5 | 15 | 10 |

### Pro Tier Limits

| Endpoint | Min | Hour | Day |
| :- | :- | :- | :- |
| quote | 500 | 2000 | 5000 |
| exchange | 50 | 500 | 2000 |

Pro limits are defaults. They can be adjusted per partner agreement. Use [Get rate limits](https://docs.houdini.com/api-reference/partner-account/get-rate-limits.md) to see the limits that apply to your account.

## Rate Limit Enforcement

When rate limits are exceeded, the API returns HTTP status code **429**:

**GraphQL**

```json theme={null}
{
  "errors": [
    {
      "message": "Too many quote requests. Try again in 45 seconds.",
      "extensions": {
        "code": 429,
        "type": "RATE_LIMIT_EXCEEDED",
        "retryAfter": 45,
        "limit": 45,
        "windowMs": 60000
      }
    }
  ]
}
```

**REST API**

```json theme={null}
{
  "code": 429,
  "type": "RATE_LIMIT_EXCEEDED",
  "message": "Too many quote requests. Try again in 45 seconds.",
  "extensions": {
    "retryAfter": 45,
    "limit": 45,
    "windowMs": 60000
  }
}
```

**Response Fields:**

| Field | Description |
| - | - |
| `code` | HTTP status code (429) |
| `type` | Error type: `RATE_LIMIT_EXCEEDED` |
| `message` | Operation-specific message indicating when to retry |
| `retryAfter` | Seconds until the rate limit resets |
| `limit` | Maximum requests allowed in the time window |
| `windowMs` | Time window in milliseconds (e.g., 60000 = 1 minute) |

> [!TIP]
>
> **Best Practice**: Implement exponential backoff when handling rate limit errors. Always respect the `retryAfter` value provided in the response.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.