Fetch the full verification decision, persist it, and reconcile KYC status.
Fallback for a missed webhook, and the way to pull extracted
document/liveness/AML data onto the user record on demand.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Fetches the full identity-verification decision for a user from the verification provider, persists it onto the user record, and reconciles the user's kyc_status from that decision. This is the manual fallback for a missed verification webhook and the way to pull extracted document, liveness, and AML data onto the user on demand.
When called, the endpoint locks the user row, retrieves the latest decision for the user's verification session, stores a compact summary and the raw payload, applies any resulting status change, and persists a normalized verification record. If billing is configured to charge on completion, a terminal decision (Approved, Declined, or In Review) meters the verification; this is deduplicated by session, so it cannot double-bill with the webhook.
Authentication & access
- Requires a Bearer token in the
Authorizationheader. - Permission constant:
kyc.verification.initiate. - Allowed dashboard roles:
owner,operations. - API credentials must carry the
kyc.verification.initiatepermission. - The verification provider must be configured; otherwise the request returns
503.
Path parameters
user_id(string, required) - The user whose verification decision to fetch. The user must belong to the authenticated client.
Behavior
- The user must be in the provider-driven verification mode. A user configured for
external_attestationis rejected with400. - The user must already have a verification session; if none exists, the request returns
404. - Status reconciliation and the stored decision are committed even when persisting the normalized verification record or enqueuing document file-fetch fails (those steps are best-effort and do not fail the request).
Response
200 OK returns the reconciled decision:
user_id(string) - The user's ID.kyc_status(string) - The user's current KYC status after reconciliation. One ofnone,pending,approved,rejected,on_hold.session_id(string, nullable) - The verification session the decision was fetched from.decision(object, nullable) - Compact summary of the verification decision.updated_at(string, nullable) - When the decision was last fetched/reconciled.message(string) - Human-readable result.
Error responses
| Status | When |
|---|---|
400 | The user is configured for external_attestation and has no provider-driven decision to fetch. |
404 | No user with this user_id exists for the authenticated client, or the user has no verification session. |
422 | user_id failed request validation. |
502 | The verification provider returned a server error (5xx), or the decision fetch failed unexpectedly. |
503 | The verification provider is not configured, is temporarily unavailable (circuit open or a provider 4xx), or is unreachable. |
Standard 401 (authentication), 403 (insufficient permission or role), and 429 (rate limit) responses apply to every endpoint and are documented in the Error reference.