# Applicants

An applicant is a user who is going through or has completed verification. The Tenant API exposes the applicant list, individual applicant details, verification and AML screening results, and the document list. Each endpoint requires the matching scope on the API key.

## List applicants [#list-applicants]

Returns a paginated list of applicants with filters for status, creation date, and external identifier. Required scope: **applicants:read**.

API operations:

- `GET /v1/kyc/applicants`

## Get applicant by ID [#get-applicant-by-id]

Returns the full applicant record by internal identifier (UUID). Required scope: **applicants:read**.

API operations:

- `GET /v1/kyc/applicants/{applicant_id}`

## Get applicant by external ID [#get-applicant-by-external-id]

Looks up an applicant by the external identifier (`external_id`) provided when the verification link was created. Required scope: **applicants:read**.

API operations:

- `GET /v1/kyc/applicants/external/{external_id}`

## Applicant verification sessions [#applicant-verification-sessions]

Returns all verification sessions linked to the applicant. Required scope: **applicants:read**.

API operations:

- `GET /v1/kyc/applicants/{applicant_id}/sessions`

## Applicant history [#applicant-history]

Returns the chronological event log for the applicant (creation, status updates, check results). Required scope: **applicants:read**.

API operations:

- `GET /v1/kyc/applicants/{applicant_id}/history`

## Verification result [#verification-result]

Returns the final verification result for the applicant, including the decision
status, check details, and contact fields (`email`, `phone`) from the applicant
record. Check details include the normalized `ocr`, `doc_liveness`,
`face_liveness`, and `face_match` blocks when those checks are present.
Required scope: **verifications:read**.

API operations:

- `GET /v1/kyc/applicants/{applicant_id}/verification`

## AML screening result [#aml-screening-result]

Returns the result of sanctions and PEP screening (when the flow contains an AML step). Required scope: **verifications:read**.

API operations:

- `GET /v1/kyc/applicants/{applicant_id}/aml`

## Applicant documents [#applicant-documents]

Returns the list of documents uploaded by the applicant during verification.
When OCR data is available, `extracted_data` includes the standard document
fields plus `extended_data` for additional provider-normalized OCR fields.
Required scope: **documents:read**.

API operations:

- `GET /v1/kyc/applicants/{applicant_id}/documents`

## Delete applicant data [#delete-applicant-data]

Submits a deletion request for the applicant's data, including documents, selfies, and verification results, in line with GDPR requirements. Actual deletion is executed only after OneKYC approval; after approval, the deletion is irreversible. Required scope: **applicants:write**.

API operations:

- `DELETE /v1/kyc/applicants/{applicant_id}`

---

For the full field specification, error codes, and request examples, see [API reference (OpenAPI)](/en/api/api-reference).

## Identity spelling and evidence completeness [#identity-spelling-and-evidence-completeness]

Individual applicant responses (ID, external ID, and detailed view) expose `full_name`, `middle_name`, `full_name_latin`, `full_name_native`, and `full_name_original` when supported by current identity evidence. Latin aliases are emitted only for observed Latin-script text; original accents and native spelling are retained without inventing transliteration. `name_source` identifies the verification result, step, and attempt when names come from legacy document checks. Detailed `document_details.ocr` retains normalized OCR evidence; document `extracted_data` includes the full-name aliases for that document.

Current attempt metadata takes precedence over historical results. A new attempt with no result cannot reuse an earlier attempt's names or AML result. Independent profile edits, including explicit empty fields, retain precedence over recognized name parts.

Verification responses expose their selected `session_id`; each check includes `verification_id`, `step_id`, `attempt_number`, `rejection_reasons`, and its safe typed contract (including `aml`). The default verification endpoint continues to select completed sessions. The separate AML response also exposes source correlation and the typed `aml` contract. Public contracts omit raw provider records and error text.

Profile `enrichment` is an **applicant-scoped** asynchronous summary, independent of a particular verification session. Known zero scores/counts and `false` flags are retained. An unavailable optional read produces an `unavailable` summary and `enrichment_errors`; missing enrichment remains absent. Name read failures use `name_evidence_unavailable` or `name_attempts_unavailable`, and unavailable collection identity uses `collection_identity_unavailable`.

Document responses expose known `session_id` and `step_id` for legacy and collection records. `extracted_data.ocr` contains the complete normalized recognition payload only when it belongs to that exact file, tenant, session, step and attempt; collection documents use their own revision-bound recognition. Portraits and geometry are omitted. A missing file association cannot borrow another document's OCR.

When a current OCR result supplies first and last names without a literal full name, the profile display name is composed from those parts of the same document attempt. A missing name part or transliteration is never invented.
