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

# Limits and errors

> Rate limits and every error the Periphery API returns.

## Rate limit

Your account may make one API request per second, across both endpoints; console searches count against the same limit. The check runs before anything else, so a rejected request costs nothing. Over the limit, the API answers `429`:

```json theme={null}
{"error": "rate limit: 1 request per second"}
```

Space requests one second apart, or wait a second and retry on this error. There is no burst allowance.

## No quota

Searches are unlimited on every plan, so neither endpoint has a monthly quota. Requesting more pages of the same query costs nothing beyond the per-second limit. A request with an empty `q` returns an empty page:

```json theme={null}
{"total": 0, "page": 1, "hits": []}
```

The `has:creds` filter always applies to API queries: API access and the filter are both part of the Plus and Pro plans.

## Error format

Errors are JSON objects with a single `error` string:

```json theme={null}
{"error": "app not found"}
```

| Status | Message                                    | Endpoint   | Meaning                                                          |
| ------ | ------------------------------------------ | ---------- | ---------------------------------------------------------------- |
| `401`  | `missing API key`                          | both       | No key header.                                                   |
| `401`  | `invalid API key`                          | both       | Unknown or rotated key.                                          |
| `403`  | `API access requires the Plus or Pro plan` | both       | The account is on Free.                                          |
| `404`  | `app not found`                            | `/v1/apps` | No live app with that hostname; dead hosts answer this too.      |
| `429`  | `rate limit: 1 request per second`         | both       | Slow down.                                                       |
| `502`  | `search backend error`                     | both       | The search backend did not answer in time. Retry after a moment. |

Successful responses are `200` with the JSON body described on each endpoint page.
