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

# Errors and limits

> Rate limits, server caps, exit codes, and the exact error strings — with the fix for each.

## Limits

Chat-backed commands (`ask`, `exec`, `ask-batch`, `wait`) are limited per machine to **10 per rolling minute and 100 per rolling hour**; a trip exits `1` with a wait hint. The backend can't yet serve many concurrent research turns — use `ask-batch`, not your own loop. Direct commands aren't limited. All commands are free today; `cost_usd` fields report for observability only.

| Cap                             | Value                                                             |
| ------------------------------- | ----------------------------------------------------------------- |
| `search --query` values         | 8 (`semantic-search`: 4)                                          |
| Results per call                | 50 (`--max-results` is clamped; paginate with `--offset`)         |
| `--offset`                      | Clamped at 500 for `search`, 200 for `semantic-search` — silently |
| `related --n`, `excerpts --max` | 1–50                                                              |
| `ask --estimate`                | Not rate-limited                                                  |

## Exit codes

| Code  | Meaning                                                                      |
| ----- | ---------------------------------------------------------------------------- |
| `0`   | success                                                                      |
| `1`   | error — bad input, rate-limit trip, or no credential in headless mode        |
| `124` | `--timeout` reached; a partial answer is still returned and the session kept |
| `130` | interrupted with Ctrl-C                                                      |
| `141` | broken pipe (e.g. `\| head`); exits silently                                 |

## Errors

| Message                                                                                                                                | Means                                                                                                                                     | Fix                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| `nisa: not authenticated. Set RAPIDREVIEW_KEY, or run ./nisa (interactive) or ./nisa login in a terminal.`                             | A subcommand ran headless with no credential                                                                                              | Set the key, or sign in once in a terminal                                             |
| `nisa: no TTY for interactive onboarding. Set RAPIDREVIEW_KEY or run ./nisa login in a terminal.`                                      | Bare `nisa` (the chat) with no credential and no terminal                                                                                 | Same                                                                                   |
| `403 API key management requires browser login`                                                                                        | `nisa keys list\|create\|revoke` while a key is the credential in use — `RAPIDREVIEW_KEY`, or the key the CLI's browser onboarding stored | Manage keys in the web app (Settings → API Keys), or `nisa logout && nisa login` first |
| `rate limit: N chat calls in the last 60s (limit: 10). Wait ~Ns and retry.` · `… in the last hour (limit: 100). Wait ~Nmin and retry.` | Chat cap tripped                                                                                                                          | Wait; use `ask-batch`; prefer direct commands                                          |
| `search: too many queries (N); cap is 8`                                                                                               | Too many `--query` values                                                                                                                 | Split the call                                                                         |
| `excerpts` `--format bibtex\|csv` rejected                                                                                             | Excerpts are JSON only                                                                                                                    | Drop `--format`                                                                        |
| `--detach is incompatible with --workspace`                                                                                            | `exec` can't detach while it must serve local tools                                                                                       | Drop one                                                                               |
| Exit `124`                                                                                                                             | `--timeout` reached                                                                                                                       | Partial answer is in the JSON; session kept                                            |

With a TTY and no credential you get the sign-in picker, not an error. Freshness caveats (`index_latest_pub_month`) are on [Searching the corpus](/docs/nisa/guides/searching#read-the-ranking-honestly).
