The auth model in one paragraph
Every request to the stablebrowse API includes anAuthorization: Bearer sb_live_... header. The key maps to your business — the paying customer account. It doesn’t identify individual end-users; that’s a separate field you pass on each request (see End users). Keys are independent: rotate or revoke one without affecting the others.
Mint a key
Via the dashboard (recommended):- Sign in to the dashboard
- Open Settings
- In API Keys, click Create API key
- Optional: give it a label like
productionorstaging-us-east - Copy the
sb_live_...value shown in the banner
Use it
Set the key as a header on every request:Rotate a key
The safest pattern is a brief period where both old and new keys are live:- In the dashboard, Create a new key
- Roll the new secret out to your deploys / env vars
- Once traffic is confirmed working on the new key, Revoke the old one
Revoke a key
Dashboard: Settings → API Keys → Revoke on the key’s row. A revoked key starts returning403 Forbidden immediately on every request. Other keys keep working. Revocation is irreversible — if you revoked by mistake, just mint a new one.
What keys can do
Every data-plane endpoint the SDK exposes — tasks, sessions, end-user credentials — accepts your API key:
Key lifecycle (create, list, revoke) is dashboard-only so a leaked key can’t mint more to entrench itself.
Rate limits
Every business gets a monthly 15-task quota on the free tier. The counter is shared across every way you submit tasks — dashboard chat, API key, any SDK. It resets automatically at the start of each calendar month (UTC). Over the limit, the API returns429 Too Many Requests:
Raising the limit
Email team@stablebrowse.ai with your use case and expected volume. Limits are raised per business as part of the usage-based pricing conversation.Best practices
- Never commit keys to git. Use env vars, secret managers (AWS Secrets Manager, Doppler, 1Password CLI, etc.), or your platform’s secret store.
- One key per environment.
production,staging,local-dev-alice. Makes rotation and revocation painless. - Don’t share keys across integrations. If you’re running a cron and a web backend, give each its own key labeled accordingly — that way the dashboard’s
lastUsedAtcolumn tells you which integration is active. - On suspicion of leak, revoke immediately and mint a new one. Faster than investigating; cheap to do.
