How it works
Guided identity verification (Guided ID) is the step in onboarding where an applicant proves their identity. Equals issues them a link to a hosted verification session, where they complete a liveness check and upload an identity document (in some cases we also ask for proof of address and visa / residence permit). Once the link has been issued, you can track how each applicant is progressing — whether they’ve opened it or completed it, and what the outcome was. There are two ways to consume the same information:- Get notified (push) - subscribe to the
IdentityVerificationStatusUpdatedwebhook to receive each state change as it happens. - Fetch on demand (pull) - call the list sessions endpoint to retrieve the current state whenever you need it.
correlationId, so you can use either or both. Results are always scoped to your own product - you only ever see sessions for applications and people that belong to you.
Guided ID sessions are only issued under the Managed by Equals KYC model. Under the Hybrid or Delegated model you handle verification yourself, so no sessions are created.
The status lifecycle
Every session moves through the same lifecycle, reported by thestatus field:
to_be_completed- the verification link has been issued but not yet startedin_progress- the applicant has opened the link and started the sessioncompleted- the applicant has finished the session; aresultis included
status is completed, a result is included: approved, declined, or resubmission_requested. The result field is omitted (not null) for every other status.
Get notified (push)
If you subscribe to theIdentityVerificationStatusUpdated webhook, you’ll receive an event each time a session changes state - so you can surface progress without polling. Because the status changes more than once, this event may fire multiple times for the same applicant.
Each event identifies the subject with exactly one of applicationId (personal application) or associatedPersonId (an associated person on a business application), and carries the correlationId, status, and - once completed - the result.
The webhook fires during the onboarding sequence, so it’s also covered in the onboarding webhooks guide. For the full payload structure, see IdentityVerificationStatusUpdated event details.
Fetch on demand (pull)
CallGET /v2/applications/identity-verification-sessions to retrieve a paginated list of sessions, sorted by createdAt descending (newest first), using the standard list envelope (count, limit, offset, rows).
Use this when:
- You can’t host a webhook receiver - poll the endpoint instead of subscribing.
- You need an ad-hoc status check - answer “where is this applicant up to?” on demand.
- You’re reconciling - recover state after a missed or duplicated webhook delivery, matching on
correlationId.
Filtering
Use the optional query parameters to narrow the list:
Passing both
applicationId and associatedPersonId returns the intersection. Passing no filter returns every session visible to your product.
Response
Each row inrows has the following shape:
Example
Personal vs business applications
How sessions map to rows depends on the application type:- For a personal application, the session belongs to the applicant.
applicationIdis the applicant’s application andassociatedPersonIdis omitted. - For a business application, sessions belong to the associated people (directors, UBOs, and the applicant), so each row also carries
associatedPersonId.
id but differ in applicationId. Because pagination counts rows rather than unique sessions, one session for a person on three applications counts as three rows.
Reconciling push and pull
The webhook and the endpoint describe the same sessions, so you can safely combine them - for example, subscribe to the webhook for real-time updates and fall back to the endpoint to recover from a missed delivery. Match a pulled row to a webhook event usingcorrelationId, which is identical on both sides.
Things to know
resultis omitted (notnull) wheneverstatusis anything other thancompleted- on both the webhook and the endpoint.associatedPersonIdis present only for business applications; personal rows and events don’t carry it.- In the pull response, rows that share an
idbut differ inapplicationIddescribe the same session reported against different applications - don’t treat them as separate sessions. - You can only see sessions for applications and people belonging to your own product.
Next steps
- Onboarding webhooks - Track an application through to approval, including where the status webhook fits the flow
- About KYC profiles - Retrieve the verified identity-document details captured during verification
- About onboarding - How accounts are created and verified