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

# Rate limits

> Request allowances per account, the 429 response, and the 30-second request limit.

Requests share an allowance **per account**. All users and tokens of your account
draw from the same allowance; rotating a token or changing an IP address does not
reset it.

## Allowances

Each allowance is a token bucket: it permits an initial **burst** and then
**refills** at a steady rate. The burst is not a per-minute quota - after a
burst, you can keep sending at the refill rate indefinitely. Every accepted
request uses one unit.

| Allowance | Applies to | Burst | Refill |
| - | - | - | - |
| Reads | Reading voice agents, settings, tools, eval scenarios and eval runs | 120 | 2 per second |
| Writes | Creating, updating and deleting voice agents, settings, tools and eval scenarios; cancelling eval runs | 20 | 1 per 3 seconds |
| Tool execution | **Execute a tool** | 10 | 1 per 6 seconds |
| Eval start | **Start an eval run** | 2 | 1 per 10 seconds |
| Conversations | Listing and reading conversations | 30 | 1 per 2 seconds |
| Outbound reads | Listing and reading batches | 120 | 2 per second |
| Outbound cancel | **Cancel a call** | 10 | 1 per 6 seconds |

**Placing outbound calls** has fixed windows instead: 20 single-call requests per
5 minutes and 5 bulk requests per 10 minutes per account. Independently of the
API, at most 20 calls may be started per 5 minutes across API, dashboard and
campaign calls. A bulk request counts as one request; your account's call limits
still govern how many calls it places.

## When you exceed an allowance

The API returns `429` with a `Retry-After` header (seconds) and the standard
error envelope. The operation has **not** executed.

```json theme={null}
{
  "error": "mf-core:rate-limit-exceeded",
  "message": "Rate limit exceeded",
  "details": { "policy": "api_write", "retry_after": 3 }
}
```

Wait at least `Retry-After` seconds before retrying, and add a small random delay
when several clients retry together. Other requests can consume the refilled
allowance in the meantime, so a retry can still receive `429`.

Outbound call placement returns its own error shape on `429` (see the endpoint
pages); the `Retry-After` header is sent only when a request window was hit.

If the API cannot check the allowance it returns `503` with
`mf-core:rate-limiter-unavailable` and no reset time. Retry with bounded
exponential backoff.

## Request time limit

Every API call must finish within **30 seconds**. A request that takes longer is
aborted and returns `503`:

```json theme={null}
{
  "error": "mf-core:api-request-timeout",
  "message": "The API request exceeded the 30-second time limit",
  "details": {}
}
```

Narrow the request (fewer items, a tighter filter) and retry.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.