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

# Brasilien CNH-QR-Code + Gesichtsabgleich (Datavalid) API

> Brasilien-Datenbankabfrage über Didit: CNH-QR-Code + Gesichtsabgleich bei Datavalid. Pay-per-Call ab $0.62, ohne Verträge oder Mindestabnahme.

SERPRO Datavalid v4 pf-facial-qrcode liest den QR-Code aus, der auf brasilianischen CNH-Fahrerlaubnissen aufgedruckt ist (physisch oder digital, seit Mai 2017 ausgestellt). Er validiert CPF, Name und Geburtsdatum gegen Receita Federal und gleicht das Live-Selfie mit dem CNH-Porträt ab, das bei Senatran gespeichert ist. Didit stellt diesen Service über `POST /v3/database-validation/` bereit, damit Sie die übermittelten Daten mit der maßgeblichen Quelle abgleichen und normalisierte Übereinstimmungsergebnisse erhalten. Eingabeformat: `tax_number` erwartet die brasilianische CPF (genau 11 Ziffern).

## Abdeckung

* **Abdeckung:** —
* **Land:** Brasilien
* **Service-ID:** `bra_cnh_facial_qrcode`
* **Datenbereich:** Biometrisch
* **Kategorie:** DriverLicence

## Eingaben

| Feld | Erforderlich | Beispiel |
| - | -: | - |
| `tax_number` | Ja | `11111111111` |
| `selfie` | Ja | `@./selfie.jpg` |
| `cnh_qr_code_image` | Ja | `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB` |
| `first_name` | Nein | `John` |
| `last_name` | Nein | `Doe` |
| `date_of_birth` | Nein | `1990-01-01` |
| `vendor_data` | Nein | `user-1234` |

* **Pflichteingaben:** `tax_number`, `selfie`, `cnh_qr_code_image`
* **Optionale Eingaben:** `first_name`, `last_name`, `date_of_birth`, `vendor_data`
* **Einwilligung:** Erforderlich
* **Verfügbarkeit im Workflow:** Im Workflow verfügbar
* **Abdeckung:** —
* **Preis:** \$0.62 pro erfolgreiche Abfrage

## Body-Parameter

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

ISO-3166-1-Alpha-3-Ländercode für diesen Datenbankservice.

Beispiel: `BRA`

**services** `string` *required* (default: bra\_cnh\_facial\_qrcode)

Array mit dieser Service-ID. Das Festlegen des Services begrenzt die Anfrage auf genau diese Datenbank.

Beispiel: `bra_cnh_facial_qrcode`

**consent** `boolean` *required* (default: true)

Ausdrückliche Einwilligung des Endbenutzers für diesen Service.

Beispiel: `true`

**tax\_number** `string` *required* (default: 11111111111)

Steuernummer oder steuerliche Identifikationsnummer.

Beispiel: `11111111111`

**selfie** `file` *required*

Selfie-Bilddatei, die für die biometrische Datenbankvalidierung hochgeladen wird. Akzeptierte Formate: JPEG, PNG oder WebP.

Beispiel: `@./selfie.jpg`

**cnh\_qr\_code\_image** `string` *required* (default: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB)

Wert `cnh_qr_code_image`, der von diesem Datenbankservice benötigt wird.

Beispiel: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB`

**first\_name** `string`

Zu validierender Vorname.

Beispiel: `John`

**last\_name** `string`

Zu validierender Nachname.

Beispiel: `Doe`

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

Geburtsdatum im Format `YYYY-MM-DD`.

Beispiel: `1990-01-01`

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

Ihre stabile Benutzerreferenz für diese Person, etwa Ihre interne Benutzer-ID. Didit verwendet sie, um eigenständige Prüfungen derselben Endbenutzerin bzw. demselben Endbenutzer zuzuordnen und unnötige Duplikatmeldungen zu verringern.

Beispiel: `user-1234`

## Eingaberegeln und Hinweise zur Validierung

* Brasilianische CPF (genau 11 Ziffern)
* `tax_number` darf nur Ziffern enthalten; entfernen Sie Leerzeichen, Bindestriche und Satzzeichen, bevor Sie die Anfrage senden.
* `tax_number` muss genau 11 Zeichen lang sein.

## So rufen Sie es auf

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=BRA" \
  -F "services=bra_cnh_facial_qrcode" \
  -F "vendor_data=user-1234" \
  -F "consent=true" \
  -F "tax_number=11111111111" \
  -F "selfie=@./selfie.jpg" \
  -F "cnh_qr_code_image=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB"
```

Jeder erfolgreiche Aufruf liefert HTTP `200` zurück. Das Feld **`outcome_code`** zeigt, was tatsächlich passiert ist. Es unterscheidet zum Beispiel eine echte biometrische Nichtübereinstimmung (`BIOMETRIC_NO_MATCH`) von einem Selfie, das nicht gelesen werden konnte (`BIOMETRIC_IMAGE_UNUSABLE`). Der angezeigte `status` ist der Standardfunktionsstatus; Ihre konfigurierten [Aktionen bei Teilübereinstimmung / keiner Übereinstimmung](https://docs.didit.me/de/core-technology/database-validation/database-validation-warnings.md) können ihn überschreiben.

**`MATCH`**: Das Register hat die Identität bestätigt, und alle geprüften Felder stimmten überein.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "BRA",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "bra_cnh_facial_qrcode",
      "service_name": "Brazil - CNH QR code + face match (Datavalid)",
      "source_data": {
        "cnh_qrcode": "sample_value",
        "date_of_birth": "1990-01-01",
        "face_match_probability": "Altíssima probabilidade",
        "face_match_score": "0.990",
        "first_name": "John",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "name_match_score": "1.000",
        "verifications": {
          "identification_number": true
        }
      },
      "validation": {
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`NO_MATCH`**: Das Register hat für die übermittelten Daten keine Übereinstimmung zurückgegeben.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "BRA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "bra_cnh_facial_qrcode",
      "service_name": "Brazil - CNH QR code + face match (Datavalid)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

**`BIOMETRIC_NO_MATCH`**: Der Gesichtsabgleich-Übereinstimmungswert lag unter dem Akzeptanzschwellenwert. Das Selfie zeigt nicht dieselbe Person wie das Registerfoto.

```json 200 OK — BIOMETRIC_NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "BRA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "BIOMETRIC_NO_MATCH",
      "service_id": "bra_cnh_facial_qrcode",
      "service_name": "Brazil - CNH QR code + face match (Datavalid)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

**`BIOMETRIC_IMAGE_UNUSABLE`**: Das Selfie konnte nicht verarbeitet werden (leer, kein Gesicht, geringe Qualität oder das Register konnte es nicht lesen). Fordern Sie den Benutzer auf, das Selfie erneut aufzunehmen.

```json 200 OK — BIOMETRIC_IMAGE_UNUSABLE theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "BRA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "BIOMETRIC_IMAGE_UNUSABLE",
      "service_id": "bra_cnh_facial_qrcode",
      "service_name": "Brazil - CNH QR code + face match (Datavalid)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

## Zurückgegebene Daten

Welche Felder in `source_data` ausgegeben werden, hängt davon ab, was das Register zurückgibt. Das generierte Beispiel für `bra_cnh_facial_qrcode` dokumentiert derzeit diese normalisierte Struktur:

* `cnh_qrcode`
* `date_of_birth`
* `face_match_probability`
* `face_match_score`
* `first_name`
* `identification_number`
* `last_name`
* `name_match_score`

## Preise und SLAs

Brasilien: Abfragen für CNH-QR-Code und Gesichtsabgleich (Datavalid) werden nur berechnet, wenn Didit ein eindeutiges Ergebnis von der Validierungsquelle erhält.

* **Preis pro Aufruf:** \$0.62 USD.
* **Abrechnung:** pro erfolgreiche Abfrage. Ihnen werden keine Kosten berechnet, wenn das Register nicht erreichbar ist, wenn Pflichtfelder fehlen oder wenn die Anfrage abgelehnt wird, bevor sie die Quelle erreicht.
* **Latenz:** typisch p95 unter 2 s.
* **Verfügbarkeit:** 99.9% pro Quartal auf Didits Seite; die Verfügbarkeit der nachgelagerten Quelle variiert je nach Land und Datensatz.

## Weiterlesen

* [Überblick über die Datenbankvalidierung in Brasilien](https://docs.didit.me/api-reference/database-validation/brazil.md)
* [Überblick über die Datenbankvalidierung](https://docs.didit.me/de/core-technology/database-validation/overview.md)
* [Ergebniscodes](https://docs.didit.me/de/core-technology/database-validation/database-validation-outcome-codes.md)


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