curl --request GET \
--url 'https://api.hopae.com/connect/v2/verifications/{verificationId}' \
--user '{appId}:{appSecret}'
{
"verificationId": "019bc4f2-8a31-7c5e-9d02-4f7a1b3e60d8",
"status": "completed",
"providerId": "smart-id",
"workflowId": "wf_01J8XJ4Q2R7TPX9K",
"flowType": "push",
"createdAt": "2026-09-03T09:18:31.774Z",
"verifiedAt": "2026-09-03T09:19:52.110Z",
"expiresAt": "2026-09-03T09:48:31.774Z",
"acr": "urn:hopae:loa:4",
"hopae_loa": 4,
"hopae_loa_label": "high",
"connectionInstanceId": "conn_01J8XK2P4M9QR3TV",
"connectionId": "smart-id",
"credentialId": "smart-id",
"verificationModel": "disclosure"
}
{
"verificationId": "019bc4f4-5e77-7a9c-b0d1-6c3a2f8e9b44",
"status": "awaiting_user_action",
"providerId": "freja",
"workflowId": "wf_01J8XJ4Q2R7TPX9K",
"flowType": "qr",
"flowDetails": {
"qrData": "<value to render as a QR code>"
},
"createdAt": "2026-09-03T09:12:44.301Z",
"expiresAt": "2026-09-03T09:42:44.301Z",
"polling": { "intervalMs": 2000, "maxDurationMs": 1800000 },
"hopae_loa": 3,
"hopae_loa_label": "substantial",
"connectionInstanceId": "conn_01J8XN2C6QF9W1AZ",
"connectionId": "freja-plus",
"credentialId": "freja-plus",
"verificationModel": "disclosure"
}
{
"verificationId": "019bc4f4-5e77-7a9c-b0d1-6c3a2f8e9b44",
"status": "failed",
"providerId": "freja",
"workflowId": "wf_01J8XJ4Q2R7TPX9K",
"flowType": "qr",
"error": {
"code": "provider_error",
"message": "The user cancelled the authentication",
"details": { "provider_code": "<the provider's own code>", "provider_type": "provider_error" }
},
"createdAt": "2026-09-03T09:12:44.301Z",
"failedAt": "2026-09-03T09:13:51.204Z",
"expiresAt": "2026-09-03T09:42:44.301Z",
"connectionInstanceId": "conn_01J8XN2C6QF9W1AZ",
"connectionId": "freja-plus",
"credentialId": "freja-plus",
"verificationModel": "disclosure"
}
Get Verification Status
Retrieve the status and timing of a verification session. No personal attributes are returned.
curl --request GET \
--url 'https://api.hopae.com/connect/v2/verifications/{verificationId}' \
--user '{appId}:{appSecret}'
{
"verificationId": "019bc4f2-8a31-7c5e-9d02-4f7a1b3e60d8",
"status": "completed",
"providerId": "smart-id",
"workflowId": "wf_01J8XJ4Q2R7TPX9K",
"flowType": "push",
"createdAt": "2026-09-03T09:18:31.774Z",
"verifiedAt": "2026-09-03T09:19:52.110Z",
"expiresAt": "2026-09-03T09:48:31.774Z",
"acr": "urn:hopae:loa:4",
"hopae_loa": 4,
"hopae_loa_label": "high",
"connectionInstanceId": "conn_01J8XK2P4M9QR3TV",
"connectionId": "smart-id",
"credentialId": "smart-id",
"verificationModel": "disclosure"
}
{
"verificationId": "019bc4f4-5e77-7a9c-b0d1-6c3a2f8e9b44",
"status": "awaiting_user_action",
"providerId": "freja",
"workflowId": "wf_01J8XJ4Q2R7TPX9K",
"flowType": "qr",
"flowDetails": {
"qrData": "<value to render as a QR code>"
},
"createdAt": "2026-09-03T09:12:44.301Z",
"expiresAt": "2026-09-03T09:42:44.301Z",
"polling": { "intervalMs": 2000, "maxDurationMs": 1800000 },
"hopae_loa": 3,
"hopae_loa_label": "substantial",
"connectionInstanceId": "conn_01J8XN2C6QF9W1AZ",
"connectionId": "freja-plus",
"credentialId": "freja-plus",
"verificationModel": "disclosure"
}
{
"verificationId": "019bc4f4-5e77-7a9c-b0d1-6c3a2f8e9b44",
"status": "failed",
"providerId": "freja",
"workflowId": "wf_01J8XJ4Q2R7TPX9K",
"flowType": "qr",
"error": {
"code": "provider_error",
"message": "The user cancelled the authentication",
"details": { "provider_code": "<the provider's own code>", "provider_type": "provider_error" }
},
"createdAt": "2026-09-03T09:12:44.301Z",
"failedAt": "2026-09-03T09:13:51.204Z",
"expiresAt": "2026-09-03T09:42:44.301Z",
"connectionInstanceId": "conn_01J8XN2C6QF9W1AZ",
"connectionId": "freja-plus",
"credentialId": "freja-plus",
"verificationModel": "disclosure"
}
Headers
Basic <base64(appId:appSecret)>. See Authentication.Path Parameters
Response
awaiting_user_action, authenticating, completed, failed, or cancelled. processing is reserved and not currently returned. You do not receive expired: an unfinished verification is deleted at expiresAt, and this endpoint then returns 404. See Expiry.smart-id, freja, google-wallet), the same value Create Verification returned.qr, redirect, push, dc, or query. A query session is already terminal at creation. Reading it again returns the stored result.status is completed.status is failed.status is cancelled.status is failed. Carries type, code (for example user_cancelled, loa_insufficient), message, and optionally providerError with the provider’s own code.substantial).conn_…).google-wallet-us-mdl.us-mdl.disclosure or match.curl --request GET \
--url 'https://api.hopae.com/connect/v2/verifications/{verificationId}' \
--user '{appId}:{appSecret}'
polling hint: intervalMs is how long to wait between polls (per connection — some providers reject faster status reads), maxDurationMs is the session window.
{
"verificationId": "019bc4f2-8a31-7c5e-9d02-4f7a1b3e60d8",
"status": "completed",
"providerId": "smart-id",
"workflowId": "wf_01J8XJ4Q2R7TPX9K",
"flowType": "push",
"createdAt": "2026-09-03T09:18:31.774Z",
"verifiedAt": "2026-09-03T09:19:52.110Z",
"expiresAt": "2026-09-03T09:48:31.774Z",
"acr": "urn:hopae:loa:4",
"hopae_loa": 4,
"hopae_loa_label": "high",
"connectionInstanceId": "conn_01J8XK2P4M9QR3TV",
"connectionId": "smart-id",
"credentialId": "smart-id",
"verificationModel": "disclosure"
}
{
"verificationId": "019bc4f4-5e77-7a9c-b0d1-6c3a2f8e9b44",
"status": "awaiting_user_action",
"providerId": "freja",
"workflowId": "wf_01J8XJ4Q2R7TPX9K",
"flowType": "qr",
"flowDetails": {
"qrData": "<value to render as a QR code>"
},
"createdAt": "2026-09-03T09:12:44.301Z",
"expiresAt": "2026-09-03T09:42:44.301Z",
"polling": { "intervalMs": 2000, "maxDurationMs": 1800000 },
"hopae_loa": 3,
"hopae_loa_label": "substantial",
"connectionInstanceId": "conn_01J8XN2C6QF9W1AZ",
"connectionId": "freja-plus",
"credentialId": "freja-plus",
"verificationModel": "disclosure"
}
{
"verificationId": "019bc4f4-5e77-7a9c-b0d1-6c3a2f8e9b44",
"status": "failed",
"providerId": "freja",
"workflowId": "wf_01J8XJ4Q2R7TPX9K",
"flowType": "qr",
"error": {
"code": "provider_error",
"message": "The user cancelled the authentication",
"details": { "provider_code": "<the provider's own code>", "provider_type": "provider_error" }
},
"createdAt": "2026-09-03T09:12:44.301Z",
"failedAt": "2026-09-03T09:13:51.204Z",
"expiresAt": "2026-09-03T09:42:44.301Z",
"connectionInstanceId": "conn_01J8XN2C6QF9W1AZ",
"connectionId": "freja-plus",
"credentialId": "freja-plus",
"verificationModel": "disclosure"
}
Errors
| HTTP | Code | When |
|---|---|---|
| 404 | SESSION_VERIFICATION_NOT_FOUND | Unknown id, a session of another app, an environment mismatch, or a verification past its expiresAt |
Authorizations
Basic base64(appId:appSecret). See Authentication.
Path Parameters
The session id.
Response
Status.
The session id.
Current status. processing is reserved and not currently returned.
awaiting_user_action, authenticating, processing, completed, failed, expired, cancelled Catalog provider id, for example smart-id. The same value Create Verification returned.
The workflow that ran.
The flow.
qr, redirect, push, dc, query Flow details while the session waits for the user.
ISO 8601.
ISO 8601.
ISO 8601. Present when completed.
Present when failed.
Present when cancelled.
Present when failed: type, code, message.
Authentication Context Class Reference.
Numeric Level of Assurance, 1 to 5.
LoA label, for example substantial.
The activated connection instance the session runs on (conn_…).
Catalog connection id.
Catalog credential id.
disclosure or match.
disclosure, match Present while the session is not terminal. Wait intervalMs between polls. It is set per connection, because some providers reject faster status reads. maxDurationMs is the session window.
Show child attributes
Show child attributes

