curl --request POST \
--url https://verification.didit.me/v3/id-verification/wallets/smart-id/ \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Idempotency-Key: your-unique-attempt-key' \
--header 'Content-Type: application/json' \
--data '{
"country": "EST",
"vendor_data": "your-customer-reference",
"metadata": {
"reference": "example"
},
"personal_code": "00000000000"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.id_wallets.start_smart_id(
vendor_data="your-customer-reference",
metadata={"reference": "example"},
country="EST",
personal_code="00000000000",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.idWallets.startSmartId({
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "EST",
personal_code: "00000000000",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.IDWallets.StartSmartID(ctx, didit.IDWalletsStartSmartIDParams{
Body: didit.DigitalIDWalletAPISmartIDWalletVerificationStartRequest{
VendorData: didit.String("your-customer-reference"),
Metadata: didit.Some(map[string]any{"reference": "example"}),
Country: didit.DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum("EST"),
PersonalCode: "00000000000",
},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.util.Map;
import me.didit.Didit;
import me.didit.types.DigitalIdWalletApiSmartIdWalletVerificationStartCountryEnum;
import me.didit.types.DigitalIdWalletApiSmartIdWalletVerificationStartRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.idWallets().startSmartId(DigitalIdWalletApiSmartIdWalletVerificationStartRequest.builder()
.vendorData("your-customer-reference")
.metadata(Map.of("reference", "example"))
.country(DigitalIdWalletApiSmartIdWalletVerificationStartCountryEnum.of("EST"))
.personalCode("00000000000")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->idWallets->startSmartId([
'vendor_data' => 'your-customer-reference',
'metadata' => ['reference' => 'example'],
'country' => 'EST',
'personal_code' => '00000000000',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.id_wallets.start_smart_id(
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "EST",
personal_code: "00000000000"
)
puts result.to_husing System;
using System.Collections.Generic;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.IdWallets.StartSmartIdAsync(new DigitalIdWalletApiSmartIdWalletVerificationStartRequest
{
VendorData = "your-customer-reference",
Metadata = new Dictionary<string, object> { ["reference"] = "example" },
Country = "EST",
PersonalCode = "00000000000",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "00000000-0000-4000-8000-000000000001",
"wallet_verification": {
"wallet": {
"id": "smart_id",
"name": "Smart-ID",
"issuing_authority": "SK ID Solutions"
},
"country": "EST",
"status": "Not Finished",
"outcome": "pending",
"error": null,
"interaction": "in_app",
"simulated": true,
"expires_at": "2026-01-01T10:10:00Z",
"next_action": {
"type": "confirm_in_app",
"verification_code": "1234",
"poll_interval_seconds": 2
},
"identity": null,
"attributes": null,
"level_of_assurance": null,
"verified_at": null,
"signature_valid": null,
"credential_type": "person_identification"
},
"vendor_data": "your-customer-reference",
"metadata": {
"reference": "example"
},
"created_at": "2026-01-01T10:00:00Z"
}{
"error": "<string>",
"detail": "<string>"
}{
"detail": "Forbidden - User doesn't have permission"
}{
"error": "<string>",
"detail": "<string>"
}{
"error": "<string>",
"detail": "<string>"
}{
"error": "<string>",
"detail": "<string>"
}Smart-ID 身份验证 API
通过 Didit 将 Smart-ID 身份验证集成到您自己的应用中,查看国家/地区覆盖范围、认证步骤、结果和定价信息。
curl --request POST \
--url https://verification.didit.me/v3/id-verification/wallets/smart-id/ \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Idempotency-Key: your-unique-attempt-key' \
--header 'Content-Type: application/json' \
--data '{
"country": "EST",
"vendor_data": "your-customer-reference",
"metadata": {
"reference": "example"
},
"personal_code": "00000000000"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.id_wallets.start_smart_id(
vendor_data="your-customer-reference",
metadata={"reference": "example"},
country="EST",
personal_code="00000000000",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.idWallets.startSmartId({
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "EST",
personal_code: "00000000000",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.IDWallets.StartSmartID(ctx, didit.IDWalletsStartSmartIDParams{
Body: didit.DigitalIDWalletAPISmartIDWalletVerificationStartRequest{
VendorData: didit.String("your-customer-reference"),
Metadata: didit.Some(map[string]any{"reference": "example"}),
Country: didit.DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum("EST"),
PersonalCode: "00000000000",
},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.util.Map;
import me.didit.Didit;
import me.didit.types.DigitalIdWalletApiSmartIdWalletVerificationStartCountryEnum;
import me.didit.types.DigitalIdWalletApiSmartIdWalletVerificationStartRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.idWallets().startSmartId(DigitalIdWalletApiSmartIdWalletVerificationStartRequest.builder()
.vendorData("your-customer-reference")
.metadata(Map.of("reference", "example"))
.country(DigitalIdWalletApiSmartIdWalletVerificationStartCountryEnum.of("EST"))
.personalCode("00000000000")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->idWallets->startSmartId([
'vendor_data' => 'your-customer-reference',
'metadata' => ['reference' => 'example'],
'country' => 'EST',
'personal_code' => '00000000000',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.id_wallets.start_smart_id(
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "EST",
personal_code: "00000000000"
)
puts result.to_husing System;
using System.Collections.Generic;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.IdWallets.StartSmartIdAsync(new DigitalIdWalletApiSmartIdWalletVerificationStartRequest
{
VendorData = "your-customer-reference",
Metadata = new Dictionary<string, object> { ["reference"] = "example" },
Country = "EST",
PersonalCode = "00000000000",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "00000000-0000-4000-8000-000000000001",
"wallet_verification": {
"wallet": {
"id": "smart_id",
"name": "Smart-ID",
"issuing_authority": "SK ID Solutions"
},
"country": "EST",
"status": "Not Finished",
"outcome": "pending",
"error": null,
"interaction": "in_app",
"simulated": true,
"expires_at": "2026-01-01T10:10:00Z",
"next_action": {
"type": "confirm_in_app",
"verification_code": "1234",
"poll_interval_seconds": 2
},
"identity": null,
"attributes": null,
"level_of_assurance": null,
"verified_at": null,
"signature_valid": null,
"credential_type": "person_identification"
},
"vendor_data": "your-customer-reference",
"metadata": {
"reference": "example"
},
"created_at": "2026-01-01T10:00:00Z"
}{
"error": "<string>",
"detail": "<string>"
}{
"detail": "Forbidden - User doesn't have permission"
}{
"error": "<string>",
"detail": "<string>"
}{
"error": "<string>",
"detail": "<string>"
}{
"error": "<string>",
"detail": "<string>"
}workflow_id。
发起响应描述的是下一步身份认证操作,而不是已通过的身份认证结果。
覆盖范围与激活
| 属性 | 值 |
|---|---|
| 钱包 | Smart-ID |
| 钱包 ID | smart_id |
| 国家/地区 | |
| 生产环境钱包激活 | ✅ 可用 |
| 已发布的钱包价格 | 每次完成验证收费 $0.21 |
用户需要完成的操作
在您的应用中显示比对码,并等待用户在手机上批准。 用户需要在手机上输入 PIN,绝不在您的应用或 API 请求中输入。 请求示例中全为零的标识符仅用于 Didit 沙盒模拟;进行实际认证时,请使用用户登记的信息。接收结果
请参阅数字身份钱包 API 指南,以跟踪验证进度并获取其结果。 只有已完成且已通过验证的结果,才能视为钱包已对该用户完成认证的证明。 返回的身份属性因钱包而异;请勿假定一定会返回地址、肖像或所有请求的属性。相关内容
授权
您的应用 API 密钥,可在 Business Console 的“开发者 -> API 密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域:针对每个资源设为无权限、只读或读写,限定于特定工作流或已通过的会话、限定于 IP 地址列表,以及设置到期日期。401 表示密钥错误、已撤销或已过期;403 表示未发送密钥、密钥无权访问该资源或操作,或请求来自其 IP 列表之外的地址;在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF URL 将为 null;没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅 https://docs.didit.me/console/api-keys。
请求头
可选的重试安全密钥(最多 255 个字符)。使用相同的密钥、钱包和请求体进行重试将返回原始验证结果,而不会发起第二次登录;若将相同密钥用于其他钱包或请求体,则返回 409 idempotency_key_reused。
请求体
发起 Smart-ID 验证(EST、LVA、LTU、BEL)。
Smart-ID 身份的 ISO 3166-1 alpha-3 国家/地区。
EST- ESTLVA- LVALTU- LTUBEL- BEL
EST, LVA, LTU, BEL 用户的国家个人身份识别码。它用于寻址用户的 Smart-ID 应用;用户在应用中确认比对码并在应用中输入其 PIN。切勿收集该 PIN。
1^[0-9-]{6,20}$您为此验证指定的自身参考编号(例如您的用户 ID)。在结果和 Webhook 中返回。
与验证一同存储并在结果和 Webhook 中返回的可选 JSON 对象。
Show child attributes
Show child attributes
仅限沙盒应用:模拟结果,可为 'wallet_cancelled'、'wallet_timeout' 或 'wallet_provider_error';任何其他场景(或无场景)均通过验证。在生产环境应用上会被拒绝。完整目录可在 GET /v1/sandbox/scenarios/ 获取。
1