Didit - Identity Verification API

Identity verification via phone/email OTP and AML screening using Didit API

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/research-tools/capabilities/identity-verification-didit#main ~/.claude/skills/identity-verification-didit

For one project only, change the path to .claude/skills/identity-verification-didit.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text173 lines
identity-verification-didit/SKILL.md173 lines9.5 KBpushed 96d agoRawView on GitHub

Didit - Identity Verification API

Setup

Read your credentials from ~/.gooseworks/credentials.json:

export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")

If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login

All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"

Verify user identities through phone/email OTP codes and screen against AML databases.

Capabilities

  • Send Email Code: Send a one-time verification code to an email address
  • Check Phone Code: Verify a one-time code sent to a phone number (free)
  • Send Phone Code: Send a one-time verification code to a phone number
  • AML Screening: The AML Screening API allows you to screen individuals or companies against global watchlists and high-risk databases
  • Check Email Code: Verify a code sent to an email address (free)
  • Database Validation API: Validate user-provided identity data against authoritative national and global data sources

Usage

Send Email Code

Send a one-time verification code to an email address.

Parameters:

  • email* (string) - Email address to verify
  • options (object) - Options object with code_size (4-8, default 6) and locale (e.g. en-US)
  • signals (object) - Fraud detection signals: ip, device_id, user_agent
  • vendor_data (string) - Unique identifier for vendor/user (UUID or email) for session tracking
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"didit","path":"/v3/email/send","body":{"email":"[email protected]"}}'

Check Phone Code (free)

Verify a one-time code sent to a phone number. Maximum of three verification attempts per code.

Parameters:

  • phone_number* (string) - Phone number in E.164 format (e.g. +14155552671)
  • code* (string) - Verification code (4-8 characters)
  • duplicated_phone_number_action (string) - Action for duplicated numbers: NO_ACTION (default) or DECLINE
  • disposable_number_action (string) - Action for disposable numbers: NO_ACTION (default) or DECLINE
  • voip_number_action (string) - Action for VoIP numbers: NO_ACTION (default) or DECLINE
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"didit","path":"/v3/phone/check","body":{"phone_number":"+1234567890","code":"123456"}}'

Send Phone Code

Send a one-time verification code to a phone number.

Parameters:

  • phone_number* (string) - Phone number in E.164 format (e.g. +14155552671)
  • options (object) - Options object with code_size (4-8, default 6), locale (e.g. en-US), preferred_channel (sms/whatsapp/telegram/voice, default whatsapp)
  • signals (object) - Fraud detection signals: ip, device_id, device_platform (android/ios/ipados/tvos/web), device_model, os_version, app_version, user_agent
  • vendor_data (string) - Unique identifier for vendor/user (UUID or email) for session tracking
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"didit","path":"/v3/phone/send","body":{"phone_number":"+1234567890"}}'

AML Screening

The AML Screening API allows you to screen individuals or companies against global watchlists and high-risk databases. This API provides real-time screening capabilities to detect potential matches and mitigate risks associated with financial fraud and terrorism.

Parameters:

  • full_name* (string) - Full name of the person or company to be screened.
  • entity_type (string) - Type of entity to screen. Either 'person' or 'company'. Defaults to 'person'.
  • date_of_birth (date) - Date of birth for persons or incorporation date for companies, with format: YYYY-MM-DD. For example, 1990-05-15.
  • nationality (string) - Nationality of the person to be screened with format ISO 3166-1 alpha-2. For example: ES. Only applicable for person entity type.
  • document_number (string) - Document number of the person to be screened. Only applicable for person entity type.
  • aml_score_approve_threshold (number) - Score threshold below which hits are auto-approved (0-100). Hits with match scores below this threshold will be marked as approved. Default: 86.
  • aml_score_review_threshold (number) - Score threshold above which hits are auto-declined (0-100). Hits with match scores above this threshold will be declined. Scores between approve and review thresholds require manual review. Default: 100.
  • aml_name_weight (integer) - Weight for name similarity in match score calculation (0-100). The sum of aml_name_weight + aml_dob_weight + aml_country_weight must equal 100. Default: 60.
  • aml_dob_weight (integer) - Weight for date of birth in match score calculation (0-100). The sum of aml_name_weight + aml_dob_weight + aml_country_weight must equal 100. Default: 25.
  • aml_country_weight (integer) - Weight for country/nationality in match score calculation (0-100). The sum of aml_name_weight + aml_dob_weight + aml_country_weight must equal 100. Default: 15.
  • aml_match_score_threshold (integer) - Match score threshold (0-100) that determines if a hit is a False Positive or Unreviewed (Possible Match). Hits with match_score below this are marked as 'False Positive' and excluded from risk assessment. Hits at or above are 'Unreviewed' (Possible Match). Default: 93.
  • include_adverse_media (boolean) - Wheter to include adverse media in the screening. If included, the request will take approximately 10 seconds.
  • include_ongoing_monitoring (boolean) - Whether to include ongoing monitoring in the screening. If included, the save_api_request must be included as well, otherwise it will raise an error.
  • save_api_request (boolean) - Whether to save this API request. If true, then it will appear on the Manual Checks section in the Business Console.
  • vendor_data (string) - A unique identifier for the vendor or user, such as a UUID or email. This field enables proper session tracking and user data aggregation across multiple verification sessions.
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"didit","path":"/v3/aml","body":{"full_name":"John Doe"}}'

Check Email Code (free)

Verify a code sent to an email address.

Parameters:

  • email* (string) - Email address to verify
  • code* (string) - Verification code (4-8 characters)
  • duplicated_email_action (string) - Action for duplicated emails: NO_ACTION (default) or DECLINE
  • breached_email_action (string) - Action for breached emails: NO_ACTION (default) or DECLINE
  • disposable_email_action (string) - Action for disposable emails: NO_ACTION (default) or DECLINE
  • undeliverable_email_action (string) - Action for undeliverable emails: NO_ACTION (default) or DECLINE
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"didit","path":"/v3/email/check","body":{"email":"[email protected]","code":"123456"}}'

Database Validation API

Validate user-provided identity data against authoritative national and global data sources.

Parameters:

  • issuing_state* (string) - ISO 3166-1 alpha-3 country code. Valid: ARG, BOL, BRA, CHL, COL, CRI, DOM, ECU, ESP, GTM, HND, MEX, PAN, PER, PRY, SLV, URY, VEN
  • validation_type* (string) - Validation type: one_by_one or two_by_two
  • identification_number* (string) - Universal ID field - auto-maps to country-specific format
  • document_type (string) - Document type: P (Passport), DL (Driver License), ID (National ID), RP (Residence Permit). Required for some countries.
  • expiration_date (string) - Document expiration date YYYY-MM-DD. Required for some countries (e.g. ESP).
  • first_name (string) - First name
  • last_name (string) - Last name
  • date_of_birth (string) - Date of birth YYYY-MM-DD
  • nationality (string) - ISO 3166-1 alpha-3 nationality code
  • address (string) - Residential address
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"didit","path":"/v3/database-validation","body":{"issuing_state":"ESP","validation_type":"one_by_one","identification_number":"12345678A"}}'

Use Cases

  1. User Registration: Verify phone/email during signup
  2. Two-Factor Authentication: Add OTP verification to login flows
  3. KYC Compliance: Validate identity data for financial services
  4. AML Compliance: Screen customers against sanctions and watchlists

Discover More

For full endpoint details and parameters:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"didit API endpoints"}' List all endpoints
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"didit","path":"/v3/email/send"}'   # Get endpoint details
1---
2name: identity-verification-didit
3description: Identity verification via phone/email OTP and AML screening using Didit API
4source: orthogonal
5---
6 
7 
8# Didit - Identity Verification API
9 
10## Setup
11 
12Read your credentials from ~/.gooseworks/credentials.json:
13```bash
14export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
15export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
16```
17 
18If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`
19 
20All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"`
21 
22 
23Verify user identities through phone/email OTP codes and screen against AML databases.
24 
25## Capabilities
26 
27- **Send Email Code**: Send a one-time verification code to an email address
28- **Check Phone Code**: Verify a one-time code sent to a phone number (free)
29- **Send Phone Code**: Send a one-time verification code to a phone number
30- **AML Screening**: The AML Screening API allows you to screen individuals or companies against global watchlists and high-risk databases
31- **Check Email Code**: Verify a code sent to an email address (free)
32- **Database Validation API**: Validate user-provided identity data against authoritative national and global data sources
33 
34## Usage
35 
36### Send Email Code
37Send a one-time verification code to an email address.
38 
39Parameters:
40- email* (string) - Email address to verify
41- options (object) - Options object with code_size (4-8, default 6) and locale (e.g. en-US)
42- signals (object) - Fraud detection signals: ip, device_id, user_agent
43- vendor_data (string) - Unique identifier for vendor/user (UUID or email) for session tracking
44 
45```bash
46curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
47 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
48 -H "Content-Type: application/json" \
49 -d '{"api":"didit","path":"/v3/email/send","body":{"email":"[email protected]"}}'
50```
51 
52### Check Phone Code (free)
53Verify a one-time code sent to a phone number. Maximum of three verification attempts per code.
54 
55Parameters:
56- phone_number* (string) - Phone number in E.164 format (e.g. +14155552671)
57- code* (string) - Verification code (4-8 characters)
58- duplicated_phone_number_action (string) - Action for duplicated numbers: NO_ACTION (default) or DECLINE
59- disposable_number_action (string) - Action for disposable numbers: NO_ACTION (default) or DECLINE
60- voip_number_action (string) - Action for VoIP numbers: NO_ACTION (default) or DECLINE
61 
62```bash
63curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
64 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
65 -H "Content-Type: application/json" \
66 -d '{"api":"didit","path":"/v3/phone/check","body":{"phone_number":"+1234567890","code":"123456"}}'
67```
68 
69### Send Phone Code
70Send a one-time verification code to a phone number.
71 
72Parameters:
73- phone_number* (string) - Phone number in E.164 format (e.g. +14155552671)
74- options (object) - Options object with code_size (4-8, default 6), locale (e.g. en-US), preferred_channel (sms/whatsapp/telegram/voice, default whatsapp)
75- signals (object) - Fraud detection signals: ip, device_id, device_platform (android/ios/ipados/tvos/web), device_model, os_version, app_version, user_agent
76- vendor_data (string) - Unique identifier for vendor/user (UUID or email) for session tracking
77 
78```bash
79curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
80 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
81 -H "Content-Type: application/json" \
82 -d '{"api":"didit","path":"/v3/phone/send","body":{"phone_number":"+1234567890"}}'
83```
84 
85### AML Screening
86The AML Screening API allows you to screen individuals or companies against global watchlists and high-risk databases. This API provides real-time screening capabilities to detect potential matches and mitigate risks associated with financial fraud and terrorism.
87 
88Parameters:
89- full_name* (string) - Full name of the person or company to be screened.
90- entity_type (string) - Type of entity to screen. Either 'person' or 'company'. Defaults to 'person'.
91- date_of_birth (date) - Date of birth for persons or incorporation date for companies, with format: YYYY-MM-DD. For example, `1990-05-15`.
92- nationality (string) - Nationality of the person to be screened with format ISO 3166-1 alpha-2. For example: `ES`. Only applicable for person entity type.
93- document_number (string) - Document number of the person to be screened. Only applicable for person entity type.
94- aml_score_approve_threshold (number) - Score threshold below which hits are auto-approved (0-100). Hits with match scores below this threshold will be marked as approved. Default: 86.
95- aml_score_review_threshold (number) - Score threshold above which hits are auto-declined (0-100). Hits with match scores above this threshold will be declined. Scores between approve and review thresholds require manual review. Default: 100.
96- aml_name_weight (integer) - Weight for name similarity in match score calculation (0-100). The sum of aml_name_weight + aml_dob_weight + aml_country_weight must equal 100. Default: 60.
97- aml_dob_weight (integer) - Weight for date of birth in match score calculation (0-100). The sum of aml_name_weight + aml_dob_weight + aml_country_weight must equal 100. Default: 25.
98- aml_country_weight (integer) - Weight for country/nationality in match score calculation (0-100). The sum of aml_name_weight + aml_dob_weight + aml_country_weight must equal 100. Default: 15.
99- aml_match_score_threshold (integer) - Match score threshold (0-100) that determines if a hit is a False Positive or Unreviewed (Possible Match). Hits with match_score below this are marked as 'False Positive' and excluded from risk assessment. Hits at or above are 'Unreviewed' (Possible Match). Default: 93.
100- include_adverse_media (boolean) - Wheter to include adverse media in the screening. If included, the request will take approximately 10 seconds.
101- include_ongoing_monitoring (boolean) - Whether to include ongoing monitoring in the screening. If included, the save_api_request must be included as well, otherwise it will raise an error.
102- save_api_request (boolean) - Whether to save this API request. If true, then it will appear on the `Manual Checks` section in the Business Console.
103- vendor_data (string) - A unique identifier for the vendor or user, such as a UUID or email. This field enables proper session tracking and user data aggregation across multiple verification sessions.
104 
105```bash
106curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
107 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
108 -H "Content-Type: application/json" \
109 -d '{"api":"didit","path":"/v3/aml","body":{"full_name":"John Doe"}}'
110```
111 
112### Check Email Code (free)
113Verify a code sent to an email address.
114 
115Parameters:
116- email* (string) - Email address to verify
117- code* (string) - Verification code (4-8 characters)
118- duplicated_email_action (string) - Action for duplicated emails: NO_ACTION (default) or DECLINE
119- breached_email_action (string) - Action for breached emails: NO_ACTION (default) or DECLINE
120- disposable_email_action (string) - Action for disposable emails: NO_ACTION (default) or DECLINE
121- undeliverable_email_action (string) - Action for undeliverable emails: NO_ACTION (default) or DECLINE
122 
123```bash
124curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
125 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
126 -H "Content-Type: application/json" \
127 -d '{"api":"didit","path":"/v3/email/check","body":{"email":"[email protected]","code":"123456"}}'
128```
129 
130### Database Validation API
131Validate user-provided identity data against authoritative national and global data sources.
132 
133Parameters:
134- issuing_state* (string) - ISO 3166-1 alpha-3 country code. Valid: ARG, BOL, BRA, CHL, COL, CRI, DOM, ECU, ESP, GTM, HND, MEX, PAN, PER, PRY, SLV, URY, VEN
135- validation_type* (string) - Validation type: one_by_one or two_by_two
136- identification_number* (string) - Universal ID field - auto-maps to country-specific format
137- document_type (string) - Document type: P (Passport), DL (Driver License), ID (National ID), RP (Residence Permit). Required for some countries.
138- expiration_date (string) - Document expiration date YYYY-MM-DD. Required for some countries (e.g. ESP).
139- first_name (string) - First name
140- last_name (string) - Last name
141- date_of_birth (string) - Date of birth YYYY-MM-DD
142- nationality (string) - ISO 3166-1 alpha-3 nationality code
143- address (string) - Residential address
144 
145```bash
146curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
147 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
148 -H "Content-Type: application/json" \
149 -d '{"api":"didit","path":"/v3/database-validation","body":{"issuing_state":"ESP","validation_type":"one_by_one","identification_number":"12345678A"}}'
150```
151 
152## Use Cases
153 
1541. **User Registration**: Verify phone/email during signup
1552. **Two-Factor Authentication**: Add OTP verification to login flows
1563. **KYC Compliance**: Validate identity data for financial services
1574. **AML Compliance**: Screen customers against sanctions and watchlists
158 
159## Discover More
160 
161For full endpoint details and parameters:
162 
163```bash
164curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
165 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
166 -H "Content-Type: application/json" \
167 -d '{"prompt":"didit API endpoints"}' List all endpoints
168curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details \
169 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
170 -H "Content-Type: application/json" \
171 -d '{"api":"didit","path":"/v3/email/send"}' # Get endpoint details
172```
173 

Discussion

Alternatives

Also in Services & APIs
Context7Pulls up-to-date, version-specific library docs and code examples into the prompt so the AI stops inventing old APIs.Coding · MITAdaptyv Bio Foundry APIHow to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.Science · MIT.NET Backend Development PatternsMaster C#/.NET backend development patterns for building robust APIs, MCP servers, and enterprise applications. Covers async/await, dependency injection, Entity Framework Core, Dapper, configuration, caching, and testing with xUnit. Use when developing .NET backends, reviewing C# code, or designing API architectures.Coding · MITAdd AI protectionProtect AI chat and completion endpoints from abuse — detect prompt injection and jailbreak attempts, block PII and sensitive info from leaking in responses, and enforce token budget rate limits to control costs. Use this skill when the user is building or securing any endpoint that processes user prompts with an LLM, even if they describe it as "preventing jailbreaks," "stopping prompt attacks," "blocking sensitive data," or "controlling AI API costs" rather than naming specific protections.Coding · CC0-1.0