Skip to main content
Architecture summary before you code. Copy-paste flow: Quick Start. Deep dive: Technical guide.

Public vs confidential

Never put client_secret in browser JavaScript or mobile apps. Use a public client + PKCE.

One-line flow

Register → authorize (browser + PKCE) → token → /v1 with Bearer → refresh on expiry → revoke on disconnect.

Production checklist

  • Exact redirect URI (trailing slash matters)
  • Validate state on callback
  • Keep code_verifier until token exchange
  • Persist refresh tokens atomically (they rotate)
  • Minimum scopes at authorize

Next steps