Sessions
KYC Workflows & Sessions
Sessions
GET
Sessions
Manage KYC onboarding sessions for end users. Sessions track progress through workflows, store document uploads, and manage the onboarding process from creation to approval.
Overview
Sessions represent individual KYC onboarding processes for end users. Each session:- Links to a Workflow: Defines the steps and requirements
- Tracks Progress: Monitors which steps are completed
- Stores Documents: Uploaded documents are stored securely
- Runs Validations: Automated checks (watchlists, crypto, adverse media, face match)
- Public Access: End users access sessions via public access tokens
Endpoints
| Method | Endpoint | Description |
|---|---|---|
POST | /kyc/sessions | Create a new session |
GET | /kyc/sessions | List sessions (paginated) |
GET | /kyc/sessions/{session_id} | Get session details |
PATCH | /kyc/sessions/{session_id} | Update session status |
DELETE | /kyc/sessions/{session_id} | Delete session |
POST | /kyc/sessions/{session_id}/generate-link | Generate/regenerate access link |
POST | /kyc/sessions/{session_id}/extend | Extend the public access link expiration |
POST | /kyc/sessions/{session_id}/corrections | Request client corrections for selected steps |
POST | /kyc/sessions/{session_id}/validate | Run validation checks |
POST | /kyc/sessions/{session_id}/process | Process completed session |
GET | /kyc/sessions/{session_id}/documents/{doc_id}/url | Get document download URL |
POST | /kyc/sessions/{session_id}/subsessions | Create a subsession |
GET | /kyc/sessions/{session_id}/subsessions | List subsessions |
POST | /kyc/sessions/{session_id}/subsessions/{sub_id}/regenerate-link | Regenerate subsession link |
DELETE | /kyc/sessions/{session_id}/subsessions/{sub_id} | Delete subsession |
Authentication
Requireskyc:create permission for creating sessions and kyc:read permission for retrieving sessions. Include your Bearer token in the Authorization header.
Create Session
Create a new KYC onboarding session for an end user.Endpoint
Request Body Parameters
Request Example
Response Format
The
custom_tags field is a snapshot of the workflow’s custom_tags at the time the session was created. If you later update the workflow’s tags, existing sessions retain their original tags. These tags are included in all session webhook payloads.List Sessions
Retrieve all sessions for your tenant with pagination, filtering, and optional summary statistics.Endpoint
Query Parameters
Request Example
Response Format
Summary Statistics
Wheninclude_summary=true, the response includes aggregate statistics for all sessions matching the filters (not just the current page):
| Field | Description |
|---|---|
status_counts | Count of sessions per status |
inbox_counts | Count of sessions per operational inbox |
total | Total number of sessions matching filters |
avg_risk_score | Average risk score across scored sessions |
sessions_with_risk_score | Number of sessions that have a risk score |
validation_counts | Count of sessions that executed each validation type |
Get Session Details
Retrieve detailed information about a specific session.Endpoint
Request Example
Response Format
Process Session
Process a completed session - extract document data, run cross-validation, face matching, and external validations. This is the main endpoint to call after a session is completed to get final results.Endpoint
Request Example
Response Format
Processing Results Fields
| Field | Description |
|---|---|
extraction_results | Extracted data from each uploaded document |
cross_validation | Consistency check between documents and form data |
face_match_result | Face comparison between ID and selfie (if configured) |
external_validations | Results from watchlist, crypto, and adverse media checks |
web_validation_results | URL validation results (if configured) |
final_decision | Automatic decision: approved, flagged, manual_review, or rejected |
Update Session Status
Manually update the status of a session. Use this endpoint for reviewer decisions and operational transitions such as reactivating a session.Endpoint
Request Body Parameters
Request Example
Response Format
Request Client Corrections
Request remediation from the end user for specific workflow steps, fields, or document types. The session moves toawaiting_client_correction, affected steps move to needs_correction, and the existing public access link remains valid.
Use this when a reviewer needs the customer to fix submitted data or replace documents instead of approving or rejecting immediately.
Endpoint
Request Body Parameters
Each item incorrections supports:
| Field | Type | Description |
|---|---|---|
step_id | string | Workflow step that needs correction |
field_ids | array | Optional form field IDs to correct |
document_types | array | Optional document types to replace or re-upload |
message | string | User-visible instructions shown in the public session |
Request Example
Response Format
When corrections are requested, any current terminal
final_decision fields are cleared so the session is no longer displayed as currently approved or rejected while remediation is pending.Generate Access Link
Generate or regenerate the public access link for a session. Use this to get a new link if the previous one was compromised or needs to be refreshed.Endpoint
Request Example
Response Format
Extend Session Expiration
Extend a session’s public access link. This is useful before requesting corrections if the original link has expired.Endpoint
Request Body Parameters
Request Example
Run Validation Checks
Manually trigger validation checks for a session without full processing.Endpoint
Request Example
Response Format
Get Document URL
Get a presigned URL to download a document from a session.Endpoint
Request Example
Response Format
Delete Session
Delete a session and all associated data.Endpoint
Request Example
Response Format
Session Statuses
| Status | Description |
|---|---|
draft | Session created but not yet started |
active | Session is in progress |
completed | All steps completed, ready for processing |
processing | Session is being processed |
processed | Processing complete, awaiting review |
expired | Session expired (TTL exceeded) |
approved | Session approved |
rejected | Session rejected |
manual_review | Session requires manual review |
awaiting_client_correction | Reviewer requested customer corrections; the public link remains usable for the affected steps |
Canonical Compliance Statuses
List responses includecompliance_status, a stable operational status for queues and dashboards. It groups low-level session statuses into reviewer-facing inbox states.
| Compliance Status | Technical status Values | Description |
|---|---|---|
incomplete | draft, expired | Session was not completed or is no longer available |
pending | active, processing | Session is in progress or being processed |
manual_review | manual_review | Reviewer action is required |
approved | approved | Session has an active approval decision |
rejected | rejected | Session has an active rejection decision |
remediation | awaiting_client_correction | Customer corrections are pending |
completed | completed, processed | Customer completed the flow or processing finished without a terminal decision |
Step Statuses
| Status | Description |
|---|---|
pending | Step not yet started |
in_progress | Step in progress |
completed | Step completed |
skipped | Step was skipped |
needs_correction | Step was reopened because a reviewer requested remediation |
Status Codes
| Code | Description |
|---|---|
| 200 | Success |
| 201 | Created - Session created successfully |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Missing or invalid token |
| 403 | Forbidden - Insufficient permissions |
| 404 | Not Found - Session or workflow not found |
| 500 | Internal Server Error |
Subsessions
Subsessions allow you to collect verification from related parties (UBOs, submerchants, directors) during the main onboarding process. Each subsession is a complete, independent session linked to a parent session.Create Subsession
Create a new subsession for verification of a related party.Endpoint
Request Body Parameters
Request Example
Response Format
List Subsessions
Get all subsessions for a parent session with completion status.Endpoint
Request Example
Response Format
Regenerate Subsession Link
Generate a new access link for a subsession if the original was lost or compromised.Endpoint
Request Example
Response Format
Delete Subsession
Remove a subsession from a parent session.Endpoint
Request Example
Response Format
Typical Workflow
- Create Session: Create a session linked to a workflow
- Share Link: Send the
access_linkto the end user - User Completes Steps: User uploads documents and fills forms via public API
- Subsessions (if applicable): User creates subsessions for UBOs/submerchants via the public API
- Process Session: Call
/processendpoint when session is completed, or rely on workflow auto-processing if enabled - Review Results: Check
processing_resultsfor automatic decision - Request Corrections (optional): Move the session to
awaiting_client_correctionwithPOST /corrections - User Resolves Corrections: The public link shows only the affected steps and open correction guidance
- Final Decision: Update status to
approvedorrejectedif manual review is needed