didit-database-validation

Integrate Didit Database Validation API to verify personal data against government databases. Use when the user wants to validate identity against government records, verify national ID numbers, check CPF/CURP/DNI/cedula numbers, perform identity database lookups, validate identity documents against official sources, or implement database verification for Latin American or Spanish identity documents using Didit. Supports 18 countries with 1x1 and 2x2 matching methods.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "didit-database-validation" with this command: npx skills add rosasalberto/didit-database-validation

Didit Database Validation API

Overview

Verifies personal data and identity documents against trusted government and financial databases. Prevents synthetic identity fraud and ensures identity authenticity.

Key constraints:

  • Requires at least the national ID/document number for the target country
  • Coverage: 18 countries (primarily Latin America + Spain)
  • Results: full_match, partial_match, or no_match
  • Only charged per successful query — no charge if insufficient data

Matching methods:

MethodDescriptionStarting Price
1x1Single data source validation$0.05
2x2Two data sources cross-validation$0.30

API Reference: https://docs.didit.me/standalone-apis/database-validation Feature Guide: https://docs.didit.me/core-technology/database-validation/overview Supported Countries: https://docs.didit.me/core-technology/database-validation/database-validation-supported-countries


Authentication

All requests require x-api-key header. Get your key from Didit Business Console → API & Webhooks, or via programmatic registration (see below).

Getting Started (No Account Yet?)

If you don't have a Didit API key, create one in 2 API calls:

  1. Register: POST https://apx.didit.me/auth/v2/programmatic/register/ with {"email": "you@gmail.com", "password": "MyStr0ng!Pass"}
  2. Check email for a 6-character OTP code
  3. Verify: POST https://apx.didit.me/auth/v2/programmatic/verify-email/ with {"email": "you@gmail.com", "code": "A3K9F2"} → response includes api_key

To add credits: GET /v3/billing/balance/ to check, POST /v3/billing/top-up/ with {"amount_in_dollars": 50} for a Stripe checkout link.

See the didit-verification-management skill for full platform management (workflows, sessions, users, billing).


Endpoint

POST https://verification.didit.me/v3/database-validation/

Headers

HeaderValueRequired
x-api-keyYour API keyYes
Content-Typeapplication/jsonYes

Body (JSON)

ParameterTypeRequiredDescription
id_numberstringYesUniversal ID number — auto-maps to correct country field
first_namestringNoFirst name for matching
last_namestringNoLast name for matching
date_of_birthstringNoDOB in YYYY-MM-DD (required for some countries)
issuing_statestringNoISO 3166-1 alpha-3 country code
save_api_requestbooleanNoSave in Business Console
vendor_datastringNoYour identifier for session tracking

The id_number field auto-maps to the correct country-specific field:

CountryMapped FieldDocumentFormat
ARGdocument_numberDNI
BOLdocument_numberCI
BRAtax_numberCPF11 digits
CHLpersonal_numberRUT
COLpersonal_numberCedula
CRIpersonal_numberCedula
DOMpersonal_numberCedula11 digits
ECUpersonal_numberCedula10 digits
ESPpersonal_numberDNI/NIE
GTMdocument_numberDPI
HNDdocument_numberDNI
MEXpersonal_numberCURP18 chars
PANdocument_numberCedula
PERpersonal_numberDNI8 digits
PRYdocument_numberCI
SLVdocument_numberDUI
URYpersonal_numberCI
VENdocument_numberCedula

Example

import requests

response = requests.post(
    "https://verification.didit.me/v3/database-validation/",
    headers={"x-api-key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json={
        "id_number": "12345678",
        "first_name": "Carlos",
        "last_name": "Garcia",
        "issuing_state": "PER",
    },
)
print(response.json())
const response = await fetch("https://verification.didit.me/v3/database-validation/", {
  method: "POST",
  headers: { "x-api-key": "YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    id_number: "12345678",
    first_name: "Carlos",
    last_name: "Garcia",
    issuing_state: "PER",
  }),
});

Response (200 OK)

{
  "request_id": "a1b2c3d4-...",
  "database_validation": {
    "status": "Approved",
    "match_type": "full_match",
    "issuing_state": "PER",
    "validation_type": "1x1",
    "screened_data": {
      "personal_number": "12345678",
      "first_name": "Carlos",
      "last_name": "Garcia"
    },
    "validations": {
      "full_name": "full_match",
      "identification_number": "full_match"
    }
  }
}

Status Values & Handling

StatusMeaningAction
"Approved"Full match against government recordsIdentity confirmed
"Declined"No match foundIdentity could not be verified
"In Review"Partial match or insufficient dataReview screened_data and validations

Error Responses

CodeMeaningAction
400Invalid requestCheck ID number format for target country
401Invalid API keyVerify x-api-key header
403Insufficient creditsTop up at business.didit.me

Matching Logic

Name Matching

ResultCriteria
Full MatchFull name concatenation at 85% similarity (Levenshtein), OR First + Last both full match
Partial MatchAny single name component full match
No MatchNo component reaches 70% similarity

Individual name components use 70% Levenshtein threshold. Example: "Christophel" vs "Christopher" = Full Match; "Chris" vs "Christopher" = No Match.

1x1 Decision

Match TypeNameID Number
full_matchFull MatchFull Match
partial_matchPartial MatchFull Match
no_matchAll other combinations

2x2 Decision

Requires matching against 2 independent data sources:

Match TypeCondition
full_matchBoth sources confirm name + ID
partial_matchOne source confirms
no_matchNeither source confirms

DOB and ID number matching is exact only — no fuzzy matching.


Warning Tags

TagDescription
COULD_NOT_PERFORM_DATABASE_VALIDATIONMissing required data — provide ID number, name, and country
DATABASE_VALIDATION_PARTIAL_MATCHPartial match found — requires investigation
DATABASE_VALIDATION_NO_MATCHNo match found in government records

When COULD_NOT_PERFORM_DATABASE_VALIDATION fires, session goes to "In Review". Validation auto-retriggers once missing data is provided.


Supported Countries

CountryMethodCoverageRequired Input
Argentina1x195%Document number
Bolivia1x195%Document number + DOB
Brazil1x195%Tax number (CPF)
Chile1x195%Personal number (RUT)
Colombia1x195%Document number + type
Costa Rica1x195%Personal number
Dominican Republic1x195%Personal number
Ecuador1x1 / 2x290-96%Personal number
El Salvador1x195%Document number + DOB
Guatemala1x195%Document number
Honduras1x195%Document number
Mexico1x195%Personal number (CURP)
Panama1x195%Document number + DOB
Paraguay1x195%Document number
Peru1x1 / 2x295-99%Personal number
Spain1x195%Personal number + doc type + expiry
Uruguay1x195%Personal number + DOB
Venezuela1x195%Document number

Utility Scripts

validate_database.py: Validate identity against government databases from the command line.

# Requires: pip install requests
export DIDIT_API_KEY="your_api_key"
python scripts/validate_database.py --id-number 12345678 --country PER --first-name Carlos --last-name Garcia
python scripts/validate_database.py --id-number GARC850315HDFRRL09 --country MEX

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Ai Competitor Analyzer

提供AI驱动的竞争对手分析,支持批量自动处理,提升企业和专业团队分析效率与专业度。

Registry SourceRecently Updated
General

Ai Data Visualization

提供自动化AI分析与多格式批量处理,显著提升数据可视化效率,节省成本,适用企业和个人用户。

Registry SourceRecently Updated
General

Ai Cost Optimizer

提供基于预算和任务需求的AI模型成本优化方案,计算节省并指导OpenClaw配置与模型切换策略。

Registry SourceRecently Updated