Skip to main content
POST
/
v3
/
database-validation
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=ZAF" \
  -F "services=zaf_africa_national_id" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -F "date_of_birth=1990-01-01" \
  -F "national_id=SAMPLE-NID-12345"
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "ZAF",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "zaf_africa_national_id",
      "service_name": "South Africa National ID (DHA)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}

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.

Verifies input data against the Department of Home Affairs service in South Africa. Didit exposes this service through POST /v3/database-validation/ so you can verify the submitted data against the authoritative source and receive normalized match results.

Coverage

  • Coverage: ~ 100%
  • Country: South Africa
  • Service ID: zaf_africa_national_id
  • Data domain: Identity
  • Category: NationalIDRegistry

Inputs

FieldRequiredExample
first_nameYesJohn
last_nameYesDoe
date_of_birthYes1990-01-01
national_idYesSAMPLE-NID-12345
  • Required inputs: first_name, last_name, date_of_birth, national_id
  • Optional inputs:
  • Consent: Not required
  • Workflow availability: Available in workflow
  • Coverage: ~ 100%
  • Price: $2.95 per successful query

Body parameters

issuing_state
string
required
ISO 3166-1 alpha-3 country code for this database service.Example: ZAF
services
string
required
Array containing this service ID. Pinning the service keeps the request scoped to this exact database.Example: zaf_africa_national_id
first_name
string
required
Given name to validate.Example: John
last_name
string
required
Family name to validate.Example: Doe
date_of_birth
string
required
Date of birth in YYYY-MM-DD format.Example: 1990-01-01
national_id
string
required
National identity number for this service.Example: SAMPLE-NID-12345

Input rules & validation notes

  • Send the fields listed above exactly as captured from the user or document.
  • Didit validates required fields before calling the database. Requests rejected before source lookup are not charged.

How to call it

curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=ZAF" \
  -F "services=zaf_africa_national_id" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -F "date_of_birth=1990-01-01" \
  -F "national_id=SAMPLE-NID-12345"
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "ZAF",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "zaf_africa_national_id",
      "service_name": "South Africa National ID (DHA)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}

Returned data

The exact fields surfaced in source_data depend on what the registry returns. The generated example for zaf_africa_national_id currently documents this normalized shape:
  • date_of_birth
  • first_name
  • identification_number
  • last_name

Pricing & SLAs

South Africa National ID (DHA) queries are billed only when Didit receives a conclusive result from the validation source.
  • Per-call price: $2.95 USD.
  • Billing: per successful query. You are not charged when the registry is unreachable, when required fields are missing, or when the request is rejected before reaching the source.
  • Latency: typical p95 < 2 s.
  • Availability: 99.9% per quarter on Didit’s side; downstream source availability varies by country and dataset.

Continue reading