Skip to main content
PATCH
/
v3
/
session
/
{sessionId}
/
update-status
curl
curl -X PATCH \
  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/update-status/ \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "new_status": "Approved",
    "comment": "All verifications passed manual review"
  }'
{
  "session_id": "11111111-2222-3333-4444-555555555555"
}

Documentation Index

Fetch the complete documentation index at: https://docs.didit.me/llms.txt

Use this file to discover all available pages before exploring further.

Session kind

This endpoint works identically for User Verification (KYC) and Business Verification (KYB) sessions. Didit looks up the session_id in both tables; status-transition validation is model-agnostic (the same enum of statuses applies to both). The response includes session_kind so your downstream logic can switch on the outcome kind.

Allowed transitions

You can move a session to APPROVED, DECLINED, IN_REVIEW, or RESUBMITTED. The session’s current status must be one of: APPROVED, DECLINED, IN_REVIEW, KYC_EXPIRED, ABANDONED, or RESUBMITTED — otherwise the API returns a validation error.

Examples

curl -X PATCH https://verification.didit.me/v3/session/4c5c7f3a-.../update-status/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "new_status": "Approved",
    "comment": "Cleared after manual review by compliance team"
  }'

Permission

Requires the write:sessions privilege. The same privilege covers both kinds.

Authorizations

x-api-key
string
header
required

Path Parameters

sessionId
string<uuid>
required

UUID of the session to update.

Example:

"11111111-2222-3333-4444-555555555555"

Body

application/json
new_status
enum<string>
required

The new status to set for the session. Use Approved or Declined for final decisions, or Resubmitted to request the user to redo specific failed/in-review steps.

Available options:
Approved,
Declined,
Resubmitted
comment
string

A comment explaining the reason for the status change. For example Duplicated user.

send_email
boolean
default:false

Whether to send an email notification to the user about the status change. For Resubmitted status, the email includes the verification link and reasons for resubmission.

email_address
string<email>

The email address to send the notification to. Required when send_email is true.

email_language
enum<string>
default:en

The language for the email notification. Defaults to 'en' (English).

Available options:
en,
es,
fr,
de,
pt,
it,
ar,
bg,
bn,
ca,
cs,
da,
el,
et,
fa,
fi,
he,
hi,
hr,
hu,
hy,
id,
ja,
ka,
kk,
ko,
lt,
lv,
mk,
mn,
ms,
nl,
no,
pl,
pt-BR,
ro,
ru,
sk,
sl,
so,
sr,
sv,
th,
tr,
uk,
uz,
vi,
zh,
zh-CN,
zh-TW
nodes_to_resubmit
object[]

Feature steps the user must redo when new_status=Resubmitted. If omitted, the server auto-selects every feature whose status is not Approved. KYB-only nodes KYB_REGISTRY and KYB_KEY_PEOPLE are rejected — the parent recomputes from child KYCs.

Response

Status updated successfully