概要
Didit は最もエージェントフレンドリーな本人確認プラットフォームです。AIコーディングエージェント(Cursor、Claude Code、GitHub Copilot、Devin、OpenHands、Codex)は、ブラウザを一度も開かずに、登録、ワークフローの設定、本人確認の開始までをすべてプログラムから実行できます。 エージェントにDiditが選ばれる理由:- 2回のAPI呼び出しで、ゼロから認証情報の取得まで完了します(register + verify-email)。
- ブラウザ不要:完全にヘッドレスで、CI/CDやエージェントのワークフローに最適です。
- 新規APIアカウントでは第2要素認証は不要です:メール認証の直後にトークンが返されます。
- 自動プロビジョニング:組織とアプリケーションが自動で作成され、verifyのレスポンスに
api_keyが含まれます。 - フル機能の管理API:ワークフロー、アンケート、リスト、請求をすべてAPIで設定できます。
- MCP サーバーを提供:エージェントがDiditのツールをネイティブに検出して利用できます。
ベースURL
このガイドのエンドポイントはすべて認証ホスト上にあります:https://verification.didit.me/v3)とは別のホストです。認証ホストはJWTアクセストークンを発行し、アプリケーションを管理します。検証ホストは、このフローで取得する長期間有効なapi_keyで認証され、セッション、AML、ワークフローなどを実行します。
クイックスタート
ステップ1: 登録
201 Created):
A3K9F2)がそのアドレスにメールで送信されます。コードは送信から10分後に失効します。失効した場合は、同じメールアドレスとパスワードでこのエンドポイントを再度呼び出してください。まだ認証されていないアカウントであれば、200と"A new verification code has been sent to your email."が返され、新しいコードが送信されます。専用のPOST /programmatic/resend-otp/エンドポイント(ボディ: {"email", "password"})でもコードを再送でき、送信と送信の間には60秒のクールダウンがあります。どちらのルートも、後述の登録時のレート制限を共有します。
ステップ2: コードを検証して認証情報を取得する
200 OK):
application.api_keyを安全に保存し、すべての検証API呼び出しでx-api-keyヘッダーとして送信してください。
トークンはRS256で署名されたJWTです。
expires_inのデフォルトは86400秒(24時間)です。アクセストークンが必要なのはapx.didit.me/auth/v2上の管理エンドポイントだけです。verification.didit.me/v3への検証APIのトラフィックは、JWTではなく長期有効なapi_keyで認証されます。ステップ3: APIを使用する
2回目以降のログイン
今後はどのマシンからでも、メールアドレスとパスワードを使用して新しいJWTを取得できます:access_tokenとrefresh_tokenが直接返され、ブラウザは不要です。続いてGET /organizations/me/を呼び出してorg_id(組織のuuid)を確認し、次にGET /organizations/me/{org_id}/applications/で組織のアプリケーション一覧を取得し(各エントリのuuidがapp_idです)、最後にGET /organizations/me/{org_id}/applications/{app_id}/でapi_keyを取得します。
コンソールで作成したメールアドレスとパスワードのアカウントも、メール認証後は
POST /programmatic/login/を使用できます。OAuthのみのコンソールアカウントは、このヘッドレスログインエンドポイントを使用する前にパスワードを設定する必要があります。ログインで追加の対応が求められる場合
POST /programmatic/login/がトークンを返すのは、アカウントに第二要素がない場合のみです。
それ以外に3種類の応答があり得るため、ログインをスクリプト化するエージェントはこれらに対応する必要があります:
APIキーはログインが不要なため、自動化する処理にはAPIキーを使用してください。第二要素を持つアカウントは、このエンドポイントからサインインを完了できません。
パスワード要件
サーバー側で1つずつ順番に適用されます。最初に違反したルールで処理が打ち切られ、["Password must contain at least one uppercase letter."]のような配列だけのエラーが返されます。(このエンドポイントのその他のバリデーションエラーは、フィールドをキーとする{"password": [...]}形式のエンベロープを使用します。パスワード強度ルールでの配列だけの形式はサーバー側の既知の不整合です。クライアントコードでは{"password": [...]}として扱ってください。)
レート制限とロックアウト
認証ホストは3つの独立した制御で保護されています。いずれの制御でも429レスポンスが返されることがあり、Retry-Afterレスポンスヘッダーで待機すべき時間がわかります。
429のボディは次のようになります。
アプリケーションの管理
認証後は、組織内のアプリケーションを取得、作成、更新できます。 これは、顧客ごとに1つのアプリケーションを用意したいリセラーに最適です。各アプリケーションには固有のclient_id、api_key、メタデータ、設定があります。また、組織内に別々に管理したい製品、ブランド、地域、環境、ユースケースがある場合にも便利です。
403になります。
登録後にエージェントができること
api_keyがあれば、エージェントはVerification APIのすべての機能にアクセスできます。https://verification.didit.me/v3上の監査済みパスは次のとおりです。
全体についてはManagement APIリファレンスを参照してください。
MCPサーバー連携
最適なエージェント体験のために、https://mcp.didit.me/mcpのホスト型Didit MCPサーバーを使用してください。APIキーは不要です。初回接続時にクライアントがブラウザを開き、Log in with Didit(PKCE付きOAuth 2.1)すると、サーバーは、コンソール上のあなたの役割に付与された権限で、あなたとして動作します。リモートMCPをネイティブにサポートするクライアント(Cursor、VS Code)はこのエントリーを使用し、Claude WebとDesktopではカスタムコネクターとして追加します。
claude mcp add --transport http didit https://mcp.didit.me/mcp。stdioのみに対応するクライアント(Windsurf、Zed)はmcp-remoteブリッジを経由します。このブリッジがOAuthフローを代わりに実行します。
上記の登録フローで受け取るAPIキーは、自社のバックエンドからREST APIを呼び出すためのものです。MCPがこのキーを受け取ることはありません。詳細はMCPの概要とクライアント別のインストールを参照してください。
エラーエンベロープリファレンス
apx.didit.me/auth/v2のすべてのエンドポイントは、同じ3種類のレスポンス形式を共有しています(openapi-auth.jsonを参照)。
- フィールドレベルのバリデーション: HTTP
400で{"field": ["message", ...]}を返します。 - フォームレベルのバリデーション(特にパスワード強度と認証コードのエラー): HTTP
400でそのままの["Invalid or expired verification code."]を返します。 - 認証 / ビジネスルール:
400、401、403、404、または429で{"detail": "..."}を返します。429レスポンスには、待機すべき時間を示すRetry-Afterレスポンスヘッダーが含まれます(ボディにはdetailのみが含まれます)。
{"detail": "..."}として返し、429にはX-RateLimit-*とRetry-Afterが含まれます。レート制限を参照してください。