Skip to main content
OAuth 2.0 lets your application request access to a user’s Lumin account on their behalf. The user reviews the requested permissions on a consent screen and explicitly approves or denies access. This makes OAuth 2.0 the right choice when your application acts on behalf of individual Lumin users rather than a single shared workspace. Lumin supports the authorization code flow with two client types:
Public (PKCE) apps do not receive refresh tokens. When the access token expires, the user must re-authorize. If your app needs long-lived background access, create a Private/Server app instead.

Register your application

Before you can use OAuth 2.0, register your application in Lumin. You must be a Workspace Owner to do this. Each Workspace can have up to 5 integration apps.
1

Open Integration apps

Log in to Lumin and go to Settings → Developer settings → Integration apps, then click Create app.
2

Set application details

Enter an Application name and select an Application type:
  • Public Application — no client secret, uses PKCE. Choose this for mobile apps, SPAs, or desktop apps.
  • Private Application — server-based with a client secret. Choose this for backend or server-side applications.
You cannot change the application type after creation. If you need a different type, create a new application.
3

Select scopes

Choose only the scopes your application actually needs. The scopes you select appear on the user consent screen. See Scopes for the full list.
4

Configure redirect URIs

Enter one or more redirect URIs where Lumin will send users after they authorize your app.
  • Must use https:// or an app-specific scheme (e.g., myapp://callback)
  • No wildcards, IP addresses, or relative paths
  • Separate multiple URIs with commas
5

Configure consent screen

Fill in the information users will see when granting access: app logo, website URL, Privacy Policy URL, Terms of Use URL, and a contact email.
6

Save and retrieve credentials

Click Create. You will receive:
  • Client ID — required for all OAuth 2.0 flows
  • Client Secret — issued only for Private Applications
Store these credentials securely. Do not hardcode them in your source code or commit them to repositories.

Authorization code flow

Use this flow for server-side applications. The flow uses a client secret and issues refresh tokens so your server can maintain access without user re-interaction.
1

Redirect the user to the authorization endpoint

Send the user to Lumin’s authorization URL with your app’s parameters:
Include offline_access in the scope to receive a refresh token.After the user approves access, Lumin redirects them to your redirect_uri with an authorization code in the query string.
2

Exchange the authorization code for tokens

Make a server-to-server POST request to exchange the code for an access token and refresh token:
Lumin returns the tokens:
3

Call Lumin APIs with the access token

Pass the access token in the Authorization header as a Bearer token:
4

Refresh the access token

Access tokens expire after 1 hour. Use the refresh token to get a new access token without requiring the user to re-authorize:

Scopes

Scopes define what your application can access. Request only the scopes your app actually needs — users see the requested scopes on the consent screen.
Private integration apps receive the openid and offline_access scopes by default.
You can view the scope string for an existing application by opening its Application details modal in Settings → Developer settings → Integration apps.