Overview
We are an OAuth 2.0 provider. Your app sends a user to us, they approve the access you asked for, and we hand back a bearer token. Your app uses that token to call the API on behalf of that user. This is the same model as “Login with GitHub”. It is OAuth 2.0, not OpenID Connect, so there is noid_token. To read the identity of the user who approved access, call GET /api/v1/user with the profile:read scope.
Quickstart
Go from a registered app to a logged in user and their profile in a few minutes.
Authorization code
The full user consent flow with PKCE for apps acting on behalf of a user.
Client credentials
A server to server flow for your own backend, with no user prompt.
Scopes
Every scope you can request and what each one grants.
Versioning
Dated API versions, the version header, and how to pin a version.
Endpoints
The token and authorize endpoints that issue and refresh tokens.
Which flow do I use
Acting for a user
A third party app where people sign in with their own account. Use the
authorization code flow. Register a Web application.
Acting for yourself
Your own backend using your own account, with no other users. Use the
client credentials flow. Register a Service application.
Base URLs
The authorization endpoints are unversioned. The REST API is served under/api/v1.
Register an application
Applications are created in the console. Open Settings, then Applications, then create an application.1
Choose a type
Pick Web application for the authorization code flow, or Service for the client credentials
flow.
2
Add redirect URIs
Web applications must list every redirect URI they will use. We match the
redirect_uri on
each request against this list exactly.3
Select scopes
Grant only the scopes your app needs. See Scopes.
4
Copy the credentials
You receive a
client_id and a client_secret. The secret is shown once. Store it server
side and never ship it to a browser.Tokens at a glance
Access token
A bearer token sent as
Authorization: Bearer <token>. It is valid for one hour.Refresh token
Returned by the authorization code flow. It is valid for thirty days and rotates every time
you use it. The client credentials flow does not use refresh tokens.