# Records an audit-trail note only -- the session's status does NOT change.
curl -s -X POST https://verification.didit.me/v3/sessions/8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d/reviews/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"new_status": "In Review",
"comment": "Flagging for manual document re-check."
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.reviews.create(
"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d",
new_status="In Review",
comment="Flagging for manual document re-check.",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.reviews.create("8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d", {
new_status: "In Review",
comment: "Flagging for manual document re-check.",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.Reviews.Create(ctx, "8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d", didit.SessionsReviewsCreateParams{
NewStatus: didit.Some(didit.SessionsReviewsCreateParamsNewStatus("In Review")),
Comment: didit.String("Flagging for manual document re-check."),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.SessionsReviewsCreateParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().reviews().create("8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d", SessionsReviewsCreateParams.builder()
.newStatus(SessionsReviewsCreateParams.NewStatus.of("In Review"))
.comment("Flagging for manual document re-check.")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->reviews->create('8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d', [
'new_status' => 'In Review',
'comment' => 'Flagging for manual document re-check.',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.reviews.create(
"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d",
new_status: "In Review",
comment: "Flagging for manual document re-check."
)
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.Reviews.CreateAsync("8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d", new SessionsReviewsCreateParams
{
NewStatus = new SessionsReviewsCreateParamsNewStatus("In Review"),
Comment = "Flagging for manual document re-check.",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"user": "Unknown",
"new_status": "In Review",
"comment": "Flagging for manual document re-check.",
"created_at": "2026-06-12T00:18:44.466537Z"
}创建会话审核 API:人工 KYC
向 Didit 身份验证会话提交人工审核备注或状态变更。支持程序化合规审核与审计追踪,按次计费。
# Records an audit-trail note only -- the session's status does NOT change.
curl -s -X POST https://verification.didit.me/v3/sessions/8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d/reviews/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"new_status": "In Review",
"comment": "Flagging for manual document re-check."
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.reviews.create(
"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d",
new_status="In Review",
comment="Flagging for manual document re-check.",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.reviews.create("8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d", {
new_status: "In Review",
comment: "Flagging for manual document re-check.",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.Reviews.Create(ctx, "8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d", didit.SessionsReviewsCreateParams{
NewStatus: didit.Some(didit.SessionsReviewsCreateParamsNewStatus("In Review")),
Comment: didit.String("Flagging for manual document re-check."),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.SessionsReviewsCreateParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().reviews().create("8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d", SessionsReviewsCreateParams.builder()
.newStatus(SessionsReviewsCreateParams.NewStatus.of("In Review"))
.comment("Flagging for manual document re-check.")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->reviews->create('8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d', [
'new_status' => 'In Review',
'comment' => 'Flagging for manual document re-check.',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.reviews.create(
"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d",
new_status: "In Review",
comment: "Flagging for manual document re-check."
)
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.Reviews.CreateAsync("8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d", new SessionsReviewsCreateParams
{
NewStatus = new SessionsReviewsCreateParamsNewStatus("In Review"),
Comment = "Flagging for manual document re-check.",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"user": "Unknown",
"new_status": "In Review",
"comment": "Flagging for manual document re-check.",
"created_at": "2026-06-12T00:18:44.466537Z"
}授权
您的应用 API 密钥,可在 Business Console 的“开发者 -> API 密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域:针对每个资源设为无权限、只读或读写,限定于特定工作流或已通过的会话、限定于 IP 地址列表,以及设置到期日期。401 表示密钥错误、已撤销或已过期;403 表示未发送密钥、密钥无权访问该资源或操作,或请求来自其 IP 列表之外的地址;在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF URL 将为 null;没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅 https://docs.didit.me/console/api-keys。
请求头
发送 JSON 请求体时设为 application/json。
"application/json"
路径参数
用户验证(KYC)会话的 UUID。必须属于与 API 密钥相同的应用 — 跨应用 UUID、已删除会话以及企业验证(KYB)会话 ID 均返回 404。
"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d"
请求体
可选的记录在条目上的状态标签。接受任何区分大小写的会话状态值("approved" 会被拒绝并返回 400)。在此处记录状态不会更改会话的实际状态,如需更改请使用更新状态的 endpoint。
Not Started, In Progress, Approved, Declined, In Review, Expired, Abandoned, Kyc Expired, Resubmitted, Awaiting User "In Review"
可选的自由文本备注(无强制长度限制)。按原样存储;此 endpoint 不会处理 @email 提及。
"Flagging for manual document re-check."
响应
在会话的审计日志中记录的条目。会话本身保持不变,其 status 保留先前的值,且不发送 Webhook。新条目还会显示在 GET …/reviews/ 的顶部(带有 actor_display: "Unknown")。
条目创建者的显示名称。通过此 endpoint 创建的条目始终为 "Unknown",因为其不记录操作者归属。
"Unknown"
记录在条目上的状态标签,如果未发送则为 null。会话的实际状态不受影响。
Not Started, In Progress, Approved, Declined, In Review, Expired, Abandoned, Kyc Expired, Resubmitted, Awaiting User "In Review"
条目上记录的备注;若未发送任何备注,则为 null。
"Flagging for manual document re-check."
条目写入的时间,ISO 8601 UTC 格式。
"2026-06-12T00:18:44.466537Z"