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=PAN" \
  -F "personal_number=8-944-2025" \
  -F "selfie=@./selfie.jpg" \
  -F "first_name=John" \
  -F "last_name=Smith" \
  -F "services=pan_cedula_sib"
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "PAN",
  "match_type": "full_match",
  "validations": [
    {
      "service_id": "pan_cedula_sib",
      "outcome_code": "MATCH",
      "validation": {
        "personal_number": "full_match",
        "first_name": "full_match",
        "last_name": "full_match"
      },
      "source_data": {
        "personal_number": "8-944-2025"
      }
    }
  ]
}

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.

The pan_cedula_sib service verifies a Cédula de Identidad Personal against the Tribunal Electoral SIB — Panama’s authoritative Servicio de Identificación Biométrica operated by the Tribunal Electoral. Each call performs a face-match between the live selfie and the photo on file at the registry, returning the holder’s full record on success. This is a biometric Database Validation: a selfie field is required and the registry runs a face-match against the official photo on file. Inside a session we re-use the liveness selfie automatically; outside a session you supply the JPEG/PNG yourself. For higher-risk financial products see Panama SIB Plus — same data source, stronger biometric thresholds, $1.50/call.

What you need

FieldRequiredNotes
personal_numberYesCédula panameña
selfieYesJPEG / PNG / WebP, max 2MB. Inside a session flow we re-use the liveness selfie automatically.
first_nameOptionalCross-checked against the registry name.
last_nameOptionalCross-checked against the registry name.
date_of_birthOptionalISO YYYY-MM-DD. Cross-checked against the registry record.
Format rule: Native cédulas use the format 8-944-2025 (digits separated by hyphens). PE-prefixed (e.g. PE-8-14) and E-prefixed residence Cédulas are accepted. Letters are case-insensitive.

How to call it

curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=PAN" \
  -F "personal_number=8-944-2025" \
  -F "selfie=@./selfie.jpg" \
  -F "first_name=John" \
  -F "last_name=Smith" \
  -F "services=pan_cedula_sib"
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "PAN",
  "match_type": "full_match",
  "validations": [
    {
      "service_id": "pan_cedula_sib",
      "outcome_code": "MATCH",
      "validation": {
        "personal_number": "full_match",
        "first_name": "full_match",
        "last_name": "full_match"
      },
      "source_data": {
        "personal_number": "8-944-2025"
      }
    }
  ]
}

Returned data

A successful match returns the registry’s record for the holder. Available fields for Tribunal Electoral:
  • name
  • lastname
  • date_of_birth
  • gender
  • place_of_birth
  • issue_date
  • expiration_date
  • match_score (selfie ↔ photo on file)
The exact fields surfaced in source_data depend on what the registry returns — fields that are absent from the registry record (e.g. an unset expiration_date) are simply omitted.

Outcome codes

When the lookup is rejected, the response carries a numeric code from the registry. The most common values for Tribunal Electoral are:
CodeMeaning
601Operator does not exist in the database
602Citizen is under 12 years old
603Citizen is deceased
604Citizen has an invalid registration
605Citizen not recognized
606Cedula field is empty
607Citizen not found
610General facial validation error
613Invalid image format
614No face detected in the image
615Biometric similarity threshold not reached
Codes 601, 606, 608, 610614 are transient errors (network / image issues) — the session is left in In Review and you can retry with a better selfie. Codes 602, 603, 604, 605, 607 and 615 are definitive — they map to a no_match outcome with a specific reason (MINOR_BLOCKED, DECEASED, DOCUMENT_NOT_FOUND, BIOMETRIC_NO_MATCH, …). See Outcome Codes.

Common use cases

  • Onboarding bancos / financieras supervised by Superintendencia de Bancos de Panamá.
  • Onboarding for entities supervised by Superintendencia del Mercado de Valores (SMV).
  • Crypto and gaming-platform KYC.
  • Telecom SIM activation under ASEP rules.

Pricing & SLAs

The Panamanian Tribunal Electoral SIB performs a biometric face-match between the user’s selfie and the official photo on file at the registry — included in the $0.75 per-call price.
  • Per-call price: $0.75 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 registry.
  • Latency: typical p95 < 1.5 s.
  • Availability: 99.9% per quarter.

Other live database services

Continue reading

Panamanian Superintendencia de Bancos onboarding routinely combines SIB with AML Screening under UAF rules.

Authorizations

x-api-key
string
header
required

Body

multipart/form-data
issuing_state
enum<string>
required

The ISO 3166-1 alpha-3 country code of the issuing state. Determines which validation sources are used.

Available options:
ARG,
BOL,
BRA,
CHL,
COL,
CRI,
DOM,
ECU,
ESP,
GTM,
HND,
MEX,
PAN,
PER,
PRY,
SLV,
URY,
VEN
identification_number
string
required

Universal identification number field. Automatically maps to the correct country-specific field: ARG→document_number (DNI), BOL→document_number (CI), BRA→tax_number (CPF, 11 digits), CHL→personal_number (RUT), COL→personal_number (Cédula), CRI→personal_number (Cédula), DOM→personal_number (Cédula, 11 digits), ECU→personal_number (Cédula, 10 digits), ESP→personal_number (DNI/NIE), GTM→document_number (DPI), HND→document_number (DNI), MEX→personal_number (CURP, 18 chars), PAN→personal_number (Cédula), PER→personal_number (DNI, 8 digits), PRY→document_number (CI), SLV→document_number (DUI), URY→personal_number (CI), VEN→document_number (Cédula).

services
string[]

Optional list of service_ids to run for this country (e.g. ['bra_cpf']). If omitted, every service configured for the issuing_state is queried in waterfall order. Each id must be a service that exists for the given country — see the catalog endpoint /v1/organization/database-validation-countries/. When provided, the response contains the extended services_used, providers_used, and match_score fields.

first_name
string

The individual's first name. Might be required for some countries and matching types.

last_name
string

The individual's last name. Might be required for some countries and matching types.

date_of_birth
string

The individual's date of birth in YYYY-m-d format. Might be required for some countries and matching types. Example: 1990-01-01.

document_type
enum<string>

The type of document being validated. P = Passport, DL = Driver License, ID = National ID, RP = Residence Permit. Optional field that may help with validation in some countries.

Available options:
P,
DL,
ID,
RP
expiration_date
string<date>

The document's expiration date in YYYY-MM-DD format. Required for ESP (Spain) database validation. Example: 2030-01-15.

nationality
string

The individual's nationality, expressed as an ISO 3166-1 alpha-3 country code. Might be required for some countries and matching types.

address
string

The individual's residential address. Used in specific jurisdictions where address validation is supported. Might be required for some countries and matching types.

selfie
file

A selfie image of the individual (JPEG, PNG, or WebP). Required for ARG (Argentina) where biometric face-match is performed via RENAPER, and for PAN (Panama) where biometric validation is performed via SIB (Servicio de Identificación Biométrica). For ARG, the gender field (M/F/X) is also required.

gender
enum<string>

The individual's gender. Required for ARG (Argentina) biometric validation via RENAPER. M = Male, F = Female, X = Non-binary. When used within a verification session flow, gender is automatically extracted from the ID document or inferred from face analysis / given name.

Available options:
M,
F,
X
save_api_request
boolean
default:true

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.

Response