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

# Rate limits and quotas

> Per-endpoint request limits, field maximums, and account quotas.

## Request rate

Limits are applied per IP address, per minute.

| Endpoints                                                            |      Limit |
| -------------------------------------------------------------------- | ---------: |
| `/api/search/*`                                                      | 60 req/min |
| `/api/billing/*`                                                     | 60 req/min |
| `/api/auth/signin`, `/signup`, `/forgot-password`, `/reset-password` | 10 req/min |

Exceeding a limit returns `429`:

```json theme={null}
{
  "success": false,
  "message": "Too many requests. Please slow down and try again.",
  "result": { "code": "rate_limited" }
}
```

Back off exponentially with jitter. Hammering a `429` extends it.

<Note>
  Rate limits are separate from credits. A `429` means you sent requests too
  quickly; a `402` means you ran out of balance.
</Note>

## Field maximums

Values above a maximum are **clamped**, not rejected. A `limit` of 500 returns
50 results and is billed for 50.

| Field         | Endpoint                |        Default |        Maximum |
| ------------- | ----------------------- | -------------: | -------------: |
| `query` / `q` | `/api/search/query`     |           none | 512 characters |
| `limit`       | `/api/search/query`     |             10 |             50 |
| `urls`        | `/api/search/contents`  |           none |         8 URLs |
| `days`        | `/api/billing/usage`    |             30 |            365 |
| `limit`       | `/api/billing/usage`    |            100 |            500 |
| `limit`       | `/api/billing/ledger`   |             50 |            200 |
| `limit`       | `/api/billing/payments` |             20 |            100 |
| `name`        | `/api/auth/keys`        | `Untitled key` |  60 characters |

## Account quotas

| Quota                     |           Limit |
| ------------------------- | --------------: |
| Live API keys per account |              25 |
| Minimum top-up            |          \$5.00 |
| Maximum top-up            |      \$5,000.00 |
| Password length           | 8–72 characters |

## Staying under the limits

<AccordionGroup>
  <Accordion title="Batch your extractions" icon="layer-group">
    `POST /api/search/contents` takes up to 8 URLs in one call. Eight separate
    requests cost the same in credits but consume eight times the rate budget.
  </Accordion>

  <Accordion title="Re-fetch instead of re-searching" icon="rotate-left">
    `GET /api/search/searches/{id}` returns a stored result. It is free and
    avoids spending both a charge and a rate slot on a query you already ran.
  </Accordion>

  <Accordion title="Skip enrichment when you only need links" icon="link">
    `enrich: false` removes the per-page extraction cost and returns faster.
  </Accordion>
</AccordionGroup>
