All four accept your client API key or a user authorization header, and all four emit a
data.updated webhook on success so your system and downstream analytics stay in sync.
Shared requirements
- Authorization — client API key (standard
x-api-key/Authorizationbearer) or user-auth token. - Privilege —
- KYC and POA:
write:sessions - KYB company and Key People party:
write:businesses
- KYC and POA:
- Session status (KYC / POA only) — must be one of
APPROVED,DECLINED,IN_REVIEW, orKYC_EXPIRED. Sessions that haven’t reached a reviewable state cannot be patched. KYB company updates have no status gate. - Feature record must exist — you can only patch KYC fields if the session captured a KYC, POA fields if it captured a POA, and KYB company fields if the session has a registry check.
- Partial updates — only fields you include are changed. Omit a field to leave it as-is. Send
nullto clear anextra_fieldskey. - Webhooks — a successful update fires
data.updatedwithsession_kind: "user"or"business", and the session’s audit trail records which specific fields changed and who changed them.
Update KYC identity data
PATCH /v3/session/{sessionId}/update-data/
Patch any field extracted from the ID document. Supports graph-based multi-instance workflows via an optional node_id query parameter or body field — target a specific KYC record when a single session has multiple KYC steps.
Mutable fields
parsed_address only accepts these nested keys: address_type, city, region, street_1, street_2, postal_code, country (ISO 3166-1 alpha-2).
Example
?node_id=feature_ocr_2 to the URL (or pass "node_id": "feature_ocr_2" in the body) to target a specific KYC record.
Update Proof of Address (POA) data
PATCH /v3/session/{sessionId}/update-poa-data/
Patch fields extracted from a proof-of-address document. Same status gates and privilege as KYC updates. Also supports node_id for multi-instance workflows.
Mutable fields
Example
Update KYB company data
PATCH /v3/session/{sessionId}/kyb/{companyUuid}/update-data/
Correct registry-extracted fields on a KYB company. The endpoint edits both the canonical company columns and the raw registry_data snapshot, so the “Extracted from Registry” view in the console reflects your corrections. user_provided_data — what the end user confirmed in the hosted flow — is not modified. last_console_edit_at is stamped, and a data.updated webhook fires with trigger: "console_registry_edit".
Requirements
- Privilege —
write:businesses(different from the KYC / POA privilege). - The
companyUuidin the URL must belong to the givensessionId, otherwise you get a 404. - No session status gate — KYB company data can be corrected at any time.
Mutable fields
Any field you omit is left untouched. Any field you send is written to the canonical column (when one exists) and merged into the raw
registry_data JSON. Dates are serialized as ISO 8601 strings when merged into registry_data.
Example
registry_checks[].company in the session decision.
Skip a Key People party
PATCH /v3/session/{sessionId}/kyb/parties/{partyUuid}/
Exempt a Key People party from verification - the escape hatch for a party that can never finish its own check. The usual cause is a deleted child session: once the individual KYC handed to a UBO or director is deleted, its status is frozen and it can never settle, so the KYB has nothing left that could move it out of Awaiting User. Skipping the party drops it out of the Key People aggregation, the check is recomputed on the spot, and the session can settle and be approved or declined.
Requirements
- Privilege -
write:businesses. - The
partyUuidin the URL must belong to the givensessionId, otherwise you get a 404. - Not gated by
allow_skip. That role setting limits what the applicant may skip while filling in the hosted Key People screen; this endpoint is the operator override, so it works even on roles the applicant could not have skipped.
Body
requires_verification is deliberately left untouched, so an overridden party reads as requires_verification: true and is_skipped: true - the record still shows that the rules asked for a check.
Example
key_people_checks[].submitted.parties[] in the session decision.
A data.updated webhook fires with trigger: "console_key_people_skip".
A party whose child session was deleted is flagged in the decision payload with
kyc_session_deleted: true (or kyb_sub_session_deleted: true for corporate
parties), and its kyc_session_url / kyb_sub_session_url is returned as
null because the link no longer resolves. Deleting a child session never
approves the party on its own - the Key People check drops to In Review so a
human makes the call.What happens after an update
- Webhook —
data.updatedfires on the session, with the session’ssession_kindin the payload ("user"or"business"). Subscribe once at the destination level and route onsession_kind. - Audit trail — the session records exactly which fields changed, the previous and new values, and (for user-auth calls) the actor email. Visible in the console’s Events tab.
- Address re-geocoding — for KYC and POA updates that change
address/poa_address, Didit re-runs geocoding in the background. Failures are swallowed so the update never fails because of a geocoding issue. - AML re-evaluation — KYC updates that change name / DOB / nationality can re-trigger AML screening if AML hadn’t finished on the session. Results surface on the session decision.
When not to use these endpoints
- Rerunning the whole verification — if the customer has to re-take their ID photo or re-upload a document, use update-status to move the session to
Resubmittedinstead. - Changing profile fields on the User or Business entity — use
PATCH /v3/users/{vendor_data}/orPATCH /v3/businesses/{vendor_data}/— those endpoints update entity-level data, not session-level data. - Editing Key People details - there’s no public API to patch a party’s name, roles, or ownership; that data is submitted through the hosted flow. The one patchable field is
is_skipped(see Skip a Key People party).
Errors
Next steps
Retrieve session
Fetch the full decision to see the updated fields.
Update status
Approve, decline, or re-open a session after a data correction.
Webhooks
Subscribe to
data.updated events.