Authentication and authorization endpoints for the Wallboard API.
| Grant Type | Use Case | Recommended |
|---|---|---|
authorization_code |
Interactive login (web/mobile apps) | Yes |
refresh_token |
Refresh expired access tokens | Yes |
password |
Service account API access | Legacy only |
The recommended authentication method for all new integrations.
For applications that cannot securely store a client secret (SPAs, mobile apps):
client_secret requiredcode_challenge/code_verifier) is mandatoryFor server-side applications that can securely store credentials:
client_secret is requiredYou can create your own OAuth clients in the Wallboard UI:
Configuration options:
| Setting | Description |
|---|---|
redirect_uri |
Allowed callback URLs (comma-separated) |
Public |
Enable for PKCE-only clients (no secret) |
| Grant types | Select: authorization_code, refresh_token |
Legacy Support Only - Do not use for new integrations.
This grant type exists for backward compatibility with existing M2M (machine-to-machine) integrations.
Requirements:
grant_type=password with user credentialsRegular users cannot use the password grant type unless the "Service Account" option is enabled on their account.
Default client for service accounts:
| Property | Value |
|---|---|
| client_id | default-client |
| client_secret | 76211db5d8ea |
| Basic Auth Header | Basic ZGVmYXVsdC1jbGllbnQ6NzYyMTFkYjVkOGVh |
| Token | Default | Extended (kmsi=true) |
|---|---|---|
| Access Token | 30 minutes | 30 minutes |
| Refresh Token | 1 hour | 30 days |
OAuth2 token endpoint supporting multiple grant types.
Exchange authorization code for tokens:
grant_type=authorization_codecode from authorization callbackcode_verifier if PKCE was usedredirect_uri matching the authorization requestRefresh expired access tokens:
grant_type=refresh_tokenrefresh_tokenDirect login for service accounts:
grant_type=passwordusername and passwordtotp for 2FA| Authorization | string Example: Basic ZGVmYXVsdC1jbGllbnQ6NzYyMTFkYjVkOGVh Basic authentication with OAuth client credentials.
Format: Required for confidential clients. Not needed for public clients (PKCE). |
| grant_type required | string Enum: "authorization_code" "refresh_token" "password" OAuth2 grant type |
| code | string Authorization code (for authorization_code grant) |
| code_verifier | string PKCE code verifier (for authorization_code grant with PKCE) |
| redirect_uri | string <uri> Redirect URI (must match authorization request) |
| refresh_token | string Refresh token (for refresh_token grant) |
| username | string <email> Service account email (for password grant) |
| password | string <password> Service account password (for password grant) |
| totp | string TOTP code for 2FA (if enabled on service account) |
| client_id | string Client ID (alternative to Basic auth header) |
| client_secret | string Client secret (alternative to Basic auth header) |
| kmsi | boolean Default: false Keep Me Signed In - extends refresh token validity to 30 days |
curl -X POST 'https://{server}/oauth/token' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'grant_type=authorization_code' \ -d 'code=AUTH_CODE_FROM_CALLBACK' \ -d 'code_verifier=YOUR_CODE_VERIFIER' \ -d 'client_id=your-client-id' \ -d 'redirect_uri=https://your-app.com/callback'
{- "access_token": "e1c1ae22-61bf-45e8-85a7-65d66a6cdc46",
- "token_type": "bearer",
- "expires_in": 1800,
- "refresh_token": "a5fc1f68-8f7d-43b7-937c-68729b3b4f17",
- "refresh_total_validity_seconds": 3600,
- "jwt_access_token": "string",
- "customerId": 0,
- "readOnly": false
}