curl
curl -fsS https://verification.didit.me/v3/status/import requests
resp = requests.get('https://verification.didit.me/v3/status/', timeout=5)
resp.raise_for_status()
feed = resp.json()
print(feed['status'])
for service in feed['services']:
if service['status'] != 'operational':
print(service['key'], service['status'])const feed = await fetch('https://verification.didit.me/v3/status/').then((r) => r.json());
console.log(feed.status);
const affected = feed.services.filter((s) => s.status !== 'operational');
console.log(affected.map((s) => `${s.key}: ${s.status}`));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/status/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://verification.didit.me/v3/status/"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://verification.didit.me/v3/status/")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/status/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "degraded",
"updated_at": "2026-10-13T09:41:07.512345Z",
"services": [
{
"key": "service_id_verification",
"name": "ID verification",
"status": "operational"
},
{
"key": "service_liveness_face_match",
"name": "Liveness and face match",
"status": "operational"
},
{
"key": "service_aml_screening",
"name": "AML screening",
"status": "operational"
},
{
"key": "service_kyb_registries",
"name": "KYB registries",
"status": "operational"
},
{
"key": "service_database_validation",
"name": "Database validation",
"status": "degraded"
},
{
"key": "service_phone_delivery",
"name": "Phone verification delivery",
"status": "operational"
},
{
"key": "service_email_delivery",
"name": "Email verification delivery",
"status": "operational"
},
{
"key": "service_transaction_monitoring",
"name": "Transaction monitoring",
"status": "operational"
}
],
"incidents": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"service": "service_database_validation",
"service_name": "Database validation",
"state": "degraded",
"status": "ongoing",
"title": "Database validation is degraded in Brazil.",
"body": "Checks against Brazil (CPF) may be slow or fail since 08:55 UTC.",
"affected": "Brazil (CPF)",
"country_name": "Brazil",
"started_at": "2026-10-13T08:55:00Z",
"resolved_at": null,
"duration_minutes": null
},
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"service": "service_aml_screening",
"service_name": "AML screening",
"state": "down",
"status": "resolved",
"title": "AML screening is back to normal.",
"body": "Recovered at 14:32 UTC after 17 minutes.",
"affected": "",
"country_name": "",
"started_at": "2026-10-11T14:15:00Z",
"resolved_at": "2026-10-11T14:32:00Z",
"duration_minutes": 17
}
]
}概览
服务状态 API:Didit 公开状态数据
GET /v3/status/ 是 Didit 公开且无需认证的状态数据源,提供各服务的运行状态及近 7 天的事件记录,适用于状态组件与健康检查。
GET
/
v3
/
status
/
curl
curl -fsS https://verification.didit.me/v3/status/import requests
resp = requests.get('https://verification.didit.me/v3/status/', timeout=5)
resp.raise_for_status()
feed = resp.json()
print(feed['status'])
for service in feed['services']:
if service['status'] != 'operational':
print(service['key'], service['status'])const feed = await fetch('https://verification.didit.me/v3/status/').then((r) => r.json());
console.log(feed.status);
const affected = feed.services.filter((s) => s.status !== 'operational');
console.log(affected.map((s) => `${s.key}: ${s.status}`));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/status/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://verification.didit.me/v3/status/"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://verification.didit.me/v3/status/")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/status/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "degraded",
"updated_at": "2026-10-13T09:41:07.512345Z",
"services": [
{
"key": "service_id_verification",
"name": "ID verification",
"status": "operational"
},
{
"key": "service_liveness_face_match",
"name": "Liveness and face match",
"status": "operational"
},
{
"key": "service_aml_screening",
"name": "AML screening",
"status": "operational"
},
{
"key": "service_kyb_registries",
"name": "KYB registries",
"status": "operational"
},
{
"key": "service_database_validation",
"name": "Database validation",
"status": "degraded"
},
{
"key": "service_phone_delivery",
"name": "Phone verification delivery",
"status": "operational"
},
{
"key": "service_email_delivery",
"name": "Email verification delivery",
"status": "operational"
},
{
"key": "service_transaction_monitoring",
"name": "Transaction monitoring",
"status": "operational"
}
],
"incidents": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"service": "service_database_validation",
"service_name": "Database validation",
"state": "degraded",
"status": "ongoing",
"title": "Database validation is degraded in Brazil.",
"body": "Checks against Brazil (CPF) may be slow or fail since 08:55 UTC.",
"affected": "Brazil (CPF)",
"country_name": "Brazil",
"started_at": "2026-10-13T08:55:00Z",
"resolved_at": null,
"duration_minutes": null
},
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"service": "service_aml_screening",
"service_name": "AML screening",
"state": "down",
"status": "resolved",
"title": "AML screening is back to normal.",
"body": "Recovered at 14:32 UTC after 17 minutes.",
"affected": "",
"country_name": "",
"started_at": "2026-10-11T14:15:00Z",
"resolved_at": "2026-10-11T14:32:00Z",
"duration_minutes": 17
}
]
}概览
返回每项 Didit 服务的状态、整体状态,以及当前进行中的事件和过去 7 天内已解决的事件。 该端点为公开端点,请勿发送认证请求头。 响应不包含任何组织数据,对所有调用方都相同。适用场景
- 状态组件:向您的用户或支持团队展示某项 Didit 服务当前是否处于降级状态。
- 集成健康检查:在怀疑是您自己的代码导致检查缓慢或失败之前,先查看 Didit 是否报告了您所调用服务的事件。
- 事件历史:列出过去 7 天内发生的事件,以及每起事件持续的时长。
轮询
响应缓存 30 秒,因此轮询频率不要超过每 30 秒一次。updated_at 表示 Didit 生成您所收到响应的时间。
同时适用 GET 速率限制:每个 IP 地址每分钟 600 次请求。
服务
services 列出所有服务,无论其是否有事件。
请按 key 匹配:name 是英文显示名称,可能会更改。
key | 服务 |
|---|---|
service_id_verification | 身份证件验证 |
service_liveness_face_match | 活体检测与人脸比对 |
service_aml_screening | AML 筛查 |
service_kyb_registries | KYB 企业登记库 |
service_database_validation | 数据库核验 |
service_phone_delivery | 电话验证投递 |
service_email_delivery | 邮箱验证投递 |
service_transaction_monitoring | 交易监控 |
status 为 operational、degraded 或 down。
当服务没有进行中的事件时为 operational,否则为其进行中事件中最严重的状态。
顶层 status 为所有服务中最严重的状态。
事件
incidents 列出所有进行中的事件,以及过去 7 天内已解决的事件,按 started_at 从新到旧排列。
最多列出 50 个已解决的事件。
state为degraded或down。已解决的事件保留其最后的状态。status在服务恢复之前为ongoing,恢复后变为resolved。- 事件进行中时,
resolved_at和duration_minutes为null。 affected和country_name说明受影响的国家或登记库,例如Brazil (CPF)和Brazil。事件与某个国家或登记库无关时,这两个字段为空。title和body为英文。若要以其他语言展示事件,请根据service、state和country_name自行生成文本。
响应示例
{
"status": "degraded",
"updated_at": "2026-10-13T09:41:07.512345Z",
"services": [
{ "key": "service_id_verification", "name": "ID verification", "status": "operational" },
{ "key": "service_liveness_face_match", "name": "Liveness and face match", "status": "operational" },
{ "key": "service_aml_screening", "name": "AML screening", "status": "operational" },
{ "key": "service_kyb_registries", "name": "KYB registries", "status": "operational" },
{ "key": "service_database_validation", "name": "Database validation", "status": "degraded" },
{ "key": "service_phone_delivery", "name": "Phone verification delivery", "status": "operational" },
{ "key": "service_email_delivery", "name": "Email verification delivery", "status": "operational" },
{ "key": "service_transaction_monitoring", "name": "Transaction monitoring", "status": "operational" }
],
"incidents": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"service": "service_database_validation",
"service_name": "Database validation",
"state": "degraded",
"status": "ongoing",
"title": "Database validation is degraded in Brazil.",
"body": "Checks against Brazil (CPF) may be slow or fail since 08:55 UTC.",
"affected": "Brazil (CPF)",
"country_name": "Brazil",
"started_at": "2026-10-13T08:55:00Z",
"resolved_at": null,
"duration_minutes": null
},
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"service": "service_aml_screening",
"service_name": "AML screening",
"state": "down",
"status": "resolved",
"title": "AML screening is back to normal.",
"body": "Recovered at 14:32 UTC after 17 minutes.",
"affected": "",
"country_name": "",
"started_at": "2026-10-11T14:15:00Z",
"resolved_at": "2026-10-11T14:32:00Z",
"duration_minutes": 17
}
]
}
相关内容
- 健康检查:公开的存活探测端点,同样无需认证请求头。
- 警报 Webhook:针对您组织使用的服务,将
alert.service.degraded和alert.service.recovered推送到您的端点。 - 速率限制
响应
当前服务状态。
公开服务状态:各项 Didit 服务的状态、整体状态以及正在发生或在过去 7 天内已解决的事件。
所有服务当前状态中的最差状态,仅由正在发生的事件决定。
可用选项:
operational, degraded, down 示例:
"degraded"
Didit 生成此响应的时间(ISO 8601,UTC)。响应会缓存 30 秒,因此可能最多有 30 秒的延迟。
示例:
"2026-10-13T09:41:07.512345Z"
每个服务对应一个条目,始终列出所有服务。
Show child attributes
Show child attributes
按 started_at 最新的优先排序。包括所有进行中的事件,加上过去 7 天内解决的事件(最多 50 个已解决事件)。若在此期间无事件发生则为空。
Show child attributes
Show child attributes
最后修改于 2026年11月7日