Install Didit's twelve open-source Agent Skills into Cursor, Claude Code, Codex, or OpenCode in a single `npx` command. Ask the agent in plain English. It writes the code and calls the live API.
Hand Cursor a documentation tab and it invents endpoints and lowercases status
enums. Hand it a Didit skill and every line points at the real API — locked
endpoint, locked headers, signed-webhook handler scaffolded. One `npx`
command.
How it works
From npx install to verified user in four steps.
Step 01
Install the skills
Run `npx skills add didit-protocol/skills` in your project. The CLI detects Cursor, Claude Code, Codex, or OpenCode and drops every skill into the right folder. Install just one with `--skill didit-face-match`.
Step 02
Get an API key
Either grab one in 60 seconds at [business.didit.me](https://business.didit.me) and `export DIDIT_API_KEY=…`, or let the agent register itself programmatically — `POST /programmatic/register/` followed by `verify-email/`, and a key comes back in the response. No browser needed.
Step 03
Ask in plain English
*“Add Didit KYC to my signup flow.”* *“Screen this user against AML lists.”* The agent reads the relevant skill, writes the code, and wires the signed-webhook handler. First-try correct — no documentation tab-switching.
Step 04
User verifies
Didit hosts the camera, the document capture, the selfie, the mobile hand-off. Under 30 seconds for the user. Sub-2-second verdict on your webhook, signed with `X-Signature-V2` so you can trust it.
What the skills give you
Twelve skills. Zero hallucinations. Every Didit API.
Each skill is a single Markdown file that locks the endpoint, the headers, the body shape, and the status enum. Open source. Versioned with the API.
A hub skill for account, sessions, workflows, and billing (45+ endpoints) plus eleven standalone skills for ID, liveness, face match, face search, age, AML, email, phone, proof of address, and database validation.
didit-liveness-detection99.9% accurate selfie liveness
didit-face-matchCompare two faces, 0–100 score
didit-aml-screening1,300+ sanctions + PEP lists
didit-proof-of-addressOCR + geocoding
didit-database-validationGov databases · 18 countries
+ face-search, age, email, phone — 12 in total.
02 · Install
One npx command. Done.
`npx skills add didit-protocol/skills` installs all twelve. Add `--skill didit-face-match` to pick one. Prefer Git? `git clone` and copy what you need. Prefer no tooling? Drop a single `SKILL.md` into your agent's skill folder.
Detects Cursor, Claude Code, Codex, OpenCode automatically.
03 · Hosts
Cursor, Claude Code, Codex, OpenCode.
Same Markdown skill everywhere. The CLI auto-detects your runtime and writes to `.cursor/skills/` or `.claude/skills/`. Built on the [agentskills.io](https://agentskills.io) open standard — no vendor SDK.
Locks the real endpoint, the real headers, the real status casing, the live pricing. The agent stops inventing paths and lowercasing enums. 51 endpoints tested every release.
`export DIDIT_API_KEY=…` and the skill is wired. Or let the agent register itself via `POST /programmatic/register/` and grab a key without leaving the terminal.
Every skill lives at [github.com/didit-protocol/skills](https://github.com/didit-protocol/skills). Audit the code, customise the prompts, send a PR. The skill ships the same day the endpoint does.
Versioned with the API · new endpoint, same-day skill.
Integrate
Install the skills. Ask the agent. Ship.
Left: the install. Right: the cURL the agent writes once the skill is in place.
npx skills addInstall
$ npx skills add didit-protocol/skills✓ 12 skills installed# or just one$ npx skills add didit-protocol/skills \
--skill didit-face-match# set the api key$ export DIDIT_API_KEY="sk_live_..."
OKReadyCursor, Claude Code, Codex, OpenCode auto-detected.
Generated by the `didit-kyc-onboarding` skill.docs →
Agent-ready integration
Install all 12 Didit Agent Skills in one prompt.
Paste into Cursor, Claude Code, Codex, or OpenCode. The agent installs the skills, sets the environment, scaffolds the session create + signed-webhook handler, and tests against the live API.
didit-integration-prompt.md
You are installing the Didit Agent Skills into this project and wiring the first verification session against the live https://verification.didit.me/v3/ API. After this prompt, the project should pass identity verification — Know Your Customer (KYC), Anti-Money Laundering (AML) screening, document Optical Character Recognition (OCR) — through Didit.
Didit ships twelve open-source Agent Skills at https://github.com/didit-protocol/skills and follows the open standard at https://agentskills.io. The CLI auto-detects whether you are running inside Cursor, Claude Code, Codex, or OpenCode and drops the skills into the right folder.
PRE-REQUISITES
- A Didit API key (DIDIT_API_KEY). Either issued from https://business.didit.me, or self-registered by the agent via POST /programmatic/register/ + POST /programmatic/verify-email/ (no browser needed).
- A workflow_id from the Workflow Builder that bundles ID Verification + Passive Liveness + Face Match + IP Analysis + AML — or just use the didit-kyc-onboarding skill below to create one programmatically.
- A webhook endpoint that verifies the X-Signature-V2 header with HMAC-SHA256 on the raw body bytes (do NOT re-serialise the parsed JSON; the signature will not match).
STEP 1 — Install the skills
Recommended:
npx skills add didit-protocol/skills
This installs all twelve skills. To install only one:
npx skills add didit-protocol/skills --skill didit-face-match
Or git clone the repo and copy what you need:
git clone https://github.com/didit-protocol/skills.git
cp -r skills/didit-kyc-onboarding .claude/skills/
cp -r skills/didit-id-document-verification .claude/skills/
The twelve skills:
- didit-verification-management : the hub. Account, sessions, workflows, billing, blocklist, webhook config. 45+ endpoints
- didit-kyc-onboarding : full KYC recipe (ID + selfie + face match) in one call
- didit-id-document-verification : passports, ID cards, driver's licences. OCR, MRZ, NFC. 4,000+ documents, 220+ countries
- didit-liveness-detection : 99.9%-accurate liveness from a single selfie
- didit-face-match : compare two faces, get a 0–100 score
- didit-face-search : 1:N face search for deduplication and blocklists
- didit-biometric-age-estimation : estimate age from a selfie
- didit-email-verification : email OTP, detects breached / disposable / undeliverable
- didit-phone-verification : phone OTP via SMS, WhatsApp, or Telegram. Catches VoIP
- didit-aml-screening : 1,300+ sanctions, PEP, adverse-media lists. Dual-score risk
- didit-proof-of-address : utility bills, bank statements. OCR + geocoding
- didit-database-validation : government databases across 18 countries
STEP 2 — Set the environment
Every skill reads DIDIT_API_KEY. Session-based skills also expect DIDIT_WORKFLOW_ID. Signed-webhook handlers expect DIDIT_WEBHOOK_SECRET.
export DIDIT_API_KEY="<your api key>"
export DIDIT_WORKFLOW_ID="<your workflow id>" # optional
export DIDIT_WEBHOOK_SECRET="<your secret>" # optional
Programmatic alternative (no browser):
curl -X POST https://apx.didit.me/auth/v2/programmatic/register/ \
-H "Content-Type: application/json" \
-d '{"email": "dev@example.com", "password": "MyStr0ng!Pass"}'
# check the email, get the 6-char code, then:
curl -X POST https://apx.didit.me/auth/v2/programmatic/verify-email/ \
-H "Content-Type: application/json" \
-d '{"email": "dev@example.com", "code": "<code>"}'
# response includes api_key — export it as DIDIT_API_KEY.
STEP 3 — Create a verification session
POST https://verification.didit.me/v3/session/
Headers:
x-api-key: $DIDIT_API_KEY
Content-Type: application/json
Body:
{
"workflow_id": "$DIDIT_WORKFLOW_ID",
"vendor_data": "<your user id, max 256 chars>",
"callback_url": "https://<your-app>/kyc/callback",
"metadata": { "source": "agent-skill" }
}
Response: 201 Created. The hosted session URL is on the `url` field. Redirect the user, or send them the link by email / SMS / WhatsApp. Sub-2-second p99 verdict on completion.
STEP 4 — Read the signed webhook
Didit POSTs to your callback. KYC session statuses are Title Case With Spaces.
Body (excerpted):
{
"session_id": "<uuid>",
"vendor_data": "<your user id>",
"status": "Approved",
"id_verification": { "status": "Approved" },
"liveness": { "status": "Approved" },
"face": { "status": "Approved", "similarity_score": 0.94 },
"aml": { "status": "Approved", "hits": [] }
}
Full enum:
Approved | Declined | In Review | In Progress | Not Started | Abandoned | Expired | Resubmitted | Awaiting User | Not Finished
Verify X-Signature-V2 BEFORE parsing the body — HMAC-SHA256 of the raw bytes with your webhook secret. Re-serialising the parsed body changes whitespace and key order and the signature will not match.
STEP 5 — Read the decision on demand
GET https://verification.didit.me/v3/session/{sessionId}/decision/
Headers:
x-api-key: $DIDIT_API_KEY
Returns the full decision payload — id_verification, liveness, face, ip_analysis, aml. Use this whenever the agent needs to confirm the user's status before allowing an action. Never trust client-supplied "I'm verified" flags.
STEP 6 — Branch on status
Approved → continue
Declined → block, surface decision_reason_code, allow resubmit of the failed step
In Review → wait for the analyst webhook; don't block forever
Resubmitted → user re-took a failed step; new verdict is coming
Awaiting User → user hasn't completed the flow; nudge with a reminder
Expired → create a new session
Abandoned and Declined sessions are NOT billed.
STEP 7 — Optional: ongoing AML monitoring
If AML monitoring is enabled on the workflow ($0.07 per user per year), Didit fires status.updated whenever the user lands on a new sanctions / PEP / adverse-media list. No extra endpoint to call.
WEBHOOK EVENT NAMES
- status.updated : KYC or KYB session status changed
- data.updated : session data corrected after creation
- user.status.updated : User entity changed status (Active, Flagged, Blocked)
- user.data.updated : User entity counters, metadata, or aggregate fields changed
- activity.created : timeline activity recorded
Verify X-Signature-V2 on every payload. The webhook secret is per-environment — sandbox is separate from production.
CONSTRAINTS
- KYC session statuses use Title Case With Spaces (Approved, In Review). Do NOT transform them to UPPER_SNAKE_CASE — that casing is for Know Your Business (KYB) sessions and Transaction Monitoring, not KYC.
- HMAC verification runs against the RAW request body bytes. Never re-serialise the parsed JSON.
- Bundle price is $0.30 (ID + Liveness + Face Match + IP Analysis). AML adds $0.20. 500 verifications free every month, forever.
- Default record retention is unlimited unless you configure it shorter (30 days to 10 years per application).
Read the docs:
- https://docs.didit.me/getting-started/agent-skills
- https://docs.didit.me/sessions-api/create-session
- https://docs.didit.me/sessions-api/retrieve-session
- https://docs.didit.me/integration/webhooks
Skills repo:
- https://github.com/didit-protocol/skills
Start free at https://business.didit.me — sandbox key in 60 seconds, 500 verifications free every month, no credit card.
Open a new country in one click. We do the hard work.
We open the local subsidiaries, secure the licenses, run the penetration tests, earn the certifications, and align with every new regulation. To ship verifications in a new country, flip a toggle. 220+ countries live, audited and pen-tested every quarter — the only identity provider an EU member-state government has formally called safer than in-person verification.
Open-source Agent Skills. One per Didit capability.
0
API endpoints covered. All tested every release.
<0s
End-to-end KYC verdict per session at p99.
0
Free verifications every month, on every account.
Three tiers, one price list
Start free. Pay per usage. Scale to Enterprise.
500 free verifications every month, forever. Pay-as-you-go for production. Custom contracts, data residency, and SLAs (Service Level Agreements) on Enterprise.
Free
Free
$0 / month. No credit card required.
Free KYC bundle (ID Verification + Passive Liveness + Face Match + Device & IP Analysis) — 500 / month, every month
Blocklisted Users
Duplicate Detection
200+ fraud signals on every session
Reusable KYC across the Didit network
Case Management Platform
Workflow Builder
Public docs, sandbox, SDKs, MCP (Model Context Protocol) server