curl --request POST \
--url https://verification.didit.me/v3/id-verification/wallets/eudi/ \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Idempotency-Key: your-unique-attempt-key' \
--header 'Content-Type: application/json' \
--data '{
"country": "AUT",
"vendor_data": "your-customer-reference",
"metadata": {
"reference": "example"
},
"return_url": "https://app.example.com/identity/complete"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.id_wallets.start_eudi(
vendor_data="your-customer-reference",
metadata={"reference": "example"},
country="AUT",
return_url="https://app.example.com/identity/complete",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.idWallets.startEudi({
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "AUT",
return_url: "https://app.example.com/identity/complete",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.IDWallets.StartEudi(ctx, didit.IDWalletsStartEudiParams{
Body: didit.DigitalIDWalletAPIEudiWalletVerificationStartRequest{
VendorData: didit.String("your-customer-reference"),
Metadata: didit.Some(map[string]any{"reference": "example"}),
Country: didit.DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum("AUT"),
ReturnURL: "https://app.example.com/identity/complete",
},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.util.Map;
import me.didit.Didit;
import me.didit.types.DigitalIdWalletApiEudiWalletVerificationStartCountryEnum;
import me.didit.types.DigitalIdWalletApiEudiWalletVerificationStartRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.idWallets().startEudi(DigitalIdWalletApiEudiWalletVerificationStartRequest.builder()
.vendorData("your-customer-reference")
.metadata(Map.of("reference", "example"))
.country(DigitalIdWalletApiEudiWalletVerificationStartCountryEnum.of("AUT"))
.returnUrl("https://app.example.com/identity/complete")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->idWallets->startEudi([
'vendor_data' => 'your-customer-reference',
'metadata' => ['reference' => 'example'],
'country' => 'AUT',
'return_url' => 'https://app.example.com/identity/complete',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.id_wallets.start_eudi(
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "AUT",
return_url: "https://app.example.com/identity/complete"
)
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.StartEudiAsync(new DigitalIdWalletApiEudiWalletVerificationStartRequest
{
VendorData = "your-customer-reference",
Metadata = new Dictionary<string, object> { ["reference"] = "example" },
Country = "AUT",
ReturnUrl = "https://app.example.com/identity/complete",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "00000000-0000-4000-8000-000000000001",
"wallet_verification": {
"wallet": {
"id": "eudi",
"name": "EUDI Wallet",
"issuing_authority": "The user's own member state; the issuer differs per country"
},
"country": "AUT",
"status": "Not Finished",
"outcome": "pending",
"error": null,
"interaction": "redirect",
"simulated": false,
"expires_at": "2026-01-01T10:10:00Z",
"next_action": {
"type": "redirect",
"url": "https://wallet.example.com/authorize"
},
"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>"
}EUDIウォレット本人確認API
DiditのAPIで、EUDIウォレットによる本人確認を自社のアプリケーションに連携できます。対応国、認証ステップ、結果、料金をご確認いただけます。
curl --request POST \
--url https://verification.didit.me/v3/id-verification/wallets/eudi/ \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Idempotency-Key: your-unique-attempt-key' \
--header 'Content-Type: application/json' \
--data '{
"country": "AUT",
"vendor_data": "your-customer-reference",
"metadata": {
"reference": "example"
},
"return_url": "https://app.example.com/identity/complete"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.id_wallets.start_eudi(
vendor_data="your-customer-reference",
metadata={"reference": "example"},
country="AUT",
return_url="https://app.example.com/identity/complete",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.idWallets.startEudi({
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "AUT",
return_url: "https://app.example.com/identity/complete",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.IDWallets.StartEudi(ctx, didit.IDWalletsStartEudiParams{
Body: didit.DigitalIDWalletAPIEudiWalletVerificationStartRequest{
VendorData: didit.String("your-customer-reference"),
Metadata: didit.Some(map[string]any{"reference": "example"}),
Country: didit.DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum("AUT"),
ReturnURL: "https://app.example.com/identity/complete",
},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.util.Map;
import me.didit.Didit;
import me.didit.types.DigitalIdWalletApiEudiWalletVerificationStartCountryEnum;
import me.didit.types.DigitalIdWalletApiEudiWalletVerificationStartRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.idWallets().startEudi(DigitalIdWalletApiEudiWalletVerificationStartRequest.builder()
.vendorData("your-customer-reference")
.metadata(Map.of("reference", "example"))
.country(DigitalIdWalletApiEudiWalletVerificationStartCountryEnum.of("AUT"))
.returnUrl("https://app.example.com/identity/complete")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->idWallets->startEudi([
'vendor_data' => 'your-customer-reference',
'metadata' => ['reference' => 'example'],
'country' => 'AUT',
'return_url' => 'https://app.example.com/identity/complete',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.id_wallets.start_eudi(
vendor_data: "your-customer-reference",
metadata: { reference: "example" },
country: "AUT",
return_url: "https://app.example.com/identity/complete"
)
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.StartEudiAsync(new DigitalIdWalletApiEudiWalletVerificationStartRequest
{
VendorData = "your-customer-reference",
Metadata = new Dictionary<string, object> { ["reference"] = "example" },
Country = "AUT",
ReturnUrl = "https://app.example.com/identity/complete",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "00000000-0000-4000-8000-000000000001",
"wallet_verification": {
"wallet": {
"id": "eudi",
"name": "EUDI Wallet",
"issuing_authority": "The user's own member state; the issuer differs per country"
},
"country": "AUT",
"status": "Not Finished",
"outcome": "pending",
"error": null,
"interaction": "redirect",
"simulated": false,
"expires_at": "2026-01-01T10:10:00Z",
"next_action": {
"type": "redirect",
"url": "https://wallet.example.com/authorize"
},
"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は必要ありません。
開始リクエストに対するレスポンスは次に行う認証アクションを示すもので、承認済みの本人確認結果ではありません。
対応範囲と有効化
| プロパティ | 値 |
|---|---|
| ウォレット | EUDI Wallet |
| ウォレットID | eudi |
| 国 | |
| 本番環境でのウォレットの有効化 | ⏳ 近日公開 |
| 公開されているウォレットの料金 | 近日公開 |
本人が行う操作
開始リクエストから返される次のアクションに従ってください。 本人がブラウザ、別のデバイス、アプリのいずれを使うかは、ウォレットの認証エクスペリエンスによって決まります。結果を受け取る
デジタル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が返されます。
ボディ
EUDI Walletによる本人確認を開始します(AUT, BEL, BGR, HRV, CYP, CZE, DNK, EST, FIN, FRA, DEU, GRC, HUN, IRL, ITA, LVA, LTU, LUX, MLT, NLD, POL, PRT, ROU, SVK, SVN, ESP, SWE, ISL, LIE, NOR)。
EUDI Walletの本人情報の国を示すISO 3166-1 alpha-3コード。
AUT- AUTBEL- BELBGR- BGRHRV- HRVCYP- CYPCZE- CZEDNK- DNKEST- ESTFIN- FINFRA- FRADEU- DEUGRC- GRCHUN- HUNIRL- IRLITA- ITALVA- LVALTU- LTULUX- LUXMLT- MLTNLD- NLDPOL- POLPRT- PRTROU- ROUSVK- SVKSVN- SVNESP- ESPSWE- SWEISL- ISLLIE- LIENOR- NOR
AUT, BEL, BGR, HRV, CYP, CZE, DNK, EST, FIN, FRA, DEU, GRC, HUN, IRL, ITA, LVA, LTU, LUX, MLT, NLD, POL, PRT, ROU, SVK, SVN, ESP, SWE, ISL, LIE, NOR ウォレットでの操作後にユーザーのブラウザが戻るhttps URLで、request_idとresultが付加されます。このURLのホストは、アプリケーションのallowed_return_hostsに登録されている必要があります(またはアプリケーションのホワイトラベルドメインであること)。resultだけを信用しないでください。結果はGET .../verifications/{request_id}/またはWebhookで取得してください。
1 - 2048この認証に対するお客様独自の参照値です(例:お客様のユーザーID)。結果とWebhookで返されます。
認証とともに保存され、結果とWebhookで返される任意のJSONオブジェクトです。
Show child attributes
Show child attributes
サンドボックスアプリケーション専用:シミュレートする結果です。'wallet_cancelled'、'wallet_timeout'、'wallet_provider_error'のいずれかを指定し、それ以外のシナリオ(または指定なし)は検証済みになります。本番アプリケーションでは拒否されます。全カタログはGET /v1/sandbox/scenarios/で確認できます。
1ユーザーがお客様のページを表示しているデバイスでサインインする場合はsame_device、別のデバイスを使用する場合(例:BankIDのQRコード)はcross_device。
same_device- same_devicecross_device- cross_device
same_device, cross_device