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

# Rate Limits & Tiers

> Understand how API usage limits work and how to upgrade your tier.

## **Tiers**

API usage is governed by tier-based, endpoint-specific rate limits.

### Free Tier

Default limits apply upon registration.

### Pro Tier

Higher default limits apply. For Pro tier partners, limits can be adjusted per agreement.

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

## **Endpoint Limits**

Rate limits are enforced per endpoint.

### Free Tier Limits

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

### Pro Tier Limits

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

## Rate Limit Enforcement

When rate limits are exceeded, the API will throw an error with HTTP status code **429**: \
**Example:**

<Tabs>
  <Tab title="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
          }
        }
      ]
    }
    ```
  </Tab>

  <Tab title="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
      }
    }
    ```
  </Tab>
</Tabs>

**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.
</Tip>
