curl -s 'https://verification.didit.me/v3/sessions/?status=Approved,In%20Review&date_from=2026-06-01&limit=20' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
for item in client.sessions.list():
print(item)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
for await (const item of didit.sessions.list()) {
console.log(item);
}ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
iter := client.Sessions.ListAutoPaging(ctx, didit.SessionsListParams{})
for iter.Next() {
fmt.Printf("%+v\n", iter.Current())
}
if err := iter.Err(); err != nil {
log.Fatal(err)
}import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
for (var item : client.sessions().list()) {
System.out.println(item);
}<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
foreach ($didit->sessions->list() as $item) {
print_r($item);
}require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
didit.sessions.list.auto_paging_each do |item|
puts item.to_h
endusing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
await foreach (var item in await client.Sessions.ListAsync())
{
Console.WriteLine(JsonSerializer.Serialize(item));
}{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"session_id": "5b3720ed-d429-42ef-b67f-37ea805f48ee",
"session_kind": "user",
"session_number": 720,
"session_url": "https://verify.didit.me/session/CuXoBYCYVO5Y",
"portrait_image": "https://<media-host>/portraits/5b3720ed.jpg?X-Amz-Expires=3600&X-Amz-Signature=...",
"document_type": "Passport",
"full_name": "Jane Marie Doe",
"country": "ESP",
"status": "Approved",
"vendor_data": "your-user-id-123",
"didit_internal_id": "d9e78474-6c8d-4f2a-bb90-6f5c2f3a1147",
"created_at": "2026-06-09T12:26:54.328364Z",
"features": [
{
"feature": "ID_VERIFICATION",
"status": "Approved"
},
{
"feature": "LIVENESS",
"status": "Approved"
},
{
"feature": "FACE_MATCH",
"status": "Approved"
},
{
"feature": "AML",
"status": "Approved"
},
{
"feature": "IP_ANALYSIS",
"status": "Approved"
}
],
"phone_number": {
"number": "+14155552671",
"is_verified": true
},
"email_address": {
"email": "jane@example.com",
"is_verified": true
},
"additional_details": {
"aml": {
"total_hits": 0,
"entity_type": "person",
"is_adverse_media_fetched": false
},
"liveness": {
"method": "PASSIVE",
"score": 0.98
},
"face_match": {
"score": 0.95
}
}
},
{
"session_id": "038ad62f-5ebd-46c2-afe9-4b2956bf687f",
"session_kind": "user",
"session_number": 719,
"session_url": "https://verify.didit.me/session/7RGKiO6ioGH6",
"portrait_image": null,
"document_type": null,
"full_name": null,
"country": null,
"status": "Not Started",
"vendor_data": "your-user-id-124",
"didit_internal_id": "eb4e679d-ca4b-461f-9685-687bac29ebdb",
"created_at": "2026-06-09T08:02:23.343053Z",
"features": [
{
"feature": "ID_VERIFICATION",
"status": "Not Finished"
},
{
"feature": "LIVENESS",
"status": "Not Finished"
},
{
"feature": "FACE_MATCH",
"status": "Not Finished"
},
{
"feature": "AML",
"status": "Not Finished"
},
{
"feature": "IP_ANALYSIS",
"status": "Not Finished"
}
],
"phone_number": null,
"email_address": null,
"additional_details": null
}
]
}列出会话 API:筛选 KYC 与 KYB 会话
通过 GET /v3/sessions/ 列出验证会话,可按类型、状态、工作流和供应商数据筛选。Didit 统一 KYC + KYB API,按次计费。
curl -s 'https://verification.didit.me/v3/sessions/?status=Approved,In%20Review&date_from=2026-06-01&limit=20' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
for item in client.sessions.list():
print(item)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
for await (const item of didit.sessions.list()) {
console.log(item);
}ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
iter := client.Sessions.ListAutoPaging(ctx, didit.SessionsListParams{})
for iter.Next() {
fmt.Printf("%+v\n", iter.Current())
}
if err := iter.Err(); err != nil {
log.Fatal(err)
}import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
for (var item : client.sessions().list()) {
System.out.println(item);
}<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
foreach ($didit->sessions->list() as $item) {
print_r($item);
}require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
didit.sessions.list.auto_paging_each do |item|
puts item.to_h
endusing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
await foreach (var item in await client.Sessions.ListAsync())
{
Console.WriteLine(JsonSerializer.Serialize(item));
}{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"session_id": "5b3720ed-d429-42ef-b67f-37ea805f48ee",
"session_kind": "user",
"session_number": 720,
"session_url": "https://verify.didit.me/session/CuXoBYCYVO5Y",
"portrait_image": "https://<media-host>/portraits/5b3720ed.jpg?X-Amz-Expires=3600&X-Amz-Signature=...",
"document_type": "Passport",
"full_name": "Jane Marie Doe",
"country": "ESP",
"status": "Approved",
"vendor_data": "your-user-id-123",
"didit_internal_id": "d9e78474-6c8d-4f2a-bb90-6f5c2f3a1147",
"created_at": "2026-06-09T12:26:54.328364Z",
"features": [
{
"feature": "ID_VERIFICATION",
"status": "Approved"
},
{
"feature": "LIVENESS",
"status": "Approved"
},
{
"feature": "FACE_MATCH",
"status": "Approved"
},
{
"feature": "AML",
"status": "Approved"
},
{
"feature": "IP_ANALYSIS",
"status": "Approved"
}
],
"phone_number": {
"number": "+14155552671",
"is_verified": true
},
"email_address": {
"email": "jane@example.com",
"is_verified": true
},
"additional_details": {
"aml": {
"total_hits": 0,
"entity_type": "person",
"is_adverse_media_fetched": false
},
"liveness": {
"method": "PASSIVE",
"score": 0.98
},
"face_match": {
"score": 0.95
}
}
},
{
"session_id": "038ad62f-5ebd-46c2-afe9-4b2956bf687f",
"session_kind": "user",
"session_number": 719,
"session_url": "https://verify.didit.me/session/7RGKiO6ioGH6",
"portrait_image": null,
"document_type": null,
"full_name": null,
"country": null,
"status": "Not Started",
"vendor_data": "your-user-id-124",
"didit_internal_id": "eb4e679d-ca4b-461f-9685-687bac29ebdb",
"created_at": "2026-06-09T08:02:23.343053Z",
"features": [
{
"feature": "ID_VERIFICATION",
"status": "Not Finished"
},
{
"feature": "LIVENESS",
"status": "Not Finished"
},
{
"feature": "FACE_MATCH",
"status": "Not Finished"
},
{
"feature": "AML",
"status": "Not Finished"
},
{
"feature": "IP_ANALYSIS",
"status": "Not Finished"
}
],
"phone_number": null,
"email_address": null,
"additional_details": null
}
]
}会话类型过滤器
使用session_kind 查询参数选择要返回的会话类型:
| 值 | 返回内容 |
|---|---|
user(默认) | 仅返回用户验证(KYC)会话。向后兼容的行为:如需获得此结果,请省略 session_kind。 |
business | 仅返回企业验证(KYB)会话。 |
all | 同时返回用户验证和企业验证会话,并将两者依次拼接。 |
session_kind: "user" | "business",便于您的客户端逐行根据结构进行分支处理。
通用过滤器
以下过滤器同时适用于两种类型(仅适用于用户的过滤器在session_kind=business 时会被忽略,反之亦然):
| 查询参数 | 说明 |
|---|---|
session_kind | user、business 或 all。默认为 user。 |
vendor_data | 与您的标识符完全匹配。 |
status | 一个或多个状态,以逗号分隔,须与 API 返回的写法完全一致:Approved、Declined、In Review 等(参见验证状态)。 |
workflow_id | 按所用工作流进行过滤。 |
country | 国家/地区代码过滤器(用户:issuing_states;企业:country_code)。 |
date_from、date_to | 创建日期范围(ISO 8601 格式)。 |
tags | 以逗号分隔的标签 ID。返回包含其中任一标签的会话。 |
decided_from、decided_to | ISO 8601 格式的日期时间。返回状态最后一次变更时间位于该范围内的会话(包含起始时间,不包含结束时间)。此处使用的是最后一次状态变更的时间,而非创建时间。 |
search | 完整显示的编号,例如 S-0001 或 B-0001,仅匹配该会话编号和类型,忽略前导零和字母大小写。其他输入将搜索现有的名称、联系人、证件、注册号和 vendor_data 字段。 |
示例
- 列出用户验证(KYC)会话(默认)
- 列出企业验证(KYB)会话
- 列出两种类型的会话
curl -G https://verification.didit.me/v3/sessions/ \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "vendor_data=user-42"
{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"session_id": "...",
"session_kind": "user",
"session_number": 1024,
"session_url": "...",
"portrait_image": "...",
"document_type": "Passport",
"full_name": "John Doe",
"country": "GBR",
"status": "Approved",
"vendor_data": "user-42",
"didit_internal_id": "...",
"created_at": "2026-04-10T09:00:00Z",
"features": "ID_VERIFICATION,LIVENESS,FACE_MATCH,AML",
"phone_number": "+14155550123",
"email_address": "jane@example.com",
"additional_details": null
}
]
}
curl -G https://verification.didit.me/v3/sessions/ \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "session_kind=business" \
--data-urlencode "status=Approved"
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"session_id": "...",
"session_kind": "business",
"session_number": 89,
"status": "Approved",
"vendor_data": "biz-acme-001",
"created_at": "2026-04-01T09:00:00Z",
"workflow_id": "wf_kyb_standard",
"workflow_type": "business",
"workflow_label": "Standard KYB",
"company_name": "Acme Corporation Limited",
"registration_number": "12345678",
"country": "GBR"
}
]
}
curl -G https://verification.didit.me/v3/sessions/ \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "session_kind=all" \
--data-urlencode "date_from=2026-04-01T00:00:00Z"
results 数组中。使用方应根据 session_kind 逐行进行分支处理。all 模式是将结果依次拼接,而不是按时间戳交错排列。对于高数据量的混合遍历,请分别调用每种类型,并在客户端合并结果。各类型的行结构不同
用户验证(KYC)行包含:portrait_image、document_type、full_name、country(签发州)、phone_number、email_address,以及一些审核字段:assignee(持有该会话的控制台审核员,无则为 null)、waiting_since 和 sla_due_at(仅在会话处于 In Review 时设置)、top_warnings(最重要的警告,每项包含 risk、feature、log_type 和 short_description)以及 warnings_count。
企业验证(KYB)行包含:workflow_type、workflow_label、company_name、registration_number、country(注册成立国家/地区)。
两者都包含:session_id、session_kind、session_number、status、vendor_data、created_at。
完整的功能矩阵请参见会话概览。
分页
分页使用limit(默认 50)和 offset(默认 0),响应中包含绝对 next 和 previous URL。两个参数的取值上限均为 1000000;超过该值将返回 400。
count 在 100 以内是精确值,超过后始终保持为 100,因此请勿将其用作总数。请持续请求 next URL,直到其值为 null。使用 session_kind=all 时,count 是两种类型之和,每种类型各自上限为 100。
相关内容
授权
您的应用 API 密钥,可在 Business Console 的“开发者 -> API 密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域:针对每个资源设为无权限、只读或读写,限定于特定工作流或已通过的会话、限定于 IP 地址列表,以及设置到期日期。401 表示密钥错误、已撤销或已过期;403 表示未发送密钥、密钥无权访问该资源或操作,或请求来自其 IP 列表之外的地址;在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF URL 将为 null;没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅 https://docs.didit.me/console/api-keys。
查询参数
要列出哪种类型的会话:user(仅限 KYC,默认值)、business(仅限 KYB)或 all(两者合并,有关合并分页语义请参阅说明)。匹配不区分大小写(BUSINESS 有效);除 user/business/all 的大小写变体之外的任何值都会返回 400。
user, business, all 每页最大行数(当 session_kind=all 时按每种类型计算)。默认值为 50。
1 <= x <= 1000000返回第一行前跳过的行数。默认为 0。建议优先使用响应中的 next/previous URL。
0 <= x <= 1000000对您在创建会话时发送的 vendor_data(您自己的用户/企业标识符)进行精确匹配过滤。如需部分匹配,请改用 search。
完整的显示引用(例如用户的 S-0001 或企业的 B-0001)仅匹配该会话编号和类型;前导零和字母大小写不影响匹配。智能自由文本搜索。完整的 UUID 匹配 session_id;数字输入匹配会话编号前缀、证件/个人编号、电话前缀或 vendor_data;包含 @ 的输入匹配邮箱前缀;其他文本匹配姓名(不区分重音符号)和 vendor_data。包含数字的自由文本还会额外匹配证件/个人编号搜索字段和会话编号前缀。
以逗号分隔的工作流 UUID 列表(可在控制台的工作流页面中找到)。列表中格式错误的 UUID 将被忽略;若无有效值,则结果为空。
仅包含在此日期或之后创建的会话(UTC),格式为 YYYY-MM-DD。格式错误的日期返回 400。
仅包含截至此日期创建的会话(UTC),格式为 YYYY-MM-DD。对于 KYC 行,包含全天;对于 KYB 行,比较条件为 created_at <= date_to(午夜),因此请使用下一天的日期以包含整天的 KYB 会话。
逗号分隔的标签 ID(您应用的 tags)。返回带有其中任意标签的会话。非有效 UUID 的 ID 将被忽略,当没有任何有效 ID 时,列表为空。
ISO 8601 日期时间。返回状态最后变更时间等于或晚于该时间的会话。该参数根据最后状态变更时间进行过滤,而非根据创建时间。
ISO 8601 日期时间。返回状态最后变更时间早于该时间的会话。可与 decided_from 结合使用以构成半开区间。
以逗号分隔的国家/地区过滤器。对于 KYC 行:身份证件签发国家/地区的 ISO 3166-1 alpha-3 代码(例如 ESP,USA),可能与国籍不同。对于 KYB 行:注册公司的国家/地区代码。
会话中已验证的以逗号分隔的身份证件类型代码(仅限 KYC 行):P(护照)、ID(身份证)、DL(驾照)、RP(居留许可)、SSC(社保卡)、HIC(健康保险卡)、WP(工作许可)、TC(税卡)、VISA、PSC(公共服务卡)、BC(出生证明)、OTHER。请注意,响应字段 document_type 包含的是显示名称,而非代码。
确切的证件名称;多个名称可使用逗号分隔传递,但只有当值包含多个 - 分隔符时才会按逗号拆分(包含内嵌逗号的单个名称会进行整体匹配)。名称与证件验证(正面或背面)识别的名称一致,例如 Spain - Id Card (2021)。仅适用于 KYC 记录。
以逗号分隔的证件所属地区/州值(适用于按地区签发的证件,例如美国驾照)。仅限 KYC 行。
按 Didit 的内部用户标识符(响应字段 didit_internal_id)进行过滤,以列出某个已验证用户的所有会话。必须是有效的 UUID;格式错误的值将返回 400。仅限 KYC 行。
逗号分隔的会话创建渠道:API、HOSTED、MIGRATED。特殊值 ALL(或省略该参数)将禁用此过滤器。仅适用于 KYC 记录。
按服务过滤独立 API 会话。无效值将返回 400。仅适用于 KYC 行。
ID_VERIFICATION, FACE_MATCH, AGE_ESTIMATION, FACE_SEARCH, POA, AML, KYB_REGISTRY, PASSIVE_LIVENESS, DATABASE_VALIDATION, PHONE_VERIFICATION, EMAIL_VERIFICATION 在 AML 和数据库核验筛查数据中进行不区分重音符号的姓名搜索。当与 api_service=AML 或 api_service=DATABASE_VALIDATION 结合使用时,搜索将仅限于该功能的筛查数据。仅限 KYC 数据行。
为 true 时,仅包含其决策最初为 In Review 的会话(用于审计人工审核量)。仅限 KYC 行。
true 返回证件验证被标记为需要人工审核的会话;false 返回证件验证明确未被标记的会话。省略以禁用。仅限 KYC 行。
按终端用户的 euuid(分配给验证用户的 UUID,用于 Console 深度链接)过滤。必须是有效的 UUID;格式错误的取值会返回 400 字段错误。仅适用于 KYC 行。
逗号分隔的组织名称。面向控制台;使用 API 密钥(已限定为单个应用)时,它仅匹配您自己组织的名称。
响应
分页会话列表。results 中的各项根据 session_kind 可能为 KYC 行、KYB 行或两者皆有;可通过每行的 session_kind 字段进行区分。
匹配过滤条件的会话数量:100 以内为准确数值,超过 100 时封顶显示为 100,因此请勿将其视为总数。请使用 next 判断是否存在更多页面。对于 session_kind=all,它是两种类型的总和,每种类型各自封顶显示为 100。
2
下一页的绝对 URL,最后一页则为 null。
"https://verification.didit.me/v3/sessions/?limit=20&offset=20"
上一页的绝对 URL,第一页则为 null。
null
会话行,最新的排在最前。使用 session_kind=all 时,KYC 行排在最前,然后是 KYB 行。
用户验证(KYC)会话的摘要行。身份字段(full_name、country、document_type、portrait_image、联系人字段)随着用户完成验证步骤逐步填充,在相关步骤完成之前为 null。受工作流响应属性配置限制的字段也返回为 null。
- KYC session row (session_kind: user)
- KYB session row (session_kind: business)
Show child attributes
Show child attributes