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_criminal_face_screening" \
  -F "consent=true" \
  -F "selfie=@./selfie.jpg"
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "ZAF",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "zaf_criminal_face_screening",
      "service_name": "South Africa - Criminal Screening by Face",
      "source_data": {
        "criminal_matches": "sample_value",
        "face_quality": "sample_value",
        "request_id": "SAMPLE-12345"
      },
      "validation": {
        "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.

Screens a facial image against published criminal-record datasets to surface potential matches. 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:
  • Country: South Africa
  • Service ID: zaf_criminal_face_screening
  • Data domain: Criminal
  • Category: Criminal

Inputs

FieldRequiredExample
selfieYes@./selfie.jpg
score_levelNosample_value
max_matchesNosample_value
  • Required inputs: selfie
  • Optional inputs: score_level, max_matches
  • Consent: Required
  • Workflow availability: Available in workflow
  • Coverage:
  • Price: $0.50 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_criminal_face_screening
Explicit end-user consent for this service.Example: true
selfie
string
required
selfie value required by this database service.Example: @./selfie.jpg
score_level
string
score_level value required by this database service.Example: sample_value
max_matches
string
max_matches value required by this database service.Example: sample_value

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_criminal_face_screening" \
  -F "consent=true" \
  -F "selfie=@./selfie.jpg"
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "ZAF",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "zaf_criminal_face_screening",
      "service_name": "South Africa - Criminal Screening by Face",
      "source_data": {
        "criminal_matches": "sample_value",
        "face_quality": "sample_value",
        "request_id": "SAMPLE-12345"
      },
      "validation": {
        "identification_number": "full_match"
      }
    }
  ]
}

Returned data

The exact fields surfaced in source_data depend on what the registry returns. The generated example for zaf_criminal_face_screening currently documents this normalized shape:
  • criminal_matches
  • face_quality
  • request_id

Pricing & SLAs

South Africa - Criminal Screening by Face queries are billed only when Didit receives a conclusive result from the validation source.
  • Per-call price: $0.50 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