List cases
GET/v1/cases
- Scopes
cases:read
Filters combine with AND. A cursor is bound to the filter it was issued for; another filter with that cursor is 400. Invalid filter value is 400 schema_validation_failed.
Parameters
| Field | Type | Required |
|---|
cursorquery | string | no |
|---|
limitquery | integer | no |
|---|
statequeryOnly cases in this state. | enum: created, collecting, submitted, processing, action_required, manual_review, approved, rejected, ... | no |
|---|
applicant_typequeryOnly cases of applicants of this type. | enum: person, company | no |
|---|
countryqueryOnly cases whose country_context.document_issuer_country or customer_jurisdiction equals this code. | string | no |
|---|
referencequeryOnly cases of the applicant with this external_id (exact match). | string | no |
|---|
created_fromqueryCreated at or after this time. | string (date-time) | no |
|---|
created_toqueryCreated before this time. | string (date-time) | no |
|---|
Responses
200CaseList400401403404409412413415422428429503
Create a case
POST/v1/cases
- Scopes
cases:write- Required header
Idempotency-Key
Request bodyCaseCreate
| Field | Type | Required |
|---|
applicant_id | string (uuid) | yes |
|---|
purpose | string | yes |
|---|
policy_version_id | string (uuid) | yes |
|---|
country_context | CountryContext | yes |
|---|
parent_case_id | string (uuid) | no |
|---|
related_party_processing_context_idApproved processing context for related person cases of this company case: purpose and region of the company case, published policy without company checks. Related cases (invitations and createRelatedPartyCase) are created in it; without it they are refused. Allowed only for a company applicant. | string (uuid) | no |
|---|
metadata | Metadata | no |
|---|
processing_context_id | string (uuid) | yes |
|---|
Responses
201Case400401403404409412413415422428429503
Error codesconfiguration_error
Get a case
GET/v1/cases/{case_id}
- Scopes
cases:read
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Responses
200Case400401403404409412413415422428429503
Submit a case
POST/v1/cases/{case_id}/submit
- Scopes
cases:submit- Required header
Idempotency-Key- Required header
If-Match
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyCaseSubmit
| Field | Type | Required |
|---|
evidence_ids | array of string (uuid) | yes |
|---|
consent_record_ids | array of string (uuid) | yes |
|---|
graph_version | integer | no |
|---|
input_manifest_sha256 | string | yes |
|---|
basis_record_id | string (uuid) | yes |
|---|
Responses
202Case400401403404409412413415422428429503
Cancel a case
POST/v1/cases/{case_id}/cancel
- Scopes
cases:cancel- Required header
Idempotency-Key- Required header
If-Match
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyReasonAction
| Field | Type | Required |
|---|
reason_code | string | yes |
|---|
note | string | no |
|---|
Responses
200Case400401403404409412413415422428429503
List case sessions
GET/v1/cases/{case_id}/sessions
- Scopes
sessions:read
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
cursorquery | string | no |
|---|
limitquery | integer | no |
|---|
Responses
200SessionList400401403404409412413415422428429503
Create an applicant session
POST/v1/cases/{case_id}/sessions
- Scopes
sessions:write- Required header
Idempotency-Key
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodySessionCreate
| Field | Type | Required |
|---|
channel | enum: hosted, iframe, native_ios, native_android | yes |
|---|
locale | string | yes |
|---|
allowed_origin | string (uri) | no |
|---|
return_url | string (uri) | no |
|---|
broker_client_idTenant broker credential (BrokerBearer of kind tenant_broker with sessions:renew in the same tenant and region) bound to an iframe session at issuance; only this broker can renew the session with its refresh token. Without it the iframe session lasts until the access token expires. Not allowed for other channels. | string (uuid) | no |
|---|
Responses
201SessionIssued400401403404409412413415422428429503
Error codesconfiguration_error
List case links
GET/v1/cases/{case_id}/hosted-links
- Scopes
sessions:read
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
cursorquery | string | no |
|---|
limitquery | integer | no |
|---|
Responses
200HostedLinkSummaryList400401403404409412413415422428429503
Create a verification link
POST/v1/cases/{case_id}/hosted-links
- Scopes
sessions:write- Required header
Idempotency-Key
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyHostedLinkCreate
| Field | Type | Required |
|---|
locale | string | yes |
|---|
return_url | string (uri) | no |
|---|
expires_in_seconds | integer | no |
|---|
Responses
201HostedLink400401403404409412413415422428429503
Error codesconfiguration_error
List case checks
GET/v1/cases/{case_id}/checks
- Scopes
checks:read
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
cursorquery | string | no |
|---|
limitquery | integer | no |
|---|
Responses
200CheckResultList400401403404409412413415422428429503
Authorize a file upload
POST/v1/cases/{case_id}/uploads
- Scopes
evidence:write- Required header
Idempotency-Key
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyUploadAuthorize
| Field | Type | Required |
|---|
kind | enum: document_front, document_back, passport_data_page, face_video, face_image, nfc_transcript, corporate_document, address_document, ... | yes |
|---|
content_type | string | yes |
|---|
byte_count | integer | yes |
|---|
sha256 | string | yes |
|---|
capture_attempt_id | string (uuid) | no |
|---|
document_profile_id | string | no |
|---|
Responses
201UploadAuthorization400401403404409412413415422428429503
Error codesconfiguration_errorcase_upload_quota_exceeded
Complete a file upload
POST/v1/cases/{case_id}/uploads/complete
- Scopes
evidence:write- Required header
Idempotency-Key
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyUploadComplete
| Field | Type | Required |
|---|
upload_id | string (uuid) | yes |
|---|
sha256 | string | yes |
|---|
byte_count | integer | yes |
|---|
Responses
202Evidence400401403404409412413415422428429503
List case evidence
GET/v1/cases/{case_id}/evidence
- Scopes
evidence:read
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
cursorquery | string | no |
|---|
limitquery | integer | no |
|---|
Responses
200EvidenceList400401403404409412413415422428429503
Get the ownership graph
GET/v1/cases/{case_id}/graph
- Scopes
kyb:read
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Responses
200Graph400401403404409412413415422428429503
Replace graph nodes
PUT/v1/cases/{case_id}/graph/nodes
- Scopes
kyb:write- Required header
If-Match
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyGraphNodesUpdate
| Field | Type | Required |
|---|
nodes | array of EntityInput | yes |
|---|
reason_code | string | yes |
|---|
Responses
200Graph400401403404409412413415422428429503
Create a relationship
POST/v1/cases/{case_id}/graph/relationships
- Scopes
kyb:write- Required header
Idempotency-Key- Required header
If-Match
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyRelationshipCreate
| Field | Type | Required |
|---|
from_entity_id | string (uuid) | yes |
|---|
to_entity_id | string (uuid) | yes |
|---|
role | enum: shareholder, claimed_ubo, director, representative, trustee, settlor, protector, beneficiary, ... | yes |
|---|
economic_share_percent | oneOf | no |
|---|
voting_share_percent | oneOf | no |
|---|
control_description | string | no |
|---|
effective_from | string (date) | no |
|---|
effective_to | string (date) | no |
|---|
evidence_ids | array of string (uuid) | yes |
|---|
share_class | string | no |
|---|
denominator_basis | enum: total_issued_equity, class_issued_equity, total_voting_rights, class_voting_rights, other, unknown | yes |
|---|
assertion_status | enum: claimed, unknown | yes |
|---|
source_reference | string | no |
|---|
conflicting_assertion_ids | array of string (uuid) | no |
|---|
lower_share_percent | oneOf | no |
|---|
upper_share_percent | oneOf | no |
|---|
Responses
201Relationship400401403404409412413415422428429503
Remove a relationship
DELETE/v1/cases/{case_id}/graph/relationships/{relationship_id}
- Scopes
kyb:write- Required header
If-Match
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
relationship_idpath | string (uuid) | yes |
|---|
Responses
204400401403404409412413415422428429503
List case reports
GET/v1/cases/{case_id}/reports
- Scopes
reports:read
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
cursorquery | string | no |
|---|
limitquery | integer | no |
|---|
Responses
200ReportList400401403404409412413415422428429503
Create a report
POST/v1/cases/{case_id}/reports
- Scopes
reports:write- Required header
Idempotency-Key
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyReportCreate
| Field | Type | Required |
|---|
format | enum: json, pdf, both | yes |
|---|
locale | string | yes |
|---|
include_evidence_index | boolean | yes |
|---|
Responses
202Report400401403404409412413415422428429503
List case decisions
GET/v1/cases/{case_id}/decisions
- Scopes
decisions:read
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
cursorquery | string | no |
|---|
limitquery | integer | no |
|---|
Responses
200DecisionList400401403404409412413415422428429503
Issue appeal access
POST/v1/cases/{case_id}/appeal-access
- Scopes
appeals:issue- Required header
Idempotency-Key
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyAppealAccessCreate
| Field | Type | Required |
|---|
channel | enum: email, sms, copy_link | yes |
|---|
recipient | string | no |
|---|
locale | string | yes |
|---|
basis_profile_id | string (uuid) | yes |
|---|
Responses
201AppealAccess400401403404409412413415422428429503
Register processing basis evidence
POST/v1/cases/{case_id}/processing-basis
- Scopes
basis:write- Required header
Idempotency-Key
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyExternalBasisEvidence
| Field | Type | Required |
|---|
profile_id | string (uuid) | yes |
|---|
notice_id | string (uuid) | yes |
|---|
notice_version | string | yes |
|---|
subject_reference | string (uuid) | yes |
|---|
event_at | string (date-time) | yes |
|---|
evidence_ids | array of string (uuid) | yes |
|---|
attestation_format | enum: contractual_record, signed_assertion | yes |
|---|
attestation_sha256 | string | yes |
|---|
purpose | string | yes |
|---|
basis_type | enum: customer_contract, customer_obligation | no |
|---|
obligation_ref | string | no |
|---|
obligation_data_categories | array of string | no |
|---|
Responses
201ConsentRecord400401403404409412413415422428429503
GET/v1/cases/{case_id}/related-parties
- Scopes
kyb:read
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
cursorquery | string | no |
|---|
limitquery | integer | no |
|---|
Responses
200RelatedPartyList400401403404409412413415422428429503
POST/v1/cases/{case_id}/related-parties
- Scopes
kyb:write- Required header
Idempotency-Key
B2B creation of a related person case for a graph node and role required by the case KYB profile. A non-final related case of the same node and role is returned instead of a new one; a related case that ended without approval is replaced. The case must have related_party_processing_context_id.
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyRelatedPartyCreate
| Field | Type | Required |
|---|
entity_id | string (uuid) | yes |
|---|
role | enum: ubo, director, representative, controller | yes |
|---|
Responses
201RelatedParty400401403404409412413415422428429503
Search company candidates
POST/v1/cases/{case_id}/company-search
- Scopes
kyb:write- Required header
Idempotency-Key
B2B registry search for a company case: the same rules as applicant capture. The server searches the registry source of the case KYB profile for the country; every candidate record is kept as case evidence (provenance source_retrieval); a name search only yields candidates.
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyCompanySearch
| Field | Type | Required |
|---|
country | string | yes |
|---|
name_query | string | no |
|---|
registration_number | string | no |
|---|
source_idOptional. Without it the server searches the first registry source permitted by the case KYB profile for the country; a supplied source must be permitted by the profile for that country, otherwise the search answers not_supported. | string | no |
|---|
Responses
200CompanyCandidates400401403404409412413415422428429503
Select a company candidate
POST/v1/cases/{case_id}/company-selection
- Scopes
kyb:write- Required header
Idempotency-Key- Required header
If-Match
B2B selection of a registry record found by searchCaseCompanyCandidates: identity resolution with alternatives of the same search, the record enters the case input set, the previous selection leaves it. If-Match is the case ETag.
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyCompanySelection
| Field | Type | Required |
|---|
candidate_id | string (uuid) | yes |
|---|
candidate_evidence_id | string (uuid) | yes |
|---|
Responses
200CaseCompany400401403404409412413415422428429503
Get the case company
GET/v1/cases/{case_id}/company
- Scopes
kyb:read
Organization of a company case with assertions, identity resolution, field decisions and mandatory conflicts. ETag is the case version.
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Responses
200CaseCompany400401403404409412413415422428429503
Export the ownership graph
POST/v1/cases/{case_id}/graph/export
- Scopes
kyb:read- Required header
Idempotency-Key
Export of the ownership graph with personal data masked by role; see GraphExport. The export is a read with an audit record; Idempotency-Key repeats return the same export.
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyGraphExportRequest
| Field | Type | Required |
|---|
reason_codePurpose of the export recorded in the audit trail. | string | yes |
|---|
Responses
200GraphExport400401403404409412413415422428429503
List case notices
GET/v1/cases/{case_id}/notices
- Scopes
cases:read
Notices (all versions and locales) of the basis profile and purpose of the case processing context: the notice_id and notice_version a client records with registerExternalBasisEvidence.
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
localequery | string | no |
|---|
cursorquery | string | no |
|---|
limitquery | integer | no |
|---|
Responses
200NoticeList400401403404409412413415422428429503
List outcome reports
GET/v1/cases/{case_id}/outcome-reports
- Scopes
cases:read
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
cursorquery | string | no |
|---|
limitquery | integer | no |
|---|
Responses
200CaseOutcomeReportList400401403404409412413415422428429503
Report a case outcome
POST/v1/cases/{case_id}/outcome-reports
- Scopes
cases:write- Required header
Idempotency-Key
Records an outcome confirmed after the decision. The decision must belong to the case and be final; the report is immutable and audited. Decisions and reports are not changed.
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
Request bodyCaseOutcomeReportCreate
| Field | Type | Required |
|---|
decision_id | string (uuid) | yes |
|---|
outcome | enum: confirmed_fraud, confirmed_legitimate | yes |
|---|
category | enum: document_forgery, impersonation, synthetic_identity, account_takeover, presentation_attack, money_mule, other | yes |
|---|
reason_code | string | yes |
|---|
confirmed_at | string (date-time) | yes |
|---|
Responses
201CaseOutcomeReport400401403404409412413415422428429503
List case transitions
GET/v1/cases/{case_id}/transitions
- Scopes
cases:read
State transitions of the case, newest first. Reason codes and actor types only; no personal data.
Parameters
| Field | Type | Required |
|---|
case_idpath | string (uuid) | yes |
|---|
cursorquery | string | no |
|---|
limitquery | integer | no |
|---|
Responses
200CaseTransitionList400401403404409412413415422428429503