Documentation Index
Fetch the complete documentation index at: https://docs.didit.me/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Didit is the most agent-friendly identity verification platform. AI coding agents (Cursor, Claude Code, GitHub Copilot, Devin, OpenHands, Codex) can register, configure workflows, and start verifying identities — all programmatically, without ever opening a browser. Why agents love Didit:- 2 API calls from zero to credentials (register + verify-email).
- No browser required — fully headless, perfect for CI/CD and agent workflows.
- No 2FA friction for API accounts — tokens are returned immediately after email verification.
- Auto-provisioned organization and application with
api_keyin the verify response. - Full management API — configure workflows, questionnaires, lists, billing, all via API.
- MCP server available — agents can discover and use Didit tools natively.
Base URL
All endpoints in this guide live on the auth host:https://verification.didit.me/v3). The auth host issues JWT access tokens and manages applications. The verification host runs sessions, AML, workflows, etc., authenticated with the long-lived api_key you get from this flow.
Quick start
Step 1: Register
201 Created):
A3K9F2) is emailed to the address. The code expires 15 minutes after registration — if it lapses, call this endpoint again to get a fresh one.
Step 2: Verify the code and get credentials
200 OK):
application.api_key securely and send it as the x-api-key header on every verification API call.
Tokens are RS256-signed JWTs.
expires_in defaults to 86400 seconds (24 hours). The access token is only needed for the management endpoints on apx.didit.me/auth/v2 — verification API traffic on verification.didit.me/v3 is authenticated with the long-lived api_key, not the JWT.Step 3: Use the API
Subsequent logins
From any future machine, exchange your email and password for a fresh JWT:access_token + refresh_token directly — no 2FA, no browser. From there, hit GET /organizations/me/ to discover your org_id, then GET /organizations/me/{org_id}/applications/{app_id}/ to recover the api_key.
Password requirements
Enforced server-side, one rule at a time — the first failure short-circuits with a bare-array error like["Password must contain at least one uppercase letter."]. (Other validation errors on this endpoint use the field-keyed {"password": [...]} envelope. The bare-array shape on password-strength rules is a known server-side inconsistency; treat it as {"password": [...]} in client code.)
| Rule | Detail |
|---|---|
| Minimum length | 8 characters |
| Uppercase letter | At least one A–Z |
| Lowercase letter | At least one a–z |
| Digit | At least one 0–9 |
| Special character | At least one of !@#$%^&*()_+-=[]{}|;:,.<>? |
Rate limits and lockouts
Three independent controls protect the auth host. Any of them can trigger a429 response with a wait field (seconds to back off).
| Surface | Limit |
|---|---|
| Registration | 5 attempts per IP per hour. |
| Login (IP) | 20 attempts per IP per minute, and 100 per IP per hour. |
| Login (email) | Progressive lockout on the account: 5 consecutive failures → 15 min lockout; 10 → 1 hour; 20 → 24 hours. |
429 body looks like this:
Managing applications
Once authenticated, you can retrieve, create, or update applications inside your organization. This is a perfect fit for resellers that want one application per customer. Each application has its ownclient_id, api_key, metadata, and settings. It is also useful when your organization has different products, brands, regions, environments, or use cases you want to keep separate.
403.
What can agents do after registration?
With theapi_key, agents have full access to the verification API. Audited paths on https://verification.didit.me/v3:
| API | What it does |
|---|---|
POST /v3/session/ | Create a verification session. |
GET /v3/sessions/ | List sessions. |
GET /v3/session/{id}/decision/ | Get the V3 decision (plural arrays — see Data models). |
GET /v3/workflows/ | List verification workflows. |
GET /v3/questionnaires/ | List custom questionnaires. |
GET /v3/users/ | List end users (indexed by vendor_data). |
GET /v3/billing/balance/ | Check credit balance. |
POST /v3/billing/top-up/ | Top up credits. |
GET /v3/lists/ | Manage blocklists, allowlists, and custom lists. |
MCP server integration
For the best agent experience, use the Didit MCP server. Most coding agents (Cursor, Claude Code, Windsurf, etc.) accept this MCP server entry:Error envelope reference
Allapx.didit.me/auth/v2 endpoints share the same three response shapes (see openapi-auth.json):
- Field-level validation —
{"field": ["message", ...]}with HTTP400. - Form-level validation (notably password strength and verification-code errors) — bare array
["Invalid or expired verification code."]with HTTP400. - Authentication / business rule —
{"detail": "..."}with400,401,403,404, or429.429responses also include awaitinteger (seconds).
{"detail": "..."} and 429s include X-RateLimit-* and Retry-After — see Rate limiting.