Properties
Create a key
In the dashboard: Settings → API keys → Create key, then confirm with your password (and a code from your authenticator app when 2FA is on). Or from a session-authenticated request:code out when 2FA is off; it is required when 2FA is on. A wrong
password or code is 401 invalid_credentials / invalid_totp_code. Wrong
passwords count toward the step-up password lock (separate from sign-in’s),
and every code tried counts toward the 2FA code cap shared with sign-in;
either lock answers
423 account_locked (lockout behavior).
A code works once.
400 key_limit_reached; revoke unused keys first.
List and audit
GET /keys (works with either credential) returns metadata only. lastUsedAt
tells you whether a key is actually in use, useful before revoking during
rotation.
Revoke
expiresAt passes.
revokedReason says who revoked a key: user (you), or the recovery action
that did (password_changed, admin_password_reset, admin_2fa_reset,
account_deactivated).
Rotation playbook
1
Create the replacement key
Give it a name that identifies the consumer (
payments-service-2026Q3).2
Deploy the new key
Update the secret in your deployment; confirm traffic via
lastUsedAt.3
Revoke the old key
DELETE /keys/{id} takes effect instantly. Anything still using it starts
receiving 401 invalid_api_key, which is how you find stragglers.