curl -X GET 'https://verification.didit.me/v3/users/user-abc-123/' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.users.retrieve(
"user-abc-123",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.users.retrieve("user-abc-123");
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Users.Retrieve(ctx, "user-abc-123")
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.users().retrieve("user-abc-123");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->users->retrieve('user-abc-123');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.users.retrieve("user-abc-123")
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Users.RetrieveAsync("user-abc-123");
Console.WriteLine(JsonSerializer.Serialize(result));{
"didit_internal_id": "f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418",
"vendor_data": "user-abc-123",
"display_name": null,
"full_name": "John Michael Doe",
"date_of_birth": "1990-05-15",
"effective_name": "John Michael Doe",
"status": "ACTIVE",
"metadata": {
"tier": "premium",
"source": "website"
},
"portrait_image_url": "https://<media-host>/...",
"session_count": 3,
"approved_count": 2,
"declined_count": 0,
"in_review_count": 1,
"issuing_states": [
"USA"
],
"approved_emails": [
"john@example.com"
],
"approved_phones": [
"+14155551234"
],
"features": {
"ID_VERIFICATION": "Approved",
"LIVENESS": "Approved",
"FACE_MATCH": "Approved",
"AML": "Approved"
},
"features_list": [
{
"feature": "ID_VERIFICATION",
"status": "Approved"
},
{
"feature": "LIVENESS",
"status": "Approved"
},
{
"feature": "FACE_MATCH",
"status": "Approved"
},
{
"feature": "AML",
"status": "Approved"
}
],
"last_session_at": "2025-06-15T10:30:00Z",
"last_activity_at": "2025-06-15T10:30:00Z",
"first_session_at": "2025-06-01T08:00:00Z",
"tags": [
{
"uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"tag": {
"uuid": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
"name": "VIP",
"color": "#2567FF",
"description": null,
"source": "custom",
"created_at": "2025-05-01T09:00:00Z",
"updated_at": "2025-05-01T09:00:00Z"
},
"added_by_email": "analyst@acme.com",
"added_by_name": "Jane Analyst",
"created_at": "2025-06-02T11:00:00Z"
}
],
"comments": [
{
"uuid": "c1111111-2222-4333-8444-555555555555",
"comment_type": "STATUS_CHANGED",
"comment": null,
"actor_email": "analyst@acme.com",
"actor_name": "Jane Analyst",
"previous_status": "FLAGGED",
"new_status": "ACTIVE",
"previous_value": null,
"new_value": null,
"changed_fields": [],
"metadata": null,
"mentioned_emails": [],
"created_at": "2025-06-01T10:30:00Z"
}
],
"created_at": "2025-06-01T08:00:00Z",
"updated_at": "2025-06-15T10:30:00Z"
}{
"detail": "You must be authenticated with a valid access token to access this endpoint."
}{
"detail": "You do not have permission to perform this action."
}{
"detail": "Not found."
}{
"detail": "Request was throttled. Expected available in 30 seconds."
}获取用户 API:Didit 用户实体查询
通过 vendor_data 获取单个 Didit 用户,包括身份字段、状态、KYC 计数器和功能映射。持久化 KYC 身份,按次计费。
curl -X GET 'https://verification.didit.me/v3/users/user-abc-123/' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.users.retrieve(
"user-abc-123",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.users.retrieve("user-abc-123");
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Users.Retrieve(ctx, "user-abc-123")
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.users().retrieve("user-abc-123");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->users->retrieve('user-abc-123');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.users.retrieve("user-abc-123")
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Users.RetrieveAsync("user-abc-123");
Console.WriteLine(JsonSerializer.Serialize(result));{
"didit_internal_id": "f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418",
"vendor_data": "user-abc-123",
"display_name": null,
"full_name": "John Michael Doe",
"date_of_birth": "1990-05-15",
"effective_name": "John Michael Doe",
"status": "ACTIVE",
"metadata": {
"tier": "premium",
"source": "website"
},
"portrait_image_url": "https://<media-host>/...",
"session_count": 3,
"approved_count": 2,
"declined_count": 0,
"in_review_count": 1,
"issuing_states": [
"USA"
],
"approved_emails": [
"john@example.com"
],
"approved_phones": [
"+14155551234"
],
"features": {
"ID_VERIFICATION": "Approved",
"LIVENESS": "Approved",
"FACE_MATCH": "Approved",
"AML": "Approved"
},
"features_list": [
{
"feature": "ID_VERIFICATION",
"status": "Approved"
},
{
"feature": "LIVENESS",
"status": "Approved"
},
{
"feature": "FACE_MATCH",
"status": "Approved"
},
{
"feature": "AML",
"status": "Approved"
}
],
"last_session_at": "2025-06-15T10:30:00Z",
"last_activity_at": "2025-06-15T10:30:00Z",
"first_session_at": "2025-06-01T08:00:00Z",
"tags": [
{
"uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"tag": {
"uuid": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
"name": "VIP",
"color": "#2567FF",
"description": null,
"source": "custom",
"created_at": "2025-05-01T09:00:00Z",
"updated_at": "2025-05-01T09:00:00Z"
},
"added_by_email": "analyst@acme.com",
"added_by_name": "Jane Analyst",
"created_at": "2025-06-02T11:00:00Z"
}
],
"comments": [
{
"uuid": "c1111111-2222-4333-8444-555555555555",
"comment_type": "STATUS_CHANGED",
"comment": null,
"actor_email": "analyst@acme.com",
"actor_name": "Jane Analyst",
"previous_status": "FLAGGED",
"new_status": "ACTIVE",
"previous_value": null,
"new_value": null,
"changed_fields": [],
"metadata": null,
"mentioned_emails": [],
"created_at": "2025-06-01T10:30:00Z"
}
],
"created_at": "2025-06-01T08:00:00Z",
"updated_at": "2025-06-15T10:30:00Z"
}{
"detail": "You must be authenticated with a valid access token to access this endpoint."
}{
"detail": "You do not have permission to perform this action."
}{
"detail": "Not found."
}{
"detail": "Request was throttled. Expected available in 30 seconds."
}概述
返回一个由vendor_data 索引的单个用户实体。响应中包含 didit_internal_id,即 Didit 的稳定内部标识符。
使用场景
- 查询用户的当前验证状态:
features映射以单个对象的形式提供每项功能的最新状态。 - 自有界面中的详情视图:渲染前按需获取用户资料。
- 风险评分:结合会话计数器和
features,在您的系统中为每位用户评分。
注意事项
- URL 中的
vendor_data区分大小写。 - 如果应用中不存在该
vendor_data对应的用户,则返回404。 - 聚合计数器(
session_count、approved_count、declined_count、in_review_count)会在会话完成时实时更新。 - 有关每个字段的说明,请参阅用户数据模型。
权限
应用的任何处于活动状态的 API 密钥都可以调用此 endpoint。Didit 的 API 密钥是应用级别的,而非角色级别的:控制台中的角色与权限(read:users 等)决定的是人员在控制台中能做什么,对 Management API 的请求不做评估。要控制谁可以调用此 endpoint,请控制谁可以读取应用的 API 密钥。
相关内容
授权
您的应用 API 密钥,可在 Business Console 的“开发者 -> API 密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域:针对每个资源设为无权限、只读或读写,限定于特定工作流或已通过的会话、限定于 IP 地址列表,以及设置到期日期。401 表示密钥错误、已撤销或已过期;403 表示未发送密钥、密钥无权访问该资源或操作,或请求来自其 IP 列表之外的地址;在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF URL 将为 null;没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅 https://docs.didit.me/console/api-keys。
路径参数
您对该用户的唯一标识符,即自由格式字符串(非 UUID)。该值与您在首次引入该用户创建会话时作为 vendor_data 传入的值相同,按发送的内容精确匹配。
响应
完整的用户详情,包括元数据、备注/活动日志以及汇总的会话数据。
完整的用户详情。在 UserListItem 基础上扩展了元数据、备注和 updated_at。
Didit 为此用户分配的稳定内部 UUID。
您对此用户的唯一标识符(创建会话时传入)。未提供供应商标识符时可为 null。
您设置的自定义显示名称
从已验证证件中提取的姓名
最佳可用名称:如果已设置则为 display_name,否则为 full_name
用户记录的生命周期状态(并非会话状态)。ACTIVE 为默认值,FLAGGED 标记该用户需要人工关注,BLOCKED 会阻止该 vendor_data 创建新会话。
ACTIVE, FLAGGED, BLOCKED 用户肖像照片的预签名 URL(数小时后过期)
该用户的验证会话总数
已通过的会话数量
已拒绝的会话数量
审核中的会话数量
此用户已通过的身份证件上显示的签发国家/地区的 ISO 3166-1 alpha-3 代码,例如 ["USA", "ESP"]。无时为空数组。
从该用户已通过的会话中收集的已验证邮箱地址,例如 ["john@example.com"]。
从该用户已通过的会话中收集的已验证电话号码,例如 ["+14155551234"]。
该用户所有会话的每项功能汇总状态。可选键:ID_VERIFICATION、NFC、LIVENESS、FACE_MATCH、POA、QUESTIONNAIRE、EMAIL_VERIFICATION、PHONE、AML、IP_ANALYSIS、AGE_ESTIMATION、DATABASE_VALIDATION。可选值:Approved、Declined、In Review、Not Finished、Resub Requested。
与 features 相同的数据,为 {feature, status} 对象的有序数组。
Show child attributes
Show child attributes
最近一次会话的时间戳
首次会话的时间戳
该用户最近一次活动的时间戳(会话、交易、状态变更、数据编辑等)。
标签分配情况。注意:与列表响应中使用的扁平 {uuid, name, color} 结构不同,详情响应中的每个条目均为标签链接对象({uuid, tag: {...}, added_by_email, added_by_name, created_at})。
Show child attributes
Show child attributes
您附加到此用户的自定义元数据 JSON。默认为 {}。
该用户的活动日志和评论(状态变更、资料修改、手动备注)。
Show child attributes
Show child attributes