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

# Rate Limits

> API rate limit tiers, response headers, and handling 429 errors.

## Rate Limit Tiers

The AgentPowers API uses per-IP rate limiting to ensure fair usage and protect against abuse.

| Tier                   | Limit              | Applies To                                                              |
| ---------------------- | ------------------ | ----------------------------------------------------------------------- |
| **Public read**        | 60 requests/minute | Unauthenticated GET endpoints (search, skills list, categories, detail) |
| **Authenticated read** | 10 requests/minute | Authenticated GET endpoints (earnings, purchases, profile)              |
| **Write**              | 20 requests/minute | All POST, PATCH, DELETE endpoints (publish, checkout, reviews)          |

## Handling 429 Responses

When you exceed the rate limit, the API returns a `429 Too Many Requests` response:

```json theme={null}
{
  "detail": {
    "detail": "Rate limit exceeded",
    "code": "RATE_LIMITED"
  }
}
```

### Recommended Strategy

1. **Respect `Retry-After`** -- wait the specified number of seconds before retrying
2. **Exponential backoff** -- if `Retry-After` is not present, use exponential backoff starting at 1 second
3. **Cache responses** -- cache search results and skill details to reduce request volume
4. **Batch operations** -- for bulk installs or updates, add a small delay (200-500ms) between requests

### Example: Python with Retry

```python theme={null}
import time
import httpx

def api_request(url, headers, max_retries=3):
    for attempt in range(max_retries):
        response = httpx.get(url, headers=headers)

        if response.status_code == 429:
            retry_after = int(response.headers.get("Retry-After", 2 ** attempt))
            time.sleep(retry_after)
            continue

        return response

    raise Exception("Rate limit exceeded after retries")
```

## Notes

* Rate limits are per IP address, not per user
* The CLI (`ap` command) includes built-in retry logic for rate-limited requests
* The MCP server plugin handles rate limits transparently
* If you need higher limits for integration purposes, contact us

## Need Help?

<CardGroup cols={2}>
  <Card title="Email Support" icon="envelope" href="mailto:support@agentpowers.ai">
    Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help.
  </Card>

  <Card title="Discord Community" icon="discord" href="https://discord.gg/ECAzvrvHA">
    Join the **AgentPowers Discord** to get help from the team and other creators in real time.
  </Card>
</CardGroup>
