curl
curl -X GET \
https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/features/overrides/ \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.list_feature_overrides(
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.listFeatureOverrides("3fa85f64-5717-4562-b3fc-2c963f66afa6");
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.ListFeatureOverrides(ctx, "3fa85f64-5717-4562-b3fc-2c963f66afa6")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().listFeatureOverrides("3fa85f64-5717-4562-b3fc-2c963f66afa6");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->listFeatureOverrides('3fa85f64-5717-4562-b3fc-2c963f66afa6');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.list_feature_overrides("3fa85f64-5717-4562-b3fc-2c963f66afa6")
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Sessions.ListFeatureOverridesAsync("3fa85f64-5717-4562-b3fc-2c963f66afa6");
Console.WriteLine(JsonSerializer.Serialize(result));{
"session_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"person_in_flow": true,
"flow_finished_at": null,
"overrides": [
{
"id": "9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3",
"node_id": "feature_liveness_1",
"feature_type": "",
"feature_model": "Face",
"previous_status": "Declined",
"new_status": "Approved",
"state": "pending_until_flow_finishes",
"forced": false,
"reason": "Liveness retried with a reviewer present.",
"requested_by": {
"email": "reviewer@example.com",
"name": "Alex Reviewer",
"type": "CONSOLE_USER"
},
"requested_at": "2026-10-13T09:15:00Z",
"applied_at": null,
"cancelled_at": null,
"cancel_reason": null
},
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"node_id": "feature_ocr_1",
"feature_type": "",
"feature_model": "KYC",
"previous_status": "In Review",
"new_status": "Approved",
"state": "applied",
"forced": true,
"reason": "Document manually verified by compliance.",
"requested_by": {
"email": "reviewer@example.com",
"name": "Alex Reviewer",
"type": "CONSOLE_USER"
},
"requested_at": "2026-10-13T09:15:00Z",
"applied_at": "2026-10-13T09:15:00Z",
"cancelled_at": null,
"cancel_reason": null
}
]
}用户与企业验证
功能覆盖历史 API:步骤状态记录
按最新在前列出某会话中单个步骤的所有状态覆盖记录:已应用、等待用户完成流程或已取消。由 Didit 提供。
GET
/
v3
/
session
/
{sessionId}
/
features
/
overrides
/
curl
curl -X GET \
https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/features/overrides/ \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.list_feature_overrides(
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.listFeatureOverrides("3fa85f64-5717-4562-b3fc-2c963f66afa6");
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.ListFeatureOverrides(ctx, "3fa85f64-5717-4562-b3fc-2c963f66afa6")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().listFeatureOverrides("3fa85f64-5717-4562-b3fc-2c963f66afa6");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->listFeatureOverrides('3fa85f64-5717-4562-b3fc-2c963f66afa6');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.list_feature_overrides("3fa85f64-5717-4562-b3fc-2c963f66afa6")
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Sessions.ListFeatureOverridesAsync("3fa85f64-5717-4562-b3fc-2c963f66afa6");
Console.WriteLine(JsonSerializer.Serialize(result));{
"session_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"person_in_flow": true,
"flow_finished_at": null,
"overrides": [
{
"id": "9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3",
"node_id": "feature_liveness_1",
"feature_type": "",
"feature_model": "Face",
"previous_status": "Declined",
"new_status": "Approved",
"state": "pending_until_flow_finishes",
"forced": false,
"reason": "Liveness retried with a reviewer present.",
"requested_by": {
"email": "reviewer@example.com",
"name": "Alex Reviewer",
"type": "CONSOLE_USER"
},
"requested_at": "2026-10-13T09:15:00Z",
"applied_at": null,
"cancelled_at": null,
"cancel_reason": null
},
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"node_id": "feature_ocr_1",
"feature_type": "",
"feature_model": "KYC",
"previous_status": "In Review",
"new_status": "Approved",
"state": "applied",
"forced": true,
"reason": "Document manually verified by compliance.",
"requested_by": {
"email": "reviewer@example.com",
"name": "Alex Reviewer",
"type": "CONSOLE_USER"
},
"requested_at": "2026-10-13T09:15:00Z",
"applied_at": "2026-10-13T09:15:00Z",
"cancelled_at": null,
"cancel_reason": null
}
]
}
每次调用Update Feature Status都会记录一次对某项检查状态的覆盖。
此端点列出某个会话的全部覆盖记录,按最新排序,不分页。
带有
覆盖状态
state | 含义 |
|---|---|
applied | 该检查已采用新状态。applied_at 表示生效时间。 |
pending_until_flow_finishes | 覆盖处于等待中,待用户完成流程后生效。 |
cancelled | 覆盖在等待期间被取消,从未生效。cancel_reason 表示取消原因。 |
forced: true 的覆盖会在用户仍处于流程中时立即生效。
等待中的覆盖为何被取消
cancel_reason | 发生的情况 |
|---|---|
cancelled_by_reviewer | 审核员通过Cancel Feature Override取消了该覆盖。 |
replaced | 同一检查上的较新覆盖替换了它。 |
check_changed | 用户在完成流程前重新进行了该检查,因此您所覆盖的结果已失效。 |
session_closed | 会话在用户完成流程前已结束:已放弃、已过期,或在流程中已做出决策。 |
用户所处的流程位置
当会话状态为Not Started、In Progress 或 Resubmitted,且用户尚未完成流程时,person_in_flow 为 true。
在其为 true 期间,设置了 defer_until_flow_finishes: true 的新覆盖将进入等待。
flow_finished_at 表示用户最后一次完成流程的时间。
当用户仍在流程中(包括重新提交期间),以及会话在用户完成流程前已关闭时,该值为 null。
相关内容
- Update Feature Status:覆盖某一步骤的状态,立即生效或在流程结束后生效。
- Cancel Feature Override:阻止等待中的覆盖生效。
- Retrieve Session:每个功能的
node_id及当前状态。
授权
您的应用 API 密钥,可在 Business Console 的“开发者 -> API 密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域:针对每个资源设为无权限、只读或读写,限定于特定工作流或已通过的会话、限定于 IP 地址列表,以及设置到期日期。401 表示密钥错误、已撤销或已过期;403 表示未发送密钥、密钥无权访问该资源或操作,或请求来自其 IP 列表之外的地址;在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF URL 将为 null;没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅 https://docs.didit.me/console/api-keys。
路径参数
验证会话的 UUID。支持用户(KYC)和企业(KYB)会话 ID。
示例:
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
响应
会话的检查覆盖记录,最新的排在最前。
示例:
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
该人员是否仍在流程中,因此带有 defer_until_flow_finishes: true 的新覆盖操作将等待。
示例:
true
当事人最后一次完成流程的时间。当其仍在流程中(包括重新提交)以及会话在完成前已关闭(已放弃、已过期或在流程中做出决策)时为 null。
示例:
null
该会话的每次覆盖,最新的排在最前。
Show child attributes
Show child attributes
最后修改于 2026年11月7日