API reference

Cases

Applicant verification: creation, submission, sessions, links, checks, ownership graph, reports and decisions.

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

FieldTypeRequired
cursorquerystringno
limitqueryintegerno
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, companyno
countryqueryOnly cases whose country_context.document_issuer_country or customer_jurisdiction equals this code.stringno
referencequeryOnly cases of the applicant with this external_id (exact match).stringno
created_fromqueryCreated at or after this time.string (date-time)no
created_toqueryCreated before this time.string (date-time)no

Responses

  • 200CaseList
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Create a case

POST/v1/cases

Scopes
cases:write
Required header
Idempotency-Key

Request bodyCaseCreate

FieldTypeRequired
applicant_idstring (uuid)yes
purposestringyes
policy_version_idstring (uuid)yes
country_contextCountryContextyes
parent_case_idstring (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
metadataMetadatano
processing_context_idstring (uuid)yes

Responses

  • 201Case
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Error codesconfiguration_error

Get a case

GET/v1/cases/{case_id}

Scopes
cases:read

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes

Responses

  • 200Case
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Submit a case

POST/v1/cases/{case_id}/submit

Scopes
cases:submit
Required header
Idempotency-Key
Required header
If-Match

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyCaseSubmit

FieldTypeRequired
evidence_idsarray of string (uuid)yes
consent_record_idsarray of string (uuid)yes
graph_versionintegerno
input_manifest_sha256stringyes
basis_record_idstring (uuid)yes

Responses

  • 202Case
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Cancel a case

POST/v1/cases/{case_id}/cancel

Scopes
cases:cancel
Required header
Idempotency-Key
Required header
If-Match

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyReasonAction

FieldTypeRequired
reason_codestringyes
notestringno

Responses

  • 200Case
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

List case sessions

GET/v1/cases/{case_id}/sessions

Scopes
sessions:read

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes
cursorquerystringno
limitqueryintegerno

Responses

  • 200SessionList
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Create an applicant session

POST/v1/cases/{case_id}/sessions

Scopes
sessions:write
Required header
Idempotency-Key

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodySessionCreate

FieldTypeRequired
channelenum: hosted, iframe, native_ios, native_androidyes
localestringyes
allowed_originstring (uri)no
return_urlstring (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

  • 201SessionIssued
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Error codesconfiguration_error

List case checks

GET/v1/cases/{case_id}/checks

Scopes
checks:read

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes
cursorquerystringno
limitqueryintegerno

Responses

  • 200CheckResultList
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Authorize a file upload

POST/v1/cases/{case_id}/uploads

Scopes
evidence:write
Required header
Idempotency-Key

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyUploadAuthorize

FieldTypeRequired
kindenum: document_front, document_back, passport_data_page, face_video, face_image, nfc_transcript, corporate_document, address_document, ...yes
content_typestringyes
byte_countintegeryes
sha256stringyes
capture_attempt_idstring (uuid)no
document_profile_idstringno

Responses

  • 201UploadAuthorization
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

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

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyUploadComplete

FieldTypeRequired
upload_idstring (uuid)yes
sha256stringyes
byte_countintegeryes

Responses

  • 202Evidence
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

List case evidence

GET/v1/cases/{case_id}/evidence

Scopes
evidence:read

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes
cursorquerystringno
limitqueryintegerno

Responses

  • 200EvidenceList
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Get the ownership graph

GET/v1/cases/{case_id}/graph

Scopes
kyb:read

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes

Responses

  • 200Graph
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Replace graph nodes

PUT/v1/cases/{case_id}/graph/nodes

Scopes
kyb:write
Required header
If-Match

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyGraphNodesUpdate

FieldTypeRequired
nodesarray of EntityInputyes
reason_codestringyes

Responses

  • 200Graph
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Create a relationship

POST/v1/cases/{case_id}/graph/relationships

Scopes
kyb:write
Required header
Idempotency-Key
Required header
If-Match

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyRelationshipCreate

FieldTypeRequired
from_entity_idstring (uuid)yes
to_entity_idstring (uuid)yes
roleenum: shareholder, claimed_ubo, director, representative, trustee, settlor, protector, beneficiary, ...yes
economic_share_percentoneOfno
voting_share_percentoneOfno
control_descriptionstringno
effective_fromstring (date)no
effective_tostring (date)no
evidence_idsarray of string (uuid)yes
share_classstringno
denominator_basisenum: total_issued_equity, class_issued_equity, total_voting_rights, class_voting_rights, other, unknownyes
assertion_statusenum: claimed, unknownyes
source_referencestringno
conflicting_assertion_idsarray of string (uuid)no
lower_share_percentoneOfno
upper_share_percentoneOfno

Responses

  • 201Relationship
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Remove a relationship

DELETE/v1/cases/{case_id}/graph/relationships/{relationship_id}

Scopes
kyb:write
Required header
If-Match

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes
relationship_idpathstring (uuid)yes

Responses

  • 204
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

List case reports

GET/v1/cases/{case_id}/reports

Scopes
reports:read

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes
cursorquerystringno
limitqueryintegerno

Responses

  • 200ReportList
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Create a report

POST/v1/cases/{case_id}/reports

Scopes
reports:write
Required header
Idempotency-Key

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyReportCreate

FieldTypeRequired
formatenum: json, pdf, bothyes
localestringyes
include_evidence_indexbooleanyes

Responses

  • 202Report
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

List case decisions

GET/v1/cases/{case_id}/decisions

Scopes
decisions:read

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes
cursorquerystringno
limitqueryintegerno

Responses

  • 200DecisionList
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Issue appeal access

POST/v1/cases/{case_id}/appeal-access

Scopes
appeals:issue
Required header
Idempotency-Key

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyAppealAccessCreate

FieldTypeRequired
channelenum: email, sms, copy_linkyes
recipientstringno
localestringyes
basis_profile_idstring (uuid)yes

Responses

  • 201AppealAccess
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Register processing basis evidence

POST/v1/cases/{case_id}/processing-basis

Scopes
basis:write
Required header
Idempotency-Key

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyExternalBasisEvidence

FieldTypeRequired
profile_idstring (uuid)yes
notice_idstring (uuid)yes
notice_versionstringyes
subject_referencestring (uuid)yes
event_atstring (date-time)yes
evidence_idsarray of string (uuid)yes
attestation_formatenum: contractual_record, signed_assertionyes
attestation_sha256stringyes
purposestringyes
basis_typeenum: customer_contract, customer_obligationno
obligation_refstringno
obligation_data_categoriesarray of stringno

Responses

  • 201ConsentRecord
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

List related parties

GET/v1/cases/{case_id}/related-parties

Scopes
kyb:read

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes
cursorquerystringno
limitqueryintegerno

Responses

  • 200RelatedPartyList
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

Create a related party case

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

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyRelatedPartyCreate

FieldTypeRequired
entity_idstring (uuid)yes
roleenum: ubo, director, representative, controlleryes

Responses

  • 201RelatedParty
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

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

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyCompanySearch

FieldTypeRequired
countrystringyes
name_querystringno
registration_numberstringno
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.stringno

Responses

  • 200CompanyCandidates
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

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

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyCompanySelection

FieldTypeRequired
candidate_idstring (uuid)yes
candidate_evidence_idstring (uuid)yes

Responses

  • 200CaseCompany
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

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

FieldTypeRequired
case_idpathstring (uuid)yes

Responses

  • 200CaseCompany
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

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

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyGraphExportRequest

FieldTypeRequired
reason_codePurpose of the export recorded in the audit trail.stringyes

Responses

  • 200GraphExport
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

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

FieldTypeRequired
case_idpathstring (uuid)yes
localequerystringno
cursorquerystringno
limitqueryintegerno

Responses

  • 200NoticeList
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

List outcome reports

GET/v1/cases/{case_id}/outcome-reports

Scopes
cases:read

Parameters

FieldTypeRequired
case_idpathstring (uuid)yes
cursorquerystringno
limitqueryintegerno

Responses

  • 200CaseOutcomeReportList
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

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

FieldTypeRequired
case_idpathstring (uuid)yes

Request bodyCaseOutcomeReportCreate

FieldTypeRequired
decision_idstring (uuid)yes
outcomeenum: confirmed_fraud, confirmed_legitimateyes
categoryenum: document_forgery, impersonation, synthetic_identity, account_takeover, presentation_attack, money_mule, otheryes
reason_codestringyes
confirmed_atstring (date-time)yes

Responses

  • 201CaseOutcomeReport
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503

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

FieldTypeRequired
case_idpathstring (uuid)yes
cursorquerystringno
limitqueryintegerno

Responses

  • 200CaseTransitionList
  • 400
  • 401
  • 403
  • 404
  • 409
  • 412
  • 413
  • 415
  • 422
  • 428
  • 429
  • 503