> For the complete documentation index, see [llms.txt](https://docs.synthdata.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.synthdata.co/getting-started-old/copy-of-rate-limits.md).

# Copy of Rate limits

Synth API enforces rate limits based on your subscription plan.

## Limits by Plan

| Plan         | Requests/Second | Requests/Month |
| ------------ | --------------- | -------------- |
| Standard     | 10              | 50 One time    |
| Professional | 10              | 500            |
| Enterprise   | Custom          | Custom         |

## Response Headers

Every response includes rate limit information:

```http
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1738329660
```

## Handling Rate Limits

When you exceed the limit, you'll receive `429 Too Many Requests`:

```json
{
  "error": "Rate limit exceeded",
  "message": "Please try again in 42 seconds",
  "retry_after": 42
}
```

### Retry Logic

{% code title="example.py" %}

```python
import time
import requests

def make_request_with_retry(url, headers):
    response = requests.get(url, headers=headers)
    
    if response.status_code == 429:
        retry_after = int(response.headers.get('Retry-After', 60))
        time.sleep(retry_after)
        return make_request_with_retry(url, headers)
    
    return response.json()
```

{% endcode %}

## Best Practices

* Cache responses — Predictions don't change frequently.
* Batch requests — Use the `limit` parameter to get multiple miners.
* Monitor usage — Check headers on every response.
* Implement backoff — Use exponential backoff for retries.

## Next Steps

* [View pricing](broken://pages/3d911d70dd3c6fe8e8e6640a6805234fe8bdf2fe)
* [Handle errors](broken://pages/881681ff5db1046d1ddbd1f8bc1ecc181dca7c8a)
