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

# Rate Limits

> Per-IP and per-workspace rate limits protect the API from abuse.

## Limits

| Endpoint             | Limit                      |
| -------------------- | -------------------------- |
| `POST /v1/auth/sync` | 10 requests / IP / hour    |
| `POST /v1/renders`   | 120 requests / IP / minute |
| `POST /v1/tasks/*`   | 300 requests / IP / minute |

Workspace-level monthly quotas (applies to the `free` plan):

| Resource       | Free plan      |
| -------------- | -------------- |
| Render minutes | 60 min / month |
| AI tasks       | 500 / month    |

## Rate limit headers

When a limit is exceeded, the API returns **429 Too Many Requests**:

```json theme={null}
{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests. Retry after 47 seconds."
  }
}
```

## Quota exceeded

When your monthly quota is exhausted, job submissions return **429**:

```json theme={null}
{
  "error": {
    "code": "quota_exceeded",
    "message": "Monthly render quota exhausted. Upgrade your plan or wait for reset."
  }
}
```

Upgrade your plan in the [console](https://console.framelane.io/billing) to increase limits.

## Best practices

* Use [idempotency keys](/renders/overview#idempotency) to safely retry without double-submitting.
* For agent workflows, use the `batch-tasks` [Agent Skill](/agent-skills/batch-tasks) to submit multiple tasks concurrently without hitting per-request limits.
* Subscribe to webhooks instead of polling to avoid unnecessary GET requests.
