Skip to content
Docs
Core platformUpdated 2026-08-20

API keys

Create one-time visible secrets, store only hashes, authenticate bearer requests, and revoke access safely.

Key lifecycle

Creating a key returns a raw ts_live_* secret once. The database stores only:

  • SHA-256 hash;
  • readable prefix;
  • name and owner;
  • creation, expiry, last-used, and revocation timestamps.

The raw secret cannot be recovered later.

Create and use a key

Create keys from the authenticated API Keys page, then call the example endpoint:

bash
curl https://app.example.com/api/v1/me \
  -H 'Authorization: Bearer ts_live_...'

Validation

Bearer authentication rejects keys that are:

  • missing or malformed;
  • not found by hash;
  • revoked;
  • expired;
  • detached from a valid user.

Successful validation updates the last-used timestamp.

Revocation

Revocation keeps metadata for auditability but immediately rejects future bearer calls. The UI never shows the raw key again.

Extending scopes

The current contract can be extended with a scope column and centralized authorization checks. Keep scope evaluation in the API-key domain rather than scattering string comparisons across routes.

TanStarter SES documentationBuilt with TanStack Start and Content Collections.