# Environments

Test and live keys address the same endpoints, the same corpus, and the same models. The difference
is billing, throughput, and retention — not behaviour.

| | Test (`sk_test_`) | Live (`sk_live_`) |
|---|---|---|
| Corpus | full, identical | full |
| Answer quality | identical | identical |
| Credits | 500/month, free, do not roll over | billed; see pricing-and-credits |
| `deep_review` | 5 per day | unlimited |
| Rate limit | 20 requests/minute | per plan, see rate-limits |
| Result retention | 7 days | 90 days |
| Webhooks | supported | supported |
| Uploaded documents | deletable, same retention rules | same |

## Why test uses the real corpus

Scholarly answers cannot be usefully mocked: a fixture corpus would give you a passing integration
and a broken product. Test keys are real calls with a free allowance and a lower ceiling.

> [!warning] Test results expire after 7 days
> A `srch_` ID created with a test key returns `404` after a week. Do not build fixtures that depend
> on a stored test resource ID.

## What is not deterministic

Answer text, ranking order, and paper selection may vary between identical calls at the same depth.
Assert on structure — status, citation presence, source IDs — not on exact strings.

## Switching to live

Swap the key. No code, base URL, or version-header change is needed.

## Related

authentication · api-keys · pricing-and-credits · rate-limits
