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

# Betrugsprüfung API (Fraud Check)

> Mit der Didit Betrugsprüfung API ausgewählte Identitäts-, Kontaktrisiko-, Anreicherungs- und Netzwerkprüfungen in einer Anfrage planen und ausführen.

Übermitteln Sie eingegebene Identifikatoren und angegebene Identitätsattribute, wählen Sie die auszuführenden Prüfungen aus und prüfen Sie jedes Ergebnis separat.
Verwenden Sie zuerst [Betrugsprüfung planen](https://docs.didit.me/de/standalone-apis/fraud-check-plan.md), um Eingabeanforderungen und geschätzte Kosten zu prüfen.

## Profil auswählen

Fixieren Sie `profile_version`, damit die gewählten Standardwerte und die Entscheidungsrichtlinie explizit festgelegt sind.
Das Standardprofil ist `standard`, Version `2026-08-27`.
Version `2026-09-14` fügt optionales Social Enrichment für E-Mail-Adresse und Telefonnummer hinzu und erfasst jede abgeschlossene Prüfung als native Sitzung der Benutzerverifizierung.
In dieser Version sind kostenpflichtige Zusatzleistungen optional und müssen aktiv ausgewählt werden.
Version `2026-09-14.1` aktiviert außerdem Abfragen von Identifikatoren im globalen Betrugsnetzwerk für Organisationen im Enterprise-Tarif, die weltweit Daten teilen.
Version `2026-09-14.2` fügt eine optionale Selfie-zu-CPF-Referenzprüfung für Brasilien hinzu.
Frühere Versionen behalten ihr ursprüngliches Verhalten bei.

Die aktuellen Profile unterstützen das Risiko von E-Mail-Adressen, das Telefonrisiko, das IP-Risiko, geeignete Datenbankvalidierung und die private Netzwerkhistorie Ihrer Anwendung.
Die auf Selfies basierende Identitätsbindung erfordert Version `2026-09-14.2`.
Wird sie in früheren Versionen ausgewählt, gibt die Anfrage `not_available_in_profile_version` zurück.

## Angegebene Identität und Kontext

Übergeben Sie E-Mail-Adresse, Telefonnummer und staatliche Identifikatoren in `subject.identifiers`.
Staatliche Identifikatoren erfordern das ausstellende Land; manchmal wird zusätzlich ein Aussteller benötigt, wenn Nummern nur innerhalb einer Region eindeutig sind.
Übergeben Sie Namen, Geburtsdatum, Staatsangehörigkeit und Adresse in `subject.attributes`.
Diese Angaben sind Behauptungen, die dort verglichen werden, wo eine ausgewählte Quelle sie unterstützt. Dass sie übermittelt wurden, macht sie nicht zu verifizierten Fakten.

Verwenden Sie `context` für die IP-Adresse des Verifizierungsversuchs, den User-Agent, den Zweck, das Land und jede erforderliche Einwilligungserklärung.
So wird getrennt, welche Informationen den Verifizierungsversuch betreffen und welche die Person.
Für unterstützte biometrische Prüfungen übergeben Sie `subject.selfie` als Base64-codiertes JPEG, PNG oder WebP mit maximal 6 MB.
Eine passende Bilddaten-URI wird ebenfalls akzeptiert.
Senden Sie kein Referenzbild, keine externe URL und keinen Speicherschlüssel.

## Selfie und angegebener Identifikator

Wählen Sie `biometric_identity`, übermitteln Sie einen brasilianischen `tax_number`-Identifikator und ein Selfie und bestätigen Sie `context.consent_obtained`.
Die Referenzprüfung stellt fest, ob dieses Selfie zu der Inhaberin bzw. dem Inhaber der angegebenen CPF gehört.
Fehlt die Einwilligung, gibt die Anfrage `consent_required` zurück. Bei nicht unterstützten Ländern wird `unsupported_region` zurückgegeben.
Das Modul hat einen Preis pro Prüfung, der auf dem Datenbankvalidierungstarif Ihrer Organisation basiert. Prüfen Sie den Tarif, bevor Sie die Prüfung ausführen.

Wenn die Referenzprüfung eine Antwort liefert, ist `identity_relationship.result` entweder `match`, `mismatch` oder `inconclusive`.
Eine nicht eindeutige Antwort erfordert eine manuelle Prüfung und wird niemals als Nichtübereinstimmung behandelt.
Das Ergebnis stellt nur die Beziehung zwischen Selfie und CPF fest.
Es validiert keinen übermittelten Namen oder Geburtsdatum, beweist keine Lebenderkennung und sucht kein Gesicht im Internet oder im globalen Betrugsnetzwerk.
Namen und Geburtsdatum bleiben Behauptungen, sofern keine andere ausgewählte Quelle Nachweise für diese Felder liefert.
Zeitüberschreitungen und Quellfehler sind nicht verfügbare Ergebnisse und werden nicht berechnet.
Abgeschlossene, nicht eindeutige Antworten werden mit demselben Preis pro Referenzprüfung berechnet.
Das Selfie wird von dieser Prüfung weder im Ergebnis aufgenommen noch als Sitzungsmedium gespeichert.

## Prüfungen auswählen

`checks.include` wählt Module aus, und `checks.exclude` hat Vorrang.
Eine explizit leere `include`-Liste deaktiviert alle optionalen Verarbeitungsschritte; die Normalisierung läuft weiterhin.
Wenn `include` fehlt, werden die Standardwerte des fixierten Profils verwendet.
Social Enrichment für E-Mail-Adresse und Telefonnummer wird separat mit `email_social` und `phone_social` ausgewählt.
Dafür sind ein gültiger, passender Identifikator erforderlich. Es wird kein OTP gesendet.

```json theme={null}
{
  "profile_version": "2026-09-14.1",
  "client_reference": "review-attempt-001",
  "subject": {
    "identifiers": [
      { "type": "email", "value": "applicant@example.com" }
    ],
    "attributes": { "first_name": "Alex", "last_name": "Example" }
  },
  "checks": { "include": ["networks_same_org", "networks_cross_org", "email_risk"] }
}
```

## Ergebnisse getrennt lesen

Jedes Modul meldet seinen Ausführungsstatus, den Grund und die abrechenbaren Einheiten.
`not_requested`, `excluded_by_caller`, `missing_required_input` und `source_unavailable` beschreiben unterschiedliche Ergebnisse.
Eine fehlende Quelle ist weder eine Nichtübereinstimmung der Identität noch ein Ergebnis ohne Risiko.

`attribute_evidence` beschreibt Nachweise auf Feldebene, während `risk` die Dimensionen Identität, Kontakt, Gerät, Verhalten und globales Betrugsnetzwerk getrennt hält.
Eine gemeinsam genutzte E-Mail-Adresse, ein gemeinsames Gerät oder ein anderer gemeinsamer Identifikator ist eine beobachtete Verbindung. Sie ist kein Beweis dafür, dass zwei Konten zur selben Person gehören oder dass Betrug begangen wurde.
`recommendation` ist die Empfehlung der Prüfung; sie ändert nicht den Status eines anderen Datensatzes.
Ergebnisse des Social Enrichment erscheinen unter `enrichment`. Nicht verfügbare Ergebnisse werden dabei klar von abgeschlossenen Ergebnissen unterschieden.

## Globales Betrugsnetzwerk

Wählen Sie `networks_cross_org` aus, um unterstützte E-Mail-Adressen, Telefonnummern und korrekt mit Namespace versehene Dokumentkennungen im gemeinsamen Netzwerk abzufragen.
Die Abfrage erfordert den Enterprise-Tarif und einen auf `global` gesetzten Freigabemodus Ihrer Organisation.
Fehlen diese Voraussetzungen, meldet der Tarif das Modul mit `available: false` und `availability_reason: "entitlement_required"`. Eine Prüfung, die dieses Modul auswählt, überspringt es mit dem Status `skipped` und dem Grund `entitlement_required`.
Derselbe Grund gilt, wenn Networks für Ihre Organisation nicht aktiviert ist.
Sandbox-Anwendungen unterliegen weder dem Tarif noch dem Freigabemodus: Bei einer unterstützten Kennung läuft das Modul und liefert ein leeres Beispielergebnis.
Die Abfrage nutzt das bestehende Lesekontingent Ihrer Organisation und protokolliert den Lesezugriff im Audit-Log.
Sie verursacht keine Gebühr pro Abfrage.
Das Planen einer Prüfung fragt den gemeinsamen Index nicht ab und verbraucht sein Lesekontingent nicht.

`network.cross_organization` enthält `signals_checked` und die offengelegten aggregierten `insights`, sobald die Prüfung abgeschlossen ist.
Jede Erkenntnis enthält den Signaltyp, die Ergebnisklassen, die Anzahl der Beitragenden, die Aktualitätsklasse und die Branchenkategorien, aber Letztere nur, wenn die Offenlegung aktiviert ist.
Er identifiziert niemals eine andere Organisation, ein anderes Konto, eine andere Person oder eine andere Verifizierung.
Ergebnisse unterhalb des Schwellenwerts für die Offenlegung werden weggelassen. Eine leere Liste belegt nicht, dass keine Betrugshistorie vorliegt.
Ein offengelegtes gemeinsames Signal löst eine Prüfempfehlung aus, niemals eine automatische Ablehnung oder einen Identitätsabgleich.

Eine nicht verfügbare Abfrage meldet ihren Grund getrennt von einer abgeschlossenen, leeren Abfrage.
Verliert Ihre Organisation später den organisationsübergreifenden Zugriff, etwa nach einer Tarifänderung oder wenn der Freigabemodus nicht mehr `global` ist, blenden das Abrufen von Ergebnissen, Wiederholungsversuche und Sitzungsdetails die gemeinsamen Aggregate und die daraus abgeleiteten Risikonachweise aus.
Die ursprüngliche Empfehlung bleibt eine historische Entscheidung. Lesezugriffe ändern den Verifizierungsstatus nicht.

## Sitzungen, Wiederholungsversuche und Gebühren

`check_id` ruft das gespeicherte Ergebnis über [Betrugsprüfung abrufen](https://docs.didit.me/de/standalone-apis/fraud-check-result.md) ab.
Wenn vorhanden, kennzeichnet `request_id` die zugehörige native Verifizierungssitzung.
Die Versionen `2026-09-14`, `2026-09-14.1` und `2026-09-14.2` erstellen diese Sitzung immer, auch wenn nur die private Netzwerkhistorie ausgewählt ist.

Wenn Sie `client_reference` mit demselben Anfragekörper erneut verwenden, gibt die Anfrage das ursprüngliche Ergebnis zurück, ohne eine weitere Ausführung oder Gebühr, solange diese Prüfung existiert.
Ein anderer Anfragekörper mit derselben Referenz liefert `409`.
Läuft die Ausführung noch, wiederholen Sie dieselbe Anfrage nach dem Intervall aus `Retry-After` in der Antwort.
Wird die zugehörige Verifizierung gelöscht, wird auch das Ergebnis der Betrugsprüfung gelöscht; der Abruf liefert danach `404`.
Eine Prüfung, die während der Ausführung gelöscht wird, kann kein abgeschlossenes Ergebnis veröffentlichen.

Die Preise richten sich nach den aktuellen Vorauszahlungs- oder Vertragstarifen Ihrer Organisation.
Nicht verfügbare und übersprungene Module werden nicht berechnet, und die private Netzwerkhistorie hat keine Gebühr pro Prüfung.
Sandbox-Prüfungen verwenden Beispielantworten ohne kostenpflichtige Anfragen an Anbieter und ohne Gebühren.


## OpenAPI

````yaml de/openapi-25.json POST /v3/fraud/checks/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API für Ausweisverifizierung. Authentifizierung über den x-api-key-Header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/fraud/checks/:
    post:
      tags:
        - Fraud Check
      summary: Einen Betrugs-Check durchführen
      description: >-
        Übermitteln Sie einen oder mehrere typisierte Identifikatoren und
        erhalten Sie Normalisierung, aktuelle Anreicherung, maßgebliche
        Validierung (sofern Land und Identifikatortyp abgedeckt sind),
        unabhängige Risikodimensionen und eine Empfehlung in einer Antwort.


        Diese Profile unterstützen Identifikatorprüfungen. Die Selfie-basierte
        Identitätsbindung (`biometric_identity`) erfordert die Profilversion
        `2026-09-14.2` und eine brasilianische CPF; sie wird nur mit
        Einwilligung des Benutzers ausgeführt und wenn Ihre Organisation dazu
        berechtigt ist. Frühere Versionen melden dies als
        `not_available_in_profile_version`. Module, die nicht ausgeführt werden
        können, werden mit einem deterministischen Grund als übersprungen
        gemeldet; eine Quelle, die nicht antworten konnte, wird niemals als
        Identitätsabweichung gemeldet.
      operationId: create_fraud_check
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
            example:
              client_reference: review-attempt-001
              subject:
                identifiers:
                  - type: email
                    value: applicant@example.com
                attributes:
                  first_name: Alex
                  last_name: Example
              checks:
                include:
                  - networks_same_org
                  - networks_cross_org
                  - email_risk
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudCheckResponse'
          description: ''
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudClientCredentialsErrorMessage'
          description: ''
        '403':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/FraudClientCredentialsForbiddenErrorMessage
          description: ''
        '409':
          description: >-
            Konflikt, ohne Berechnung zurückgegeben: Die `client_reference`
            wurde bereits mit einem anderen Anfrageinhalt verwendet; eine
            Prüfung mit derselben `client_reference` läuft noch (nach Ablauf von
            `Retry-After` Sekunden mit derselben Referenz wiederholen); oder die
            Verifizierung, in der diese Prüfung erfasst wird, wurde gelöscht,
            bevor die Prüfung abgeschlossen war.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
              examples:
                different_body:
                  summary: Referenz mit einem anderen Body wiederverwendet
                  value:
                    error: >-
                      client_reference has already been used with a different
                      request body.
                still_running:
                  summary: Eine Prüfung mit dieser Referenz wird noch ausgeführt
                  value:
                    error: >-
                      A check with this client_reference is already running.
                      Retry with the same reference later.
                verification_deleted:
                  summary: >-
                    Die Verifizierung wurde gelöscht, bevor die Prüfung
                    abgeschlossen war
                  value:
                    error: This verification was deleted before the check completed.
          headers:
            Retry-After:
              description: >-
                Anzahl der Sekunden, die vor einem Wiederholungsversuch gewartet
                werden muss; dieser Wert wird übermittelt, wenn eine Prüfung mit
                derselben `client_reference` noch läuft.
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.fraud_checks.create(
                client_reference="review-attempt-001",
                subject={
                    "identifiers": [{
                        "type": "email",
                        "value": "applicant@example.com",
                    }],
                    "attributes": {
                        "first_name": "Alex",
                        "last_name": "Example",
                    },
                },
                checks={
                    "include": ["networks_same_org", "networks_cross_org", "email_risk"],
                },
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.fraudChecks.create({
              client_reference: "review-attempt-001",
              subject: {
                identifiers: [{
                  type: "email",
                  value: "applicant@example.com",
                }],
                attributes: {
                  first_name: "Alex",
                  last_name: "Example",
                },
              },
              checks: {
                include: ["networks_same_org", "networks_cross_org", "email_risk"],
              },
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.FraudChecks.Create(ctx, didit.FraudCheckRequestRequest{\n\tClientReference: didit.String(\"review-attempt-001\"),\n\tSubject: didit.FraudCheckSubjectRequest{\n\t\tIdentifiers: []didit.FraudCheckIdentifierRequest{{\n\t\t\tType:  didit.FraudTypeEnum(\"email\"),\n\t\t\tValue: \"applicant@example.com\",\n\t\t}},\n\t\tAttributes: didit.Some(didit.FraudCheckAttributesRequest{\n\t\t\tFirstName: didit.String(\"Alex\"),\n\t\t\tLastName:  didit.String(\"Example\"),\n\t\t}),\n\t},\n\tChecks: didit.Some(didit.FraudCheckModuleSelectionRequest{\n\t\tInclude: didit.Some([]didit.FraudExcludeEnum{didit.FraudExcludeEnum(\"networks_same_org\"), didit.FraudExcludeEnum(\"networks_cross_org\"), didit.FraudExcludeEnum(\"email_risk\")}),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.FraudCheckAttributesRequest;

            import me.didit.types.FraudCheckIdentifierRequest;

            import me.didit.types.FraudCheckModuleSelectionRequest;

            import me.didit.types.FraudCheckRequestRequest;

            import me.didit.types.FraudCheckSubjectRequest;

            import me.didit.types.FraudExcludeEnum;

            import me.didit.types.FraudTypeEnum;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.fraudChecks().create(FraudCheckRequestRequest.builder()
                    .clientReference("review-attempt-001")
                    .subject(FraudCheckSubjectRequest.builder()
                            .identifiers(List.of(FraudCheckIdentifierRequest.builder()
                                    .type(FraudTypeEnum.of("email"))
                                    .value("applicant@example.com")
                                    .build()))
                            .attributes(FraudCheckAttributesRequest.builder()
                                    .firstName("Alex")
                                    .lastName("Example")
                                    .build())
                            .build())
                    .checks(FraudCheckModuleSelectionRequest.builder()
                            .include(List.of(FraudExcludeEnum.of("networks_same_org"), FraudExcludeEnum.of("networks_cross_org"), FraudExcludeEnum.of("email_risk")))
                            .build())
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->fraudChecks->create([
                'client_reference' => 'review-attempt-001',
                'subject' => [
                    'identifiers' => [[
                        'type' => 'email',
                        'value' => 'applicant@example.com',
                    ]],
                    'attributes' => [
                        'first_name' => 'Alex',
                        'last_name' => 'Example',
                    ],
                ],
                'checks' => [
                    'include' => ['networks_same_org', 'networks_cross_org', 'email_risk'],
                ],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.fraud_checks.create(
              client_reference: "review-attempt-001",
              subject: {
                identifiers: [{
                  type: "email",
                  value: "applicant@example.com",
                }],
                attributes: {
                  first_name: "Alex",
                  last_name: "Example",
                },
              },
              checks: {
                include: ["networks_same_org", "networks_cross_org", "email_risk"],
              }
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.FraudChecks.CreateAsync(new
            FraudCheckRequestRequest

            {
                ClientReference = "review-attempt-001",
                Subject = new()
                {
                    Identifiers = new FraudCheckIdentifierRequest[]
                    {
                        new()
                        {
                            Type = "email",
                            Value = "applicant@example.com",
                        },
                    },
                    Attributes = new FraudCheckAttributesRequest
                    {
                        FirstName = "Alex",
                        LastName = "Example",
                    },
                },
                Checks = new FraudCheckModuleSelectionRequest
                {
                    Include = new FraudExcludeEnum[] { "networks_same_org", "networks_cross_org", "email_risk" },
                },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    FraudCheckRequestRequest:
      type: object
      properties:
        client_reference:
          type: string
          minLength: 1
          description: >-
            Ihre eigene Referenz für diese Prüfung. Dient gleichzeitig als
            Idempotenzschlüssel: Bei Wiederverwendung mit demselben Body wird
            die ursprüngliche Prüfung zurückgegeben, ohne die Module erneut
            auszuführen oder abzurechnen; bei Wiederverwendung mit einem anderen
            Body wird 409 zurückgegeben.
          maxLength: 255
        profile:
          type: string
          minLength: 1
          default: standard
          description: Orchestrierungsprofil-ID. Standardmäßig das Didit-Profil `standard`.
          maxLength: 64
        profile_version:
          type: string
          minLength: 1
          description: >-
            Eine eingefrorene Profilversion anpinnen. Standardmäßig die aktuelle
            Version des Profils.
          maxLength: 32
        subject:
          $ref: '#/components/schemas/FraudCheckSubjectRequest'
        context:
          $ref: '#/components/schemas/FraudCheckContextRequest'
        checks:
          $ref: '#/components/schemas/FraudCheckModuleSelectionRequest'
        vendor_data:
          type: string
          maxLength: 1000
        metadata: {}
      required:
        - subject
    FraudCheckResponse:
      type: object
      properties:
        check_id:
          type: string
          format: uuid
        request_id:
          type: string
          format: uuid
          description: Native-Verifizierungssitzung, die für diese Prüfung erstellt wurde.
        client_reference:
          type: string
          nullable: true
        processing_status:
          $ref: '#/components/schemas/FraudProcessingStatusEnum'
        profile_id:
          type: string
        profile_version:
          type: string
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckInput'
        modules:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckModuleReport'
        attribute_evidence:
          type: array
          items:
            type: object
            additionalProperties: {}
        compound_evidence:
          type: array
          items:
            type: object
            additionalProperties: {}
        risk:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckRisk'
        network:
          type: object
          additionalProperties: {}
        enrichment:
          type: object
          additionalProperties: {}
        identity_relationship:
          allOf:
            - $ref: '#/components/schemas/FraudCheckIdentityRelationship'
          nullable: true
        recommendation:
          $ref: '#/components/schemas/FraudRecommendationEnum'
        next_action:
          $ref: '#/components/schemas/FraudNextActionEnum'
        decision_reasons:
          type: array
          items:
            type: string
        coverage:
          type: object
          additionalProperties: {}
        usage:
          type: array
          items:
            type: object
            additionalProperties: {}
        vendor_data:
          type: string
          nullable: true
        metadata:
          nullable: true
      required:
        - attribute_evidence
        - check_id
        - client_reference
        - completed_at
        - compound_evidence
        - coverage
        - created_at
        - decision_reasons
        - inputs
        - modules
        - network
        - next_action
        - processing_status
        - profile_id
        - profile_version
        - recommendation
        - risk
        - usage
    FraudClientCredentialsErrorMessage:
      type: object
      properties:
        detail:
          type: string
          default: 'Authentication failed: Invalid client access token.'
    FraudClientCredentialsForbiddenErrorMessage:
      type: object
      properties:
        detail:
          type: string
          default: Forbidden - User doesn't have permission
    FraudCheckSubjectRequest:
      type: object
      properties:
        selfie:
          type: string
          minLength: 1
          description: >-
            Base64-kodiertes JPEG-, PNG- oder WebP-Selfie, bis zu 6 MB. Kein
            Referenzbild oder keine URL.
          maxLength: 8388672
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckIdentifierRequest'
          description: Ein oder mehrere typisierte Bezeichner. Einer reicht aus.
          maxItems: 10
          minItems: 1
        attributes:
          $ref: '#/components/schemas/FraudCheckAttributesRequest'
      required:
        - identifiers
    FraudCheckContextRequest:
      type: object
      properties:
        ip_address:
          type: string
          minLength: 1
        user_agent:
          type: string
          maxLength: 512
        country:
          type: string
          description: >-
            Land, in dem sich die Person laut eigener Angabe befindet. Dient nur
            dem Kontext – niemals als Nachweis dafür, dass die Person die
            Identität besitzt.
          maxLength: 3
        purpose:
          type: string
          maxLength: 128
        consent_obtained:
          type: boolean
    FraudCheckModuleSelectionRequest:
      type: object
      properties:
        include:
          type: array
          items:
            $ref: '#/components/schemas/FraudExcludeEnum'
        exclude:
          type: array
          items:
            $ref: '#/components/schemas/FraudExcludeEnum'
    FraudProcessingStatusEnum:
      enum:
        - pending
        - running
        - completed
        - failed
      type: string
      description: |-
        * `pending` - Ausstehend
        * `running` - Wird ausgeführt
        * `completed` - Abgeschlossen
        * `failed` - Fehlgeschlagen
    FraudCheckInput:
      type: object
      properties:
        reference:
          type: string
          description: Geschwärzter Handle für die übermittelte Kennung.
        type:
          $ref: '#/components/schemas/FraudTypeEnum'
        namespace:
          type: object
          additionalProperties: {}
        quality:
          type: string
        normalization:
          type: object
          additionalProperties: {}
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
      required:
        - availability
        - namespace
        - normalization
        - quality
        - reference
        - type
    FraudCheckModuleReport:
      type: object
      properties:
        module:
          $ref: '#/components/schemas/FraudExcludeEnum'
        status:
          $ref: '#/components/schemas/FraudStatusEnum'
        reason:
          type: string
          nullable: true
        latency_ms:
          type: integer
        freshness:
          type: string
          nullable: true
        billable_units:
          type: integer
      required:
        - billable_units
        - freshness
        - latency_ms
        - module
        - reason
        - status
    FraudCheckRisk:
      type: object
      properties:
        dimension:
          $ref: '#/components/schemas/FraudDimensionEnum'
        score:
          type: integer
          nullable: true
        band:
          $ref: '#/components/schemas/FraudBandEnum'
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
        requested_but_unavailable:
          type: boolean
          description: >-
            True, wenn die Anfrage alles bereitgestellt hat, was diese Dimension
            benötigte, und die Plattform sie dennoch nicht beantworten konnte.
            Eine solche Prüfung wird niemals allein aufgrund der Dimensionen zur
            Genehmigung empfohlen, die beantwortet werden konnten.
        reason_codes:
          type: array
          items:
            type: string
        evidence_indexes:
          type: array
          items:
            type: integer
      required:
        - availability
        - band
        - dimension
        - evidence_indexes
        - reason_codes
        - requested_but_unavailable
        - score
    FraudCheckIdentityRelationship:
      type: object
      properties:
        result:
          $ref: '#/components/schemas/FraudResultEnum'
        reference_type:
          type: string
        country:
          type: string
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
        reason_codes:
          type: array
          items:
            type: string
      required:
        - availability
        - country
        - reason_codes
        - reference_type
        - result
    FraudRecommendationEnum:
      enum:
        - approve
        - review
        - reject
      type: string
      description: |-
        * `approve` - Genehmigen
        * `review` - Prüfen
        * `reject` - Ablehnen
    FraudNextActionEnum:
      enum:
        - none
        - manual_review
        - step_up
        - resubmit_capture
      type: string
      description: |-
        * `none` - Keine
        * `manual_review` - Manuelle Prüfung
        * `step_up` - Step-Up
        * `resubmit_capture` - Erneute Erfassung einreichen
    FraudCheckIdentifierRequest:
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/FraudTypeEnum'
          description: |-
            Kennungstyp. Bestimmt, welche Namespace-Felder erforderlich sind.

            * `email` - E-Mail
            * `phone` - Telefon
            * `national_id` - Nationale ID
            * `tax_number` - Steuernummer
            * `passport_number` - Reisepassnummer
            * `driving_licence_number` - Führerscheinnummer
            * `residence_permit_number` - Aufenthaltstitelnummer
            * `voter_id` - Wähler-ID
            * `external_id` - Externe ID
        value:
          type: string
          minLength: 1
          description: Der Identifikatorwert in einem beliebigen gebräuchlichen Format.
          maxLength: 255
        country:
          type: string
          description: >-
            ISO-3166-Alpha-2- oder -Alpha-3-Code des Ausstellungslands.
            Erforderlich für behördliche Identifikatortypen: Dieselben Ziffern
            bezeichnen in verschiedenen Ländern unterschiedliche Personen.
          maxLength: 3
        issuer:
          type: string
          description: >-
            Optionale Ausstellungsbehörde oder subnationale Ausstellungsstelle,
            wenn das Land allein nicht eindeutig ist.
          maxLength: 128
      required:
        - type
        - value
    FraudCheckAttributesRequest:
      type: object
      description: >-
        Bestätigende Attribute. Alle sind optional; sie erweitern die
        Modulabdeckung.
      properties:
        first_name:
          type: string
          maxLength: 128
        last_name:
          type: string
          maxLength: 128
        full_name:
          type: string
          maxLength: 256
        date_of_birth:
          type: string
          format: date
        nationality:
          type: string
          maxLength: 3
        gender:
          type: string
          maxLength: 16
        address:
          type: string
          maxLength: 512
        city:
          type: string
          maxLength: 128
        state:
          type: string
          maxLength: 128
        postal_code:
          type: string
          maxLength: 32
    FraudExcludeEnum:
      enum:
        - normalization
        - email_risk
        - email_social
        - phone_social
        - phone_risk
        - ip_risk
        - database_validation
        - networks_same_org
        - networks_cross_org
        - biometric_identity
      type: string
      description: |-
        * `normalization` - Normalisierung
        * `email_risk` - E-Mail-Risiko
        * `email_social` - E-Mail-Social
        * `phone_social` - Telefon-Social
        * `phone_risk` - Telefonrisiko
        * `ip_risk` - IP-Risiko
        * `database_validation` - Datenbankvalidierung
        * `networks_same_org` - Netzwerke derselben Organisation
        * `networks_cross_org` - Organisationsübergreifende Netzwerke
        * `biometric_identity` - Biometrische Identität
    FraudTypeEnum:
      enum:
        - email
        - phone
        - national_id
        - tax_number
        - passport_number
        - driving_licence_number
        - residence_permit_number
        - voter_id
        - external_id
      type: string
      description: |-
        * `email` - E-Mail
        * `phone` - Telefon
        * `national_id` - Nationale ID
        * `tax_number` - Steuernummer
        * `passport_number` - Reisepassnummer
        * `driving_licence_number` - Führerscheinnummer
        * `residence_permit_number` - Aufenthaltstitelnummer
        * `voter_id` - Wähler-ID
        * `external_id` - Externe ID
    FraudAvailabilityEnum:
      enum:
        - available
        - not_requested
        - no_reference
        - insufficient_history
        - unsupported_region
        - source_unavailable
      type: string
      description: |-
        * `available` - Verfügbar
        * `not_requested` - Nicht angefragt
        * `no_reference` - Keine Referenz
        * `insufficient_history` - Unzureichender Verlauf
        * `unsupported_region` - Nicht unterstützte Region
        * `source_unavailable` - Quelle nicht verfügbar
    FraudStatusEnum:
      enum:
        - planned
        - completed
        - skipped
        - failed
      type: string
      description: |-
        * `planned` - Geplant
        * `completed` - Abgeschlossen
        * `skipped` - Übersprungen
        * `failed` - Fehlgeschlagen
    FraudDimensionEnum:
      enum:
        - identity
        - contact
        - device_network
        - behavioral
        - fraud_network
      type: string
      description: |-
        * `identity` - Identität
        * `contact` - Kontakt
        * `device_network` - Gerätenetzwerk
        * `behavioral` - Verhalten
        * `fraud_network` - Betrugsnetzwerk
    FraudBandEnum:
      enum:
        - low
        - medium
        - high
        - unknown
      type: string
      description: |-
        * `low` - Niedrig
        * `medium` - Mittel
        * `high` - Hoch
        * `unknown` - Unbekannt
    FraudResultEnum:
      enum:
        - match
        - mismatch
        - inconclusive
        - no_reference
      type: string
      description: |-
        * `match` - Übereinstimmung
        * `mismatch` - Keine Übereinstimmung
        * `inconclusive` - Nicht eindeutig
        * `no_reference` - Keine Referenz
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Der API-Schlüssel Ihrer Anwendung, aus Entwickler -> API-Schlüssel in
        der Business Console. Der Primärschlüssel hat Vollzugriff. Ein benannter
        Schlüssel kann im Geltungsbereich eingeschränkt werden: keine, Lese-
        oder Schreibberechtigung pro Ressource, beschränkt auf bestimmte
        Workflows oder genehmigte Sitzungen, auf eine Liste von IP-Adressen und
        auf ein Ablaufdatum. 401 bedeutet, dass der Schlüssel falsch, widerrufen
        oder abgelaufen ist; 403 bedeutet, dass kein Schlüssel gesendet wurde,
        der Schlüssel keinen Zugriff auf diese Ressource oder Aktion hat oder
        die Anfrage von einer Adresse außerhalb seiner IP-Liste stammte; 404 bei
        einer Sitzungsroute bedeutet, dass die Sitzung außerhalb der Workflows
        oder Status des Schlüssels liegt. Ein Schlüssel ohne Medienzugriff
        erhält Bild-, Video- und PDF-URLs als null, und ein Schlüssel ohne
        Schreibberechtigung für Sitzungen erhält Sitzungslinks und Token als
        null. Siehe https://docs.didit.me/console/api-keys.
    BearerAuth:
      type: http
      scheme: bearer
      description: Das Client-Credentials-Zugriffstoken der Anwendung.

````

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