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

# Rate Limits

> Understand ChatAds API rate limits and quotas

## Overview

ChatAds uses rate limiting to ensure fair usage and service stability. Limits are applied per team and shared across all API keys.

All non-error requests count as requests for daily/monthly API limits; however, not all of these count as billable — meaning they don't cost you money. See [Reducing Costs](/chatads_api/reducing-costs) to learn more.

## Rate Limit Tiers

| Plan | Per Minute | Daily Requests | Monthly Requests |
| ---- | ---------- | -------------- | ---------------- |
| Free | 3,000      | 500            | 500              |
| PAYG | 3,000      | 10,000         | 300,000          |

The per-minute limit is a burst safety net shared across all plans. Daily and monthly limits vary by plan.

<Tip>
  Daily requests for PAYG users is to help avoid spam. Feel free to [reach out](mailto:team@getchatads.com) and request more.
</Tip>

## Rate Limit Headers

Each response includes rate limit information in the `meta.usage` object:

```json theme={null}
{
  "meta": {
    "usage": {
      "monthly_requests": 250,
      "daily_requests": 20,
      "daily_limit": 500,
      "is_free_tier": true,
      "free_tier_limit": 500,
      "free_tier_remaining": 250
    }
  }
}
```

## Rate Limit Errors

When you exceed your rate limits, you'll receive a `429` error with one of these codes:

| Error Code               | Trigger                                | Retry-After Header |
| ------------------------ | -------------------------------------- | ------------------ |
| `MINUTE_LIMIT_EXCEEDED`  | More than 3,000 requests in 60 seconds | `60` (seconds)     |
| `DAILY_LIMIT_EXCEEDED`   | Daily request cap reached              | `3600` (seconds)   |
| `MONTHLY_LIMIT_EXCEEDED` | Monthly request cap reached            | `3600` (seconds)   |

All rate limit errors include a `Retry-After` header indicating how long to wait (in seconds) before retrying.

```json theme={null}
{
  "data": null,
  "error": {
    "code": "MINUTE_LIMIT_EXCEEDED",
    "message": "Per-minute rate limit exceeded. Retry after 60 seconds."
  },
  "meta": {
    "request_id": "d6a8f6f2-3b5a-4f0a-81ab-1b4a4c9dd5ea",
    "timestamp": "2026-01-15T12:00:00Z",
    "version": "1.0.0"
  }
}
```

## Best Practices

<CardGroup cols={2}>
  <Card title="Monitor usage" icon="chart-line">
    Track your `usage` values to avoid hitting limits unexpectedly.
  </Card>

  <Card title="Implement backoff" icon="clock">
    When rate limited, wait before retrying. Use exponential backoff.
  </Card>

  <Card title="Cache responses" icon="database">
    Cache affiliate responses for identical queries to reduce API calls.
  </Card>

  <Card title="Upgrade when needed" icon="arrow-up">
    If you consistently hit limits, consider upgrading your plan.
  </Card>
</CardGroup>

## Upgrading Your Plan

To increase your rate limits:

1. Go to [app.getchatads.com/billing](https://app.getchatads.com/billing)
2. Switch to the PAYG plan
3. Complete the upgrade

<Info>
  Plan changes take effect immediately. Your new limits are available right away.
</Info>
