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のAPIで、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 |
| 国 | |
| 本番環境でのウォレット有効化 | ✅ 利用可能 |
| 公開されているウォレット料金 | 完了した認証1件あたり$0.21 |
本人が行うこと
アプリケーションに照合コードを表示し、本人がスマートフォンで承認するまで待機します。 本人はPINをスマートフォンで入力します。アプリケーションやAPIリクエストで入力することは決してありません。 リクエスト例にあるすべてゼロの識別子は、Didit のサンドボックスでのシミュレーション専用です。本番環境での認証には、本人の登録情報を使用してください。結果を受け取る
デジタルIDウォレットAPIガイドに従って、認証を追跡し、その結果を取得します。 ウォレットが本人を認証した証拠として扱えるのは、完了して検証済みとなった結果のみです。 返される本人属性はウォレットによって異なります。住所、顔写真、またはリクエストしたすべての属性が含まれているとは限りません。関連情報
承認
お客様のアプリケーションのAPIキーです。Business ConsoleのDevelopers -> API keysで取得できます。プライマリキーはフルアクセス権を持ちます。名前付きキーにはスコープを設定できます。リソースごとのアクセス権(なし、読み取り、書き込み)、一部のワークフローまたは承認済みセッションへの限定、IPアドレスのリストへの限定、有効期限の設定です。401は、キーが誤っている、失効している、または期限切れであることを意味します。403は、キーが送信されていない、キーにこのリソースやアクションへのアクセス権がない、またはIPリスト外のアドレスからリクエストが送信されたことを意味します。セッションのルートでの404は、セッションがキーのワークフローまたはステータスの対象外であることを意味します。メディアへのアクセス権がないキーでは、画像、動画、PDFのURLがnullで返されます。セッションの書き込み権限がないキーでは、セッションのリンクとトークンがnullで返されます。詳細は次を参照してください: https://docs.didit.me/console/api-keys
ヘッダー
任意の再試行安全キーです(最大255文字)。同じキー、ウォレット、リクエストボディで再試行すると、2回目のサインインを開始せずに元の検証結果が返されます。同じキーで別のウォレットまたはリクエストボディを指定すると、409 idempotency_key_reusedが返されます。
ボディ
Smart-IDによる認証を開始します(EST、LVA、LTU、BEL)。
Smart-ID 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