All three accept your client API key or a user authorization header, and all three 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:
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.
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. - Updating Key People — there’s no public API to patch key-people records; that data is submitted through the hosted flow.
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.