curl -X POST https://verification.didit.me/v3/email/risk/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"email": "alice@example.com",
"country_code": "US",
"vendor_data": "lead-123",
"metadata": {"source": "signup_prescreen"}
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.email.assess_risk(
email="alice@example.com",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.email.assessRisk({
email: "alice@example.com",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Email.AssessRisk(ctx, didit.EmailRiskRequest{
Email: "alice@example.com",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.EmailRiskRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.email().assessRisk(EmailRiskRequest.builder()
.email("alice@example.com")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->email->assessRisk([
'email' => 'alice@example.com',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.email.assess_risk(email: "alice@example.com")
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Email.AssessRiskAsync(new EmailRiskRequest
{
Email = "alice@example.com",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "82397be9-5921-4970-a979-2d5b43e08b33",
"status": "Approved",
"email": {
"status": "Approved",
"email": "alice@example.com",
"is_breached": false,
"breaches": [],
"is_disposable": false,
"is_undeliverable": false,
"verification_attempts": 0,
"verified_at": null,
"warnings": [],
"lifecycle": [],
"matches": [],
"email_intelligence": {
"score": 4,
"deliverable": "high",
"breach_risk_level": "Low",
"breach_risk_index": 4,
"is_recent_breach": false,
"is_frequent_breached": false,
"is_disposable": false,
"is_free_domain": false,
"is_breached": false,
"no_of_breaches": 0,
"reason_codes": []
},
"enrichment": {
"score": 4,
"deliverable": "high",
"breach_risk_level": "Low",
"breach_risk_index": 4,
"is_recent_breach": false,
"is_frequent_breached": false,
"is_disposable": false,
"is_free_domain": false,
"is_breached": false,
"no_of_breaches": 0,
"reason_codes": []
}
},
"vendor_data": "lead-123",
"metadata": {
"source": "signup_prescreen"
},
"created_at": "2026-09-01T10:30:00.123456+00:00"
}メールリスクAPI:到達性と情報漏洩のシグナル
DiditのメールリスクAPIは、OTPを送信せずにメールアドレスのリスクをスコアリングします。到達性、使い捨てドメイン、情報漏洩、不正のシグナルを1回のサーバー間呼び出しで取得できます。
curl -X POST https://verification.didit.me/v3/email/risk/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"email": "alice@example.com",
"country_code": "US",
"vendor_data": "lead-123",
"metadata": {"source": "signup_prescreen"}
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.email.assess_risk(
email="alice@example.com",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.email.assessRisk({
email: "alice@example.com",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Email.AssessRisk(ctx, didit.EmailRiskRequest{
Email: "alice@example.com",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.EmailRiskRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.email().assessRisk(EmailRiskRequest.builder()
.email("alice@example.com")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->email->assessRisk([
'email' => 'alice@example.com',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.email.assess_risk(email: "alice@example.com")
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Email.AssessRiskAsync(new EmailRiskRequest
{
Email = "alice@example.com",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "82397be9-5921-4970-a979-2d5b43e08b33",
"status": "Approved",
"email": {
"status": "Approved",
"email": "alice@example.com",
"is_breached": false,
"breaches": [],
"is_disposable": false,
"is_undeliverable": false,
"verification_attempts": 0,
"verified_at": null,
"warnings": [],
"lifecycle": [],
"matches": [],
"email_intelligence": {
"score": 4,
"deliverable": "high",
"breach_risk_level": "Low",
"breach_risk_index": 4,
"is_recent_breach": false,
"is_frequent_breached": false,
"is_disposable": false,
"is_free_domain": false,
"is_breached": false,
"no_of_breaches": 0,
"reason_codes": []
},
"enrichment": {
"score": 4,
"deliverable": "high",
"breach_risk_level": "Low",
"breach_risk_index": 4,
"is_recent_breach": false,
"is_frequent_breached": false,
"is_disposable": false,
"is_free_domain": false,
"is_breached": false,
"no_of_breaches": 0,
"reason_codes": []
}
},
"vendor_data": "lead-123",
"metadata": {
"source": "signup_prescreen"
},
"created_at": "2026-09-01T10:30:00.123456+00:00"
}POST /v3/email/risk/を使用します。
このエンドポイントはメールを送信しません。APIセッションを作成し、アドレスの情報を補完し、メールリスクのルールを適用したうえで、メールアドレス認証で使われるものと同じ正規化済みのメールブロックを1回の同期レスポンスで返します。
リクエストが保存されると、Diditはスコアリング済みのメールアドレスをNetworksの集約エビデンスとしても利用できます。ネットワークグラフでは、共有されたメールシグナルについて、高リスクのメールインテリジェンス、漏洩に関するコンテキスト、ソーシャルプロフィールのカバレッジが表示される場合がありますが、メールアドレスそのものが他の組織に開示されることはありません。
レスポンスの解釈
statusは、このAPIセッションの最終判定です。通常はApprovedですが、リスク評価の結果In ReviewまたはDeclinedになることがあります。email.is_breached、email.is_disposable、email.is_undeliverableは、アプリケーションロジックで使える安定した「はい/いいえ」のシグナルです。email.breachesは、カバレッジがある場合に、そのアドレスを含む既知の漏洩のうち最新のものを、漏洩日と流出したデータの種類とともに一覧で示します。email.email_intelligence.scoreは0から100のリスクスケールで、数値が大きいほどリスクが高いことを示します。breach_risk_level(Low、Medium、High)とno_of_breachesは、そこから派生した値です。email.email_intelligence.reason_codesは、どの正規化済みシグナルが結果に寄与したかを示します。値は今後増える可能性があるため、未知のコードを拒否しないでください。email.email_intelligenceとemail.enrichmentは、同じ正規化済みオブジェクトを持つ互換性のためのエイリアスです。新しい連携ではemail.enrichmentを参照できます。email.matchesは、同じアドレスが別のユーザーによって使用された、お使いのアプリケーションの他のセッションを一覧で示します。重複アカウントの検出に使用してください。request_idはAPIセッションIDです。後続のWebhookやコンソール上のアクティビティと結果を関連付ける必要がある場合は、vendor_dataとともに保存してください。
email.email_intelligenceとemail.enrichmentはベストエフォートのフィールドです。そのアドレス、ドメイン、またはプランについて利用可能なインテリジェンスデータが返されなかった場合、照会が完了していても両方が省略されることがあります。ルールはまずis_breached、is_disposable、is_undeliverableに基づいて構築し、インテリジェンスが欠落している場合は「安全」ではなく「不明」として扱ってください。ソーシャルフットプリントアドオン
enable_socialをtrueに設定すると、レスポンスのemailの下にemail_socialブロックが追加されます。このブロックには、このメールアドレスが登録されているオンラインプラットフォームがカテゴリ別に含まれ、集計数と、データパートナーが返すプロフィール詳細も含まれます。
email.email_social.profiles_registeredとemail.email_social.profiles_checkedが主要な数値で、評価したプラットフォームのうち、メールアドレスの登録が確認されたプラットフォームの数を示します。email.email_social.registered_platformsとemail.email_social.not_registered_platformsは、各プラットフォームをそのcategoryとscope(global、または地域固有のプラットフォームの場合はlocal)とともに一覧で示します。email.email_social.categoriesはカテゴリごとの登録数と比率を示し、email.email_social.profilesは、プラットフォームが公開している場合にプラットフォームごとのプロフィール詳細(名前、写真URL、自己紹介文、プライバシー設定、ビジネスアカウントのフラグ)を保持します。- サマリー指標(
digital_footprint_diversity、digital_sophistication_index、engagement_depth_index、subscription_affordability_index)は0から10の複合指標です。チェックでデータが返されなかった場合、各カウントはnullになることがあります。
profiles_registered: 0は失敗ではなく、実際の結果です。プラットフォームはチェックされたものの、どのプラットフォームでもメールアドレスが見つからなかったことを意味し、合成IDによく見られるシグナルです。このエンドポイント自体はこの結果に基づいて何も処理しません。ワークフローでemail_no_social_presence_actionを使用すると、レビューまたは却下の判定に変換できます。
enable_socialが設定されていない場合、このブロックは含まれません。また、ソーシャルチェックを完了できなかった場合も含まれず、その場合は請求されません。
サンドボックスでの動作
サンドボックスのキーはリクエストを検証し、決定論的な承認済みデータを返します。メールの送信、クレジットの消費、セッションの作成、ネットワークには寄与しません。enable_socialを設定した場合は、決定論的なemail_socialブロックも返します。
請求
Email Risk APIの呼び出しは定価で$0.04です。メールを送信しないため、完全なメールアドレス認証よりも安価です。本番環境のリクエストは、一部のベストエフォートフィールドが利用できない場合でも、照会が開始された時点で課金対象になります。 ソーシャルフットプリントアドオンは別途請求されます。チェックが完了するたびに、Email Risk APIの料金に加えてリクエスト1件につきemail_social1単位が請求されます。照会前のクレジットチェックは両方を対象とします。承認
お客様のアプリケーションのAPIキーです。Business ConsoleのDevelopers -> API keysで取得できます。プライマリキーはフルアクセス権を持ちます。名前付きキーにはスコープを設定できます。リソースごとのアクセス権(なし、読み取り、書き込み)、一部のワークフローまたは承認済みセッションへの限定、IPアドレスのリストへの限定、有効期限の設定です。401は、キーが誤っている、失効している、または期限切れであることを意味します。403は、キーが送信されていない、キーにこのリソースやアクションへのアクセス権がない、またはIPリスト外のアドレスからリクエストが送信されたことを意味します。セッションのルートでの404は、セッションがキーのワークフローまたはステータスの対象外であることを意味します。メディアへのアクセス権がないキーでは、画像、動画、PDFのURLがnullで返されます。セッションの書き込み権限がないキーでは、セッションのリンクとトークンがnullで返されます。詳細は次を参照してください: https://docs.didit.me/console/api-keys
ボディ
スコアリングするメールアドレス。
"alice@example.com"
インテリジェンスのカバレッジ向けの任意のISO 3166-1 alpha-2またはalpha-3の国ヒントです。
3"US"
アプリケーションが観測したデバイスおよびネットワークのコンテキストで、任意指定です。すべてのフィールドは任意です。これらを渡すと、Networksにおけるセッション横断の一致検出に活用されます。
Show child attributes
Show child attributes
このリクエストに対する固定の参照値です。APIセッションに保存され、レスポンスでそのまま返されます。
機密性のないJSONメタデータです。APIセッションに保存され、レスポンスでそのまま返されます。
trueの場合、アドレスのソーシャルフットプリント(そのアドレスが登録されているメール、ソーシャル、ビジネス、EC、エンターテインメントの各プラットフォーム)も検索します。このエンドポイント自体の料金に加えて、リクエスト1件ごとにemail_social1ユニット分が請求されます。
true
レスポンス
リスク評価が完了しました。判定はstatusで確認してください。完了したルックアップでは、HTTPは常に200です。
このリクエストで作成されたAPIセッションのID。結果を後続のWebhookやコンソール上のアクティビティと関連付ける必要がある場合は、vendor_dataとともに保存してください。
このAPIセッションの最終判定です。通常はApprovedですが、リスク評価によってIn ReviewまたはDeclinedになる場合があります。
Approved, In Review, Declined このレスポンスの日時。
送信したvendor_dataのエコー。送信しなかった場合はnullです。
送信したmetadataのエコー。送信しなかった場合はnullです。
正規化されたメールレポート。メールアドレス認証のレスポンスで使われるものと同じブロックです。
Show child attributes
Show child attributes