> ## 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.

# API de verificación de licencia de conducir de Sudáfrica

> Verifica licencias de conducir de Sudáfrica con Didit en la base de datos oficial. Pago por consulta desde $0.80, sin contratos ni mínimos.

Verifica una licencia de conducir sudafricana con el registro NATIS / Department of Transport. Didit ofrece este servicio a través de `POST /v3/database-validation/` para que puedas verificar los datos enviados con la fuente oficial y recibir resultados de coincidencia normalizados.

## Cobertura

* **Cobertura:** —
* **País:** Sudáfrica
* **ID del servicio:** `zaf_drivers_license`
* **Dominio de datos:** Identidad
* **Categoría:** DriverLicence

## Entradas

| Campo | Obligatorio | Ejemplo |
| - | -: | - |
| `national_id` | Sí | `SAMPLE-NID-12345` |
| `last_name` | Sí | `Doe` |
| `initials` | Sí | `JD` |
| `licence_number` | Sí | `LIC123456` |
| `first_name` | No | `John` |
| `date_of_birth` | No | `1990-01-01` |
| `vendor_data` | No | `user-1234` |

* **Entradas obligatorias:** `national_id`, `last_name`, `initials`, `licence_number`
* **Entradas opcionales:** `first_name`, `date_of_birth`, `vendor_data`
* **Consentimiento:** No es necesario
* **Disponibilidad en flujos:** Disponible en workflows con mapeo de campos
* **Cobertura:** —
* **Precio:** \$0.80 por consulta exitosa

En un flujo, `initials` y `licence_number` no aparecen impresos en un documento de identidad, así que ningún paso los genera por sí solo. Obtenlos de una respuesta de un cuestionario, de un campo de extracción de Document AI o de un valor que envíes al crear la sesión, y mapea cada uno en el paso de Validación de base de datos. Mientras no estén mapeados, el editor de flujos muestra este servicio desactivado e indica la entrada que falta; en tiempo de ejecución, si falta una entrada, la comprobación se omite antes de realizar cualquier consulta, por lo que nunca se te factura por una base de datos que no se pudo consultar.

## Parámetros del cuerpo

**issuing\_state** `string` *required* (default: ZAF)

Código de país ISO 3166-1 alfa-3 para este servicio de base de datos.

Ejemplo: `ZAF`

**services** `string` *required* (default: zaf\_drivers\_license)

Array que contiene el ID de este servicio. Fijar el servicio limita la solicitud a esta base de datos concreta.

Ejemplo: `zaf_drivers_license`

**national\_id** `string` *required* (default: SAMPLE-NID-12345)

Número de identidad nacional para este servicio.

Ejemplo: `SAMPLE-NID-12345`

**last\_name** `string` *required* (default: Doe)

Apellido que se va a validar.

Ejemplo: `Doe`

**initials** `string` *required* (default: JD)

Valor de `initials` que requiere este servicio de base de datos.

Ejemplo: `JD`

**licence\_number** `string` *required* (default: LIC123456)

Valor de `licence_number` que requiere este servicio de base de datos.

Ejemplo: `LIC123456`

**first\_name** `string`

Nombre de pila que se va a validar.

Ejemplo: `John`

**date\_of\_birth** `string`

Fecha de nacimiento en formato `YYYY-MM-DD`.

Ejemplo: `1990-01-01`

**vendor\_data** `string` (default: user-1234)

Tu referencia estable de usuario para esta persona, como tu ID de usuario interno. Didit la usa para vincular comprobaciones independientes al mismo usuario final y reducir el ruido en la detección de duplicados.

Ejemplo: `user-1234`

## Reglas de entrada y notas de validación

* Envía los campos indicados arriba exactamente como se obtuvieron del usuario o del documento.
* Didit valida los campos obligatorios antes de consultar la base de datos. Las solicitudes rechazadas antes de consultar la fuente no se cobran.

## Cómo invocarlo

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=ZAF" \
  -F "services=zaf_drivers_license" \
  -F "vendor_data=user-1234" \
  -F "national_id=SAMPLE-NID-12345" \
  -F "last_name=Doe" \
  -F "initials=JD" \
  -F "licence_number=LIC123456"
```

Toda llamada exitosa devuelve HTTP `200`. El campo **`outcome_code`** te indica qué ocurrió realmente; por ejemplo, distingue una discrepancia biométrica real (`BIOMETRIC_NO_MATCH`) de una selfie que no se pudo leer (`BIOMETRIC_IMAGE_UNUSABLE`). El `status` que se muestra es el estado predeterminado de la función; tus [acciones de Partial Match / No Match](https://docs.didit.me/es/core-technology/database-validation/database-validation-warnings.md) configuradas pueden anularlo.

**`MATCH`**: el registro devolvió un registro de licencia para este número de licencia y los datos enviados coincidieron con él.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "ZAF",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "zaf_drivers_license",
      "service_name": "South Africa - Driving License Verification",
      "source_data": {
        "expiration_date": "2030-05-31",
        "first_name": "John",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "vehicle_codes": "EB"
      },
      "validation": {
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`NO_MATCH`**: el registro buscó la licencia e indicó que no es válida. Se aplica tu acción de no coincidencia.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "ZAF",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "zaf_drivers_license",
      "service_name": "South Africa - Driving License Verification",
      "source_data": {
        "licence_valid": false
      },
      "validation": {}
    }
  ]
}
```

**`INCONCLUSIVE`**: el registro aceptó la consulta, pero no devolvió ningún registro de licencia con el que comparar los datos enviados, por lo que no se confirma nada sobre la licencia y la comprobación se envía a revisión, también cuando otro servicio de la misma solicitud encontró una coincidencia con la persona.

```json 200 OK — INCONCLUSIVE theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "ZAF",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "INCONCLUSIVE",
      "service_id": "zaf_drivers_license",
      "service_name": "South Africa - Driving License Verification",
      "source_data": {
        "licence_valid": true
      },
      "validation": {}
    }
  ]
}
```

## Datos devueltos

Los campos exactos que aparecen en `source_data` dependen de lo que devuelva el registro. El ejemplo generado para `zaf_drivers_license` documenta actualmente esta estructura normalizada:

* `expiration_date`
* `first_name`
* `identification_number`
* `last_name`
* `licence_valid`
* `vehicle_codes`

## Precios y SLA

Las consultas de Sudáfrica - Verificación de licencia de conducir solo se facturan cuando Didit recibe un resultado concluyente de la fuente de validación.

* **Precio por llamada:** \$0.80 USD.
* **Facturación:** por consulta exitosa. No se te cobra cuando no se puede acceder al registro, cuando faltan campos obligatorios o cuando la solicitud se rechaza antes de llegar a la fuente.
* **Latencia:** p95 típico \< 2 s.
* **Disponibilidad:** 99.9% por trimestre por parte de Didit; la disponibilidad de la fuente externa varía según el país y el conjunto de datos.

## Qué significa cada resultado

Esta comprobación consulta al registro de permisos de conducir el número de permiso que envías, junto con el número de identidad sudafricano, el apellido y las iniciales. El resultado depende de lo que devuelva el registro:

* **`MATCH`** - el registro devolvió un expediente de permiso para este número de permiso, y los datos que enviaste coincidieron con él. `source_data` contiene el expediente: `identification_number` (el número de permiso), `first_name` y `last_name`, `vehicle_codes` (las clases del permiso, p. ej., `EB`, `C1`) y `expiration_date` (la fecha de caducidad de la tarjeta del permiso).
* **`INCONCLUSIVE`** - el registro aceptó la consulta pero no devolvió ningún expediente de permiso, por lo que no había nada con qué comparar los datos enviados. `source_data.licence_valid` es `true`, `validation` está vacío y `match_type` es `null`. No se confirma nada sobre el permiso, por lo que la comprobación se envía a revisión, también cuando otro servicio de la misma solicitud, como la comprobación del documento nacional de identidad, encontró coincidencia con la persona, porque eso confirma a la persona y no el permiso.
* **`NO_MATCH`** - el registro buscó el permiso y lo notificó como no válido (`source_data.licence_valid: false`). Se aplica tu acción para los casos sin coincidencia.
* **`REGISTRY_ERROR`** - el registro no realizó la búsqueda, por lo que no se estableció nada sobre el permiso. La comprobación se envía a revisión y no se factura.

**Lo que nunca se devuelve.** No hay ningún campo de suspensión, cancelación, retirada, anotación ni puntos de penalización, por lo que ni siquiera un `MATCH` debe comunicarse a tus usuarios como "el permiso es válido y está en regla". `expiration_date`, cuando el registro lo devuelve, es el único dato relacionado con la vigencia que obtienes: compáralo con la fecha de la sesión para decidir si el permiso ha caducado, y trátalo como una regla propia y no como parte del resultado de la coincidencia.

Si necesitas indicarlo en los términos y condiciones, redáctalo así: Didit comprueba los datos del permiso con el registro nacional y, cuando el registro devuelve un expediente de permiso, sus clases y su fecha de caducidad, pero no confirma que el titular esté habilitado para conducir hoy.

## Sigue leyendo

* [Descripción general de la validación de bases de datos de Sudáfrica](https://docs.didit.me/api-reference/database-validation/south-africa.md)
* [Descripción general de la validación de bases de datos](https://docs.didit.me/es/core-technology/database-validation/overview.md)
* [Códigos de resultado](https://docs.didit.me/es/core-technology/database-validation/database-validation-outcome-codes.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.