Skip to main content

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.

Didit’s Database Validation API cross-references each user’s identity data against the authoritative source for that country — RENAPER (Argentina, $0.20), Receita Federal (Brazil, $0.20), Tribunal Electoral (Panama, $0.75 with biometric face-match), Junta Central Electoral (Dominican Republic, $0.05) and 14 more — billed per successful query, no monthly minimums. This page documents the JSON response shape so you can parse match outcomes, source-registry data, and biometric scores returned by each registry.
Didit database validation report showing match types and registry response fields

Report structure

The validation report is returned as a JSON object containing a database_validation object with the following key sections:
  • status: The overall outcome of the validation check (Approved, Declined, or In Review).
  • match_type: The overall match result, indicating the level of confidence in the user’s identity (full_match, partial_match, or no_match).
  • issuing_state: The country where the validation was performed, represented by its three-letter ISO code.
  • validation_type: The specific method used for validation, such as 1x1 or 2x2 matching.
  • screened_data: The user-provided data that was used for the validation check.
  • validations: An object containing the detailed results from each checked data point. Each entry includes an outcome_code that classifies the result (for example MATCH, NO_MATCH, DOCUMENT_NOT_FOUND, BIOMETRIC_IMAGE_UNUSABLE, REGISTRY_UNAVAILABLE) and, where available, an outcome_detail with the country-specific reason. See Database Validation Outcome Codes for the full list and recommended handling.

Core response fields

interface DatabaseValidationReport {
  database_validation: {
    status: "Approved" | "Declined" | "In Review";
    match_type: "full_match" | "partial_match" | "no_match";
    issuing_state: string;
    validation_type: "1x1" | "2x2";
    screened_data: {
      tax_number?: string;
      personal_number?: string;
      document_number?: string;
      first_name?: string;
      last_name?: string;
      date_of_birth?: string;
      selfie?: string;
      gender?: string;
    };
    validations: Array<{
      // Catalog metadata — identifies which service produced this match.
      service_id: string;          // e.g. "pan_cedula_sib_plus"
      service_name: string;        // e.g. "Panama - Cédula with biometric face-match (SIB Plus, elevated tier)"
      // Per-field validation outcome
      validation: {
        full_name?: "full_match" | "partial_match" | "no_match";
        date_of_birth?: "full_match" | "partial_match" | "no_match";
        identification_number?: "full_match" | "partial_match" | "no_match";
      };
      // Standard outcome code + optional country-specific detail
      outcome_code?: string;       // "MATCH", "NO_MATCH", "DOCUMENT_NOT_FOUND", …
      outcome_detail?: string;
      // Cleaned, normalised view of the registry record. Validators lift
      // the citizen profile (full_name, gender, dates, photo, signature, …)
      // returned by the database validation source
      // into this single block using canonical field names. Image fields
      // (`photo`, `signature`) are pre-signed S3 URLs that expire.
      source_data?: {
        identification_number?: string;
        first_name?: string;
        last_name?: string;
        full_name?: string;
        date_of_birth?: string;
        place_of_birth?: string;
        gender?: string;
        nationality?: string;
        issue_date?: string;
        expiration_date?: string;
        photo?: string;            // pre-signed JPEG URL
        signature?: string;        // pre-signed JPEG URL
        face_match_score?: number; // biometric services only
      };
    }>;
  };
}
For biometric database validation (Argentina, Panama), the screened_data includes a selfie field (path to the image used) and, for Argentina, a gender field. The source_data in the response includes a face_match_score indicating the biometric similarity score from the government registry.

Sample response — Brazil CPF (Receita Federal, $0.20)

{
  "database_validation": {
    "status": "Approved",
    "match_type": "full_match",
    "issuing_state": "BRA",
    "validation_type": "1x1",
    "screened_data": {
      "tax_number": "SAMPLE-TAX-12345",
      "first_name": "John",
      "last_name": "Doe",
      "date_of_birth": "1990-01-01"
    },
    "validations": [
      {
        "service_id": "bra_cpf",
        "service_name": "Brazil - CPF status check",
        "outcome_code": "MATCH",
        "validation": {
          "full_name": "John Doe",
          "date_of_birth": "full_match",
          "identification_number": "full_match"
        },
        "source_data": {
          "identification_number": "SAMPLE-ID-12345",
          "first_name": "John",
          "last_name": "Doe",
          "date_of_birth": "1990-01-01"
        }
      }
    ]
  }
}

Sample response — Argentina DNI biometric (RENAPER, $0.20)

For Argentina, the validation uses RENAPER biometric face-match. The response includes a face_match_score in the source_data and additional identity fields returned by the government registry.
{
  "database_validation": {
    "status": "Approved",
    "match_type": "full_match",
    "issuing_state": "ARG",
    "validation_type": "1x1",
    "screened_data": {
      "document_number": "SAMPLE-DOC-12345",
      "selfie": "faces/session-id/selfie.jpg",
      "gender": "M",
      "first_name": "John",
      "last_name": "Doe"
    },
    "validations": [
      {
        "service_id": "arg_renaper",
        "service_name": "Argentina - DNI verification (RENAPER)",
        "outcome_code": "MATCH",
        "validation": {
          "full_name": "John Doe",
          "identification_number": "full_match"
        },
        "source_data": {
          "identification_number": "SAMPLE-ID-12345",
          "first_name": "John",
          "last_name": "Doe",
          "full_name": "John Doe",
          "date_of_birth": "1990-01-01",
          "tax_id": "20000000019",
          "tax_id_type": "CUIT",
          "face_match_score": "97"
        }
      }
    ],
    "warnings": []
  }
}
For more information about potential warnings during the Database Validation process, check our Database Validation Warnings guide.

See also

  • Database Validation overview — how the API works end-to-end, supported registries, pricing from $0.05/check.
  • Matching Methods — how 1×1 / 2×2 outcomes are derived from per-service matches against RENAPER, Receita Federal, RENAPO and other registries.
  • Outcome Codes — full list of provider response codes (deceased, minor, document not found, biometric mismatch).
  • Warnings — what we surface when a service can’t run.
  • Supported Countries & Services — every live registry, required fields and per-call price.