Credentials & Projects

Project credential lifecycle — mint, rotate, revoke


# Credentials & Projects

A **Project** is an external consumer of Persona's infrastructure — your app, not a Persona user session.

- Create in Developer Studio → `Projects` → `New` — you become `Admin`.
- Each Project has **credentials**: `<keyId>.<secret>` shown once. This is the `PERSONA_CREDENTIAL` you set as `process.env.PERSONA_CREDENTIAL`.

```
Authorization: Bearer <keyId>.<secret>
```

## Lifecycle

`ACTIVE` → `SUSPENDED` (credentials stop authenticating; reversible) → `DELETING` (grace-period, cancellable) → `DELETED`.

- **Revoke** a credential — it stops immediately.
- **Suspend** a Project — all its credentials stop.
- **Admin surface** (members, credentials, suspend/restore) uses Clerk session auth — **not** the machine credential this SDK uses. Manage there: Developer Studio.

## Rules

- Never bundle the credential (see [SDK quickstart](/docs/sdk/v0.9.0/quickstart)). Server-side only.
- Rotate by minting a new credential, deploying it, then revoking the old one.
- Rate-limited mutations use `429 Retry-After` + `Idempotency-Key` header for safe retries.