<!-- Generated by scripts/gen-developer-docs.ts from src/developers/content/interview/authentication.md — do not edit. -->

# Authentication and keys

> Partner keys are issued by Neural Bits, carry scopes, and are sent as a bearer token on every call.

Send `Authorization: Bearer <key>`. Keys look like `i100x_live_…` or `i100x_test_…` and are issued by your Neural Bits
contact; each can expire and be revoked. `GET /api/partner/v1/me` returns your partnership, the key's prefix and scopes,
`livemode` and your limits.

## Scopes

| Scope | What it allows |
|---|---|
| `practice:write` | Create practice invites |
| `practice:read` | Read a practice invite's status |
| `stats:read` | Read published monthly counts |
| `hooks:manage` | Subscribe, test and remove webhooks |

A call without the scope it needs answers `403 PARTNER_SCOPE_MISSING`. Keep keys on your server, never in a browser or an
app.

## Limits and retries

Each key may send 60 requests per minute per key, the same limit for every partner (`GET /me` shows the current limit).
Above it, calls answer `429 INTEGRATION_RATE_LIMITED` with `Retry-After`. Creating a practice invite requires an
`Idempotency-Key`: the same key and body within 24 hours return the first answer; the same key with another body is
`409 IDEMPOTENCY_CONFLICT`.
