- An app’s App ID (
client_id) and App Secret (client_secret) from Developers → API Settings. - Your redirect URI in that app’s Redirect URL Allowlist. Matching is exact.
- At least one connection that is activated and enabled in the app’s workflow.
Endpoints
1. Redirect to /auth
All parameters, including the
ui_* display options and private_mode: Authorization reference.
Pre-select a connection
Passui_connection_id (for example smart-id) to skip the country and eID picker. The connection must be enabled in the workflow. Otherwise the user picks as usual. ui_country pre-selects only the country.
2. Handle the callback
Success
Failure
state, and iss if your library supports it (https://connect.hopae.com). Every user-facing failure (cancel, provider error, expiry) arrives as error=access_denied. An unknown workflow_id, or acr_values that no enabled connection meets, arrives as error=invalid_request. An app without a workflow shows an error page instead of redirecting.
3. Exchange the code
On your backend, with your App ID and App Secret as HTTP Basic credentials (client_secret_basic). Form fields (client_secret_post) also work. Codes are single-use and expire after 5 minutes. PKCE (S256) is supported but optional.
access_token (10 minutes) and an id_token (30 minutes). No refresh token is issued. Every verification is a new authorization.
The ID token carries no personal data. Validate its signature (JWKS), iss (https://connect.hopae.com), aud (your App ID), and nonce. It names the level of assurance (acr, hopae_loa) and the connection that ran (hopae_verification.connection_id). Details: Token reference.
4. Read the result
user. Add ?provenance=true&missing_claims=true for the audit trail and the claims the source could not provide. The payload is the same as the REST API’s. See Return Data.
To recognise a returning person, use user.source_id, not sub. See Return Data.
Library examples
Any certified OIDC library works: set the issuer tohttps://connect.hopae.com and override the authorization endpoint with https://connect.hopae.com/v2/auth. These libraries also validate the ID token for you.
- Node.js
- Java (Spring)
Troubleshooting
Hosted error page instead of a redirect
Hosted error page instead of a redirect
The
redirect_uri is not on the allowlist of the app named by client_id. Scheme, host, port, path, and trailing slash must match exactly.invalid_grant at /token
invalid_grant at /token
The code expired (5 minutes) or was already used, or
redirect_uri differs from the authorization request.invalid_client at /token
invalid_client at /token
Send the App ID and App Secret of the same app as HTTP Basic credentials.
userinfo has no user data
userinfo has no user data
Add
hopae to scope.No eIDs offered on the hosted page
No eIDs offered on the hosted page
Activate a connection and enable it in the workflow you run. Production apps need their own activations.

