curl --request POST \
--url https://verification.didit.me/v3/id-verification/wallets/mobile-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",
"phone_number": "+37200000000"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.id_wallets.start_mobile_id(
vendor_data="your-customer-reference",
metadata={"reference": "example"},
country="EST",
personal_code="00000000000",
phone_number="+37200000000",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.idWallets.startMobileId({
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "EST",
personal_code: "00000000000",
phone_number: "+37200000000",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.IDWallets.StartMobileID(ctx, didit.IDWalletsStartMobileIDParams{
Body: didit.DigitalIDWalletAPIMobileIDWalletVerificationStartRequest{
VendorData: didit.String("your-customer-reference"),
Metadata: didit.Some(map[string]any{"reference": "example"}),
Country: didit.DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnum("EST"),
PersonalCode: "00000000000",
PhoneNumber: "+37200000000",
},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.util.Map;
import me.didit.Didit;
import me.didit.types.DigitalIdWalletApiMobileIdWalletVerificationStartCountryEnum;
import me.didit.types.DigitalIdWalletApiMobileIdWalletVerificationStartRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.idWallets().startMobileId(DigitalIdWalletApiMobileIdWalletVerificationStartRequest.builder()
.vendorData("your-customer-reference")
.metadata(Map.of("reference", "example"))
.country(DigitalIdWalletApiMobileIdWalletVerificationStartCountryEnum.of("EST"))
.personalCode("00000000000")
.phoneNumber("+37200000000")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->idWallets->startMobileId([
'vendor_data' => 'your-customer-reference',
'metadata' => ['reference' => 'example'],
'country' => 'EST',
'personal_code' => '00000000000',
'phone_number' => '+37200000000',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.id_wallets.start_mobile_id(
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "EST",
personal_code: "00000000000",
phone_number: "+37200000000"
)
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.StartMobileIdAsync(new DigitalIdWalletApiMobileIdWalletVerificationStartRequest
{
VendorData = "your-customer-reference",
Metadata = new Dictionary<string, object> { ["reference"] = "example" },
Country = "EST",
PersonalCode = "00000000000",
PhoneNumber = "+37200000000",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "00000000-0000-4000-8000-000000000001",
"wallet_verification": {
"wallet": {
"id": "mobile_id",
"name": "Mobile-ID",
"issuing_authority": "SK ID Solutions with the national mobile operators"
},
"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>"
}Mobile-ID本人確認API
DiditのAPIでMobile-IDによる本人確認を自社アプリケーションに連携できます。対応国、認証ステップ、結果、料金をご確認ください。
curl --request POST \
--url https://verification.didit.me/v3/id-verification/wallets/mobile-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",
"phone_number": "+37200000000"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.id_wallets.start_mobile_id(
vendor_data="your-customer-reference",
metadata={"reference": "example"},
country="EST",
personal_code="00000000000",
phone_number="+37200000000",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.idWallets.startMobileId({
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "EST",
personal_code: "00000000000",
phone_number: "+37200000000",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.IDWallets.StartMobileID(ctx, didit.IDWalletsStartMobileIDParams{
Body: didit.DigitalIDWalletAPIMobileIDWalletVerificationStartRequest{
VendorData: didit.String("your-customer-reference"),
Metadata: didit.Some(map[string]any{"reference": "example"}),
Country: didit.DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnum("EST"),
PersonalCode: "00000000000",
PhoneNumber: "+37200000000",
},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.util.Map;
import me.didit.Didit;
import me.didit.types.DigitalIdWalletApiMobileIdWalletVerificationStartCountryEnum;
import me.didit.types.DigitalIdWalletApiMobileIdWalletVerificationStartRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.idWallets().startMobileId(DigitalIdWalletApiMobileIdWalletVerificationStartRequest.builder()
.vendorData("your-customer-reference")
.metadata(Map.of("reference", "example"))
.country(DigitalIdWalletApiMobileIdWalletVerificationStartCountryEnum.of("EST"))
.personalCode("00000000000")
.phoneNumber("+37200000000")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->idWallets->startMobileId([
'vendor_data' => 'your-customer-reference',
'metadata' => ['reference' => 'example'],
'country' => 'EST',
'personal_code' => '00000000000',
'phone_number' => '+37200000000',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.id_wallets.start_mobile_id(
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "EST",
personal_code: "00000000000",
phone_number: "+37200000000"
)
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.StartMobileIdAsync(new DigitalIdWalletApiMobileIdWalletVerificationStartRequest
{
VendorData = "your-customer-reference",
Metadata = new Dictionary<string, object> { ["reference"] = "example" },
Country = "EST",
PersonalCode = "00000000000",
PhoneNumber = "+37200000000",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "00000000-0000-4000-8000-000000000001",
"wallet_verification": {
"wallet": {
"id": "mobile_id",
"name": "Mobile-ID",
"issuing_authority": "SK ID Solutions with the national mobile operators"
},
"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は不要です。
開始レスポンスは次に行う認証アクションを示すものであり、承認済みの本人確認結果ではありません。
対応範囲と有効化
| 項目 | 値 |
|---|---|
| ウォレット | Mobile-ID |
| ウォレットID | mobile_id |
| 国 | |
| 本番環境でのウォレット有効化 | ✅ 利用可能 |
| 公開されているウォレット料金 | 完了した認証1件あたり$0.21 |
本人が行う操作
アプリケーションに照合コードを表示し、本人がスマートフォンで承認するまで待ちます。 本人はスマートフォン上でPINを入力します。アプリケーションやAPIリクエストでPINを入力することは決してありません。 リクエスト例のすべてがゼロの識別子は、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が返されます。
ボディ
Mobile-ID認証を開始します(EST、LTU)。
Mobile-ID IDの国を示すISO 3166-1 alpha-3コード。
EST- ESTLTU- LTU
EST, LTU ユーザーの国民個人識別コード。ユーザーのMobile-IDアプリを指定するために使用され、ユーザーはアプリで照合コードを確認してPINを入力します。PINは絶対に収集しないでください。
1^[0-9-]{6,20}$E.164形式のMobile-ID電話番号(+372...または+370...)。
1 - 16この認証に対するお客様独自の参照値です(例:お客様のユーザーID)。結果とWebhookで返されます。
認証とともに保存され、結果とWebhookで返される任意のJSONオブジェクトです。
Show child attributes
Show child attributes
サンドボックスアプリケーション専用:シミュレートする結果です。'wallet_cancelled'、'wallet_timeout'、'wallet_provider_error'のいずれかを指定し、それ以外のシナリオ(または指定なし)は検証済みになります。本番アプリケーションでは拒否されます。全カタログはGET /v1/sandbox/scenarios/で確認できます。
1