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

# E-Mail-Risiko-API: Zustellbarkeit & Datenleck-Signale

> E-Mail-Risiko ohne OTP-Versand bewerten: Zustellbarkeit, Wegwerf-Domains, Datenlecks und Betrug in einem Server-zu-Server-Aufruf mit Didit.

Verwenden Sie `POST /v3/email/risk/`, wenn Sie E-Mail-Informationen benötigen, ohne dass der Benutzer einen Einmalcode eingeben muss.

Es wird keine E-Mail versendet. Der Endpoint erstellt eine API-Sitzung, reichert die Adresse an, wendet Ihre E-Mail-Risikoregeln an und gibt in einer synchronen Antwort denselben normalisierten E-Mail-Block zurück, der bei der E-Mail-Verifizierung verwendet wird.

Wenn die Anfrage gespeichert wird, kann Didit die bewertete E-Mail-Adresse außerdem als aggregierten Nachweis in **Netzwerke** verwenden. Netzwerkgraphen können risikoreiche E-Mail-Informationen, Kontext zu Datenlecks und die Abdeckung von Social-Profilen bei gemeinsamen E-Mail-Signalen anzeigen. Sie geben jedoch nicht die Roh-E-Mail-Adresse an andere Organisationen weiter.

## Antwort interpretieren

* `status` ist die endgültige Entscheidung für diese API-Sitzung. Normalerweise ist er `Approved`. Die Risikobewertung kann `In Review` oder `Declined` ergeben.
* `email.is_breached`, `email.is_disposable` und `email.is_undeliverable` sind die stabilen Ja/Nein-Signale für die Anwendungslogik.
* `email.breaches` listet die neuesten bekannten Datenlecks auf, in denen die Adresse vorkommt, sofern Daten verfügbar sind. Angegeben werden jeweils das Datum des Lecks und die offengelegten Datenklassen.
* `email.email_intelligence.score` verwendet eine Risikoskala von 0 bis 100, wobei ein höherer Wert ein höheres Risiko bedeutet. `breach_risk_level` (`Low`, `Medium`, `High`) und `no_of_breaches` sind abgeleitete Ansichten.
* `email.email_intelligence.reason_codes` erklärt, welche normalisierten Signale zum Ergebnis beigetragen haben. Die Liste der Werte kann im Laufe der Zeit erweitert werden. Lehnen Sie daher unbekannte Codes nicht ab.
* `email.email_intelligence` und `email.enrichment` sind Kompatibilitätsaliase mit demselben normalisierten Objekt. Neue Integrationen können `email.enrichment` lesen.
* `email.matches` listet andere Sitzungen Ihrer Anwendung auf, in denen dieselbe Adresse von einem anderen Benutzer verwendet wurde. Verwenden Sie diese Liste zur Erkennung doppelter Konten.
* `request_id` ist die API-Sitzungs-ID. Speichern Sie sie zusammen mit `vendor_data`, wenn Sie das Ergebnis später mit Webhooks oder Aktivitäten in der Konsole abgleichen möchten.

> [!WARNING]
>
> `email.email_intelligence` und `email.enrichment` sind Best-Effort-Felder. Eine abgeschlossene Abfrage kann beide Felder auslassen, wenn für diese Adresse, Domain oder diesen Tarif keine verwertbaren Informationen zurückgegeben werden. Erstellen Sie Regeln zuerst auf Basis von `is_breached`, `is_disposable` und `is_undeliverable`. Behandeln Sie fehlende Informationen als „unbekannt“, nicht als „sicher“.

## Social-Footprint-Zusatzfunktion

Setzen Sie `enable_social` auf `true`, um dem Objekt `email` in der Antwort einen Block `email_social` hinzuzufügen. Dieser enthält die Online-Plattformen, auf denen diese E-Mail-Adresse registriert ist, nach Kategorien gruppiert, mit den zusammenfassenden Anzahlen und allen Profildetails, die unsere Datenpartner zurückgeben.

* `email.email_social.profiles_registered` und `email.email_social.profiles_checked` sind die wichtigsten Kennzahlen: Plattformen, auf denen die E-Mail-Adresse nachweislich registriert ist, im Verhältnis zu den geprüften Plattformen.
* `email.email_social.registered_platforms` und `email.email_social.not_registered_platforms` listen jede Plattform mit ihrer `category` und ihrem `scope` auf (`global` oder `local` für regionsspezifische Plattformen).
* `email.email_social.categories` gibt die Anzahl der Registrierungen und das Verhältnis pro Kategorie an. `email.email_social.profiles` enthält die Profildetails pro Plattform, sofern eine Plattform sie bereitstellt (Name, Foto-URL, Info-Text, Datenschutzstatus, Kennzeichen für Geschäftskonten).
* Die zusammenfassenden Indizes (`digital_footprint_diversity`, `digital_sophistication_index`, `engagement_depth_index`, `subscription_affordability_index`) sind zusammengesetzte Werte von 0 bis 10. Jeder Zählwert kann `null` sein, wenn die Prüfung dafür keine Daten geliefert hat.

`profiles_registered: 0` ist eine gültige Antwort und kein Fehler. Die Plattformen wurden geprüft, und die E-Mail-Adresse wurde auf keiner davon gefunden. Das ist ein häufiges Signal für eine synthetische Identität. Dieser Endpoint reagiert darauf nicht von allein. Verwenden Sie `email_no_social_presence_action` in einem Workflow, um daraus eine Prüfungs- oder Ablehnungsentscheidung abzuleiten.

Der Block fehlt, wenn `enable_social` nicht gesetzt ist. Er fehlt auch, wenn die Social-Prüfung nicht abgeschlossen werden konnte. In diesem Fall wird sie nicht abgerechnet.

## Verhalten in der Sandbox

Sandbox-API-Schlüssel validieren die Anfrage und geben deterministische, genehmigte Daten zurück. Sie versenden keine E-Mail, verbrauchen keine Credits, erstellen keine Sitzung und tragen nicht zu Netzwerken bei. Wenn `enable_social` gesetzt ist, geben sie zusätzlich einen deterministischen Block `email_social` zurück.

## Abrechnung

Aufrufe der Email Risk API kosten zum Listenpreis \$0.04. Das ist weniger als bei einer vollständigen E-Mail-Verifizierung, weil keine E-Mail versendet wird. Eine Live-Anfrage ist abrechenbar, sobald die Abfrage beginnt, auch wenn einige Best-Effort-Felder nicht verfügbar sind.

Die Social-Footprint-Zusatzfunktion wird separat abgerechnet: eine Einheit `email_social` pro Anfrage zusätzlich zum Preis der Email Risk API, sobald die Prüfung abgeschlossen ist. Die Credit-Prüfung vor der Abfrage deckt beides ab.


## OpenAPI

````yaml de/openapi-25.json POST /v3/email/risk/
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/email/risk/:
    post:
      tags:
        - Standalone APIs
      summary: Risiko-Score für eine E-Mail-Adresse ermitteln
      description: >-
        Gibt Zustellbarkeit, Einweg-Adressen, Datenlecks, sitzungsübergreifende
        Übereinstimmungen und normalisierte Risiko-Intelligence-Signale zurück,
        ohne ein OTP zu senden. Der Endpoint erstellt eine API-Sitzung und gibt
        deren ID als `request_id` zurück.


        **Entscheidung.** Der übergeordnete `status` spiegelt `email.status`
        wider. Er lautet normalerweise `Approved`; die Risikobewertung kann `In
        Review` oder `Declined` ergeben.


        **Kompatibilitäts-Aliase.** Live-Antworten stellen das normalisierte
        Intelligence-Objekt sowohl als `email.email_intelligence` als auch als
        `email.enrichment` bereit. Die Werte sind identisch. Neue Integrationen
        können `email.enrichment` auslesen. Beide Schlüssel fehlen, wenn keine
        nutzbaren Intelligence-Daten zurückgegeben wurden.


        **Abrechnung.** Live-Aufrufe nutzen die Preise der Email Risk API. Die
        Anfrage ist abrechenbar, sobald die Abfrage startet, selbst wenn einige
        Best-Effort-Felder nicht verfügbar sind.


        **Sandbox.** Sandbox-Schlüssel validieren die Anfrage und geben
        deterministische, genehmigte Daten zurück, ohne eine E-Mail zu senden,
        Credits zu verbrauchen, eine Sitzung zu erstellen oder zu Networks
        beizutragen.


        **Authentifizierung.** Senden Sie den API-Schlüssel Ihrer Anwendung in
        `x-api-key`. Fehlende oder ungültige Anmeldedaten geben `403` zurück –
        diese API gibt niemals `401` zurück.


        **Rate-Limit.** Geteiltes Schreib-Budget von 300 Anfragen pro Minute pro
        API-Schlüssel über POST/PATCH/DELETE-Endpoints hinweg
        (Transaktionserstellungen und Ereignis-Ingestion haben ein separates
        Budget von 600).


        **Digitaler Fußabdruck.** Setzen Sie `enable_social` auf `true`, um
        einen `email_social`-Block hinzuzufügen: die Online-Plattformen, auf
        denen diese Adresse registriert ist, mit Anzahlen pro Kategorie und
        allen verfügbaren Profildetails. `profiles_registered: 0` bedeutet, dass
        die Plattformen überprüft wurden und die Adresse auf keiner davon
        gefunden wurde – eine gültige, abrechenbare Antwort. Der Block fehlt,
        wenn das Add-on nicht angefordert wurde oder die Überprüfung nicht
        abgeschlossen werden konnte, und wird in diesem Fall nicht abgerechnet.
        Die Abrechnung fügt pro Anfrage eine `email_social`-Einheit zusätzlich
        zum eigenen Preis dieses Endpoints hinzu.
      operationId: post_v3email_risk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailRiskRequest'
            examples:
              Minimal:
                summary: Eine Adresse mit Standardwerten bewerten
                value:
                  email: alice@example.com
              Full context:
                summary: Score mit Signalen, Länderhinweis und Korrelations-IDs
                value:
                  email: alice@example.com
                  country_code: US
                  signals:
                    ip: 192.0.2.1
                    device_id: 8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2
                    device_platform: web
                    os_version: '14.4'
                    app_version: 1.2.34
                    user_agent: >-
                      Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
                      AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4
                      Safari/605.1.15
                  vendor_data: lead-123
                  metadata:
                    source: signup_prescreen
      responses:
        '200':
          description: >-
            Die Risikobewertung wurde abgeschlossen. Prüfen Sie `status` für die
            Entscheidung; HTTP ist bei abgeschlossenen Abfragen immer `200`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailRiskResponse'
              examples:
                Clean address:
                  summary: Zustellbare Adresse ohne Datenleckrisiko
                  value:
                    request_id: 82397be9-5921-4970-a979-2d5b43e08b33
                    status: Approved
                    email:
                      status: Approved
                      email: alice@example.com
                      is_breached: false
                      breaches: []
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      email_intelligence:
                        score: 4
                        deliverable: high
                        breach_risk_level: Low
                        breach_risk_index: 4
                        is_recent_breach: false
                        is_frequent_breached: false
                        is_disposable: false
                        is_free_domain: false
                        is_breached: false
                        no_of_breaches: 0
                        reason_codes: []
                      enrichment:
                        score: 4
                        deliverable: high
                        breach_risk_level: Low
                        breach_risk_index: 4
                        is_recent_breach: false
                        is_frequent_breached: false
                        is_disposable: false
                        is_free_domain: false
                        is_breached: false
                        no_of_breaches: 0
                        reason_codes: []
                    vendor_data: lead-123
                    metadata:
                      source: signup_prescreen
                    created_at: '2026-09-01T10:30:00.123456+00:00'
                Breached address:
                  summary: Adresse in bekannten Datenlecks gefunden
                  value:
                    request_id: d1e5c2a8-6f30-4c1a-8b2d-3e4f5a6b7c8d
                    status: In Review
                    email:
                      status: In Review
                      email: bob@example.org
                      is_breached: true
                      breaches:
                        - name: ExampleBreach2023
                          domain: example.org
                          breach_date: '2023-06-01'
                          breach_emails_count: 1200000
                          description: A data breach affecting example.org accounts.
                          logo_path: https://logos.example.org/example.png
                          data_classes:
                            - email_addresses
                            - passwords
                          is_verified: true
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      email_intelligence:
                        score: 58
                        deliverable: high
                        breach_risk_level: High
                        breach_risk_index: 72
                        is_recent_breach: true
                        is_frequent_breached: true
                        is_disposable: false
                        is_free_domain: true
                        is_breached: true
                        no_of_breaches: 4
                        reason_codes:
                          - code: IR-F784B630
                            direction: risk
                            message: Email's digital footprint diversity is Very Low
                            impact_level: low
                      enrichment:
                        score: 58
                        deliverable: high
                        breach_risk_level: High
                        breach_risk_index: 72
                        is_recent_breach: true
                        is_frequent_breached: true
                        is_disposable: false
                        is_free_domain: true
                        is_breached: true
                        no_of_breaches: 4
                        reason_codes:
                          - code: IR-F784B630
                            direction: risk
                            message: Email's digital footprint diversity is Very Low
                            impact_level: low
                    vendor_data: lead-125
                    metadata: null
                    created_at: '2026-09-01T10:30:00.123456+00:00'
        '400':
          $ref: '#/components/responses/EmailRiskValidationError'
        '403':
          $ref: '#/components/responses/RiskPermissionDenied'
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/email/risk/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "email": "alice@example.com",
                "country_code": "US",
                "vendor_data": "lead-123",
                "metadata": {"source": "signup_prescreen"}
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.email.assess_risk(
                email="alice@example.com",
            )
            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.email.assessRisk({
              email: "alice@example.com",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Email.AssessRisk(ctx, didit.EmailRiskRequest{\n\tEmail: \"alice@example.com\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;
            import me.didit.types.EmailRiskRequest;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            var result = client.email().assessRisk(EmailRiskRequest.builder()
                    .email("alice@example.com")
                    .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->email->assessRisk([
                'email' => 'alice@example.com',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.email.assess_risk(email: "alice@example.com")
            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.Email.AssessRiskAsync(new EmailRiskRequest
            {
                Email = "alice@example.com",
            });
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    EmailRiskRequest:
      type: object
      required:
        - email
      properties:
        email:
          type: string
          format: email
          description: Zu bewertende E-Mail-Adresse.
          example: alice@example.com
        country_code:
          type: string
          maxLength: 3
          description: >-
            Optionaler ISO 3166-1 alpha-2- oder alpha-3-Länderhinweis für die
            Informationsabdeckung.
          example: US
        signals:
          $ref: '#/components/schemas/RiskSignals'
        vendor_data:
          type: string
          description: >-
            Ihre stabile Referenz für diese Anfrage. Wird in der API-Sitzung
            gespeichert und in der Antwort zurückgegeben.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Ihre nicht sensiblen JSON-Metadaten. Werden in der API-Sitzung
            gespeichert und in der Antwort zurückgegeben.
        enable_social:
          type: boolean
          default: false
          description: >-
            Wenn true, wird auch der digitale Fußabdruck der Adresse ermittelt –
            die E-Mail-, Social-, Berufs-, E-Commerce- und
            Unterhaltungsplattformen, auf denen sie registriert ist. Wird als
            eine `email_social`-Einheit pro Anfrage zusätzlich zum regulären
            Preis dieses Endpoints abgerechnet.
          example: true
    EmailRiskResponse:
      type: object
      required:
        - request_id
        - status
        - created_at
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            ID der API-Sitzung, die für diese Anfrage erstellt wurde. Speichern
            Sie sie zusammen mit `vendor_data`, wenn Sie das Ergebnis mit
            späteren Webhooks oder Konsolenaktivitäten korrelieren müssen.
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Endgültige Entscheidung für diese API-Sitzung. Normalerweise
            `Approved`; die Risikobewertung kann `In Review` oder `Declined`
            ergeben.
        vendor_data:
          type: string
          nullable: true
          description: >-
            Rückgabe der von Ihnen gesendeten `vendor_data`, `null`, wenn Sie
            keine gesendet haben.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Rückgabe der von Ihnen gesendeten `metadata`, `null`, wenn Sie keine
            gesendet haben.
        created_at:
          type: string
          format: date-time
          description: Zeitstempel dieser Antwort.
        email:
          type: object
          description: >-
            Normalisierter E-Mail-Bericht, derselbe Block wie in den Antworten
            der E-Mail-Verifizierung.
          required:
            - status
            - email
            - is_breached
            - breaches
            - is_disposable
            - is_undeliverable
          properties:
            status:
              type: string
              enum:
                - Approved
                - In Review
                - Declined
              description: >-
                Entscheidung für diese E-Mail-Adresse. Spiegelt den `status` auf
                oberster Ebene wider.
            email:
              type: string
              description: Die bewertete Adresse.
              example: alice@example.com
            is_breached:
              type: boolean
              description: >-
                Gibt an, ob die Adresse in einem bekannten Zugangsdatenleck
                vorkommt.
            breaches:
              type: array
              description: >-
                Bis zu 5 der neuesten bekannten Datenlecks, die diese Adresse
                enthalten. Leeres Array, wenn `is_breached` den Wert `false`
                hat.
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Breach-Identifikator.
                  domain:
                    type: string
                    description: >-
                      Domain des von der Sicherheitsverletzung betroffenen
                      Dienstes.
                  breach_date:
                    type: string
                    format: date
                    description: Datum, an dem der Verstoß auftrat.
                  breach_emails_count:
                    type: integer
                    description: Gesamtzahl der bei der Datenpanne offengelegten Konten.
                  description:
                    type: string
                    description: >-
                      Lesbare Beschreibung der Verletzung (kann HTML-Markup
                      enthalten).
                  logo_path:
                    type: string
                    description: >-
                      URL des Logos des von einer Datenschutzverletzung
                      betroffenen Dienstes.
                  data_classes:
                    type: array
                    items:
                      type: string
                    description: >-
                      Kategorien offengelegter Daten in snake_case (z. B.
                      `email_addresses`, `passwords`).
                  is_verified:
                    type: boolean
                    description: Gibt an, ob das Datenleck als legitim verifiziert wurde.
            is_disposable:
              type: boolean
              description: Gibt an, ob die Domain zu einem Wegwerf-E-Mail-Anbieter gehört.
            is_undeliverable:
              type: boolean
              description: Gibt an, ob die Adresse als unzustellbar ermittelt wurde.
            verification_attempts:
              type: integer
              description: OTP-Sendevorgänge für diese Adresse. `0` für Risikoabfragen.
            verified_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Wann die Adresse zuletzt über ein OTP verifiziert wurde. `null`
                bei Risikoabfragen.
            warnings:
              type: array
              description: >-
                Für diese Anfrage erfasste Risikowarnungen. Leeres Array, wenn
                keine vorhanden sind.
              items:
                $ref: '#/components/schemas/RiskWarning'
            lifecycle:
              type: array
              description: >-
                Chronologischer Audit-Trail der Anfrage. Leeres Array für
                Risikoabfragen ohne Übermittlungen.
              items:
                $ref: '#/components/schemas/RiskLifecycleEvent'
            matches:
              type: array
              description: >-
                Andere Sitzungen Ihrer Anwendung, bei denen dieselbe
                E-Mail-Adresse von einem anderen Benutzer (anderes
                `vendor_data`) verwendet wurde. Bis zu 5 Einträge. Leeres Array,
                wenn keine Treffer vorliegen.
              items:
                $ref: '#/components/schemas/EmailMatchItem'
            email_intelligence:
              $ref: '#/components/schemas/EmailIntelligence'
            enrichment:
              $ref: '#/components/schemas/EmailIntelligence'
            email_social:
              $ref: '#/components/schemas/EmailSocialFootprint'
    RiskSignals:
      type: object
      description: >-
        Optionaler Geräte- und Netzwerkkontext, der von Ihrer Anwendung
        beobachtet wird. Alle Felder sind optional. Ihre Übergabe speist die
        sitzungsübergreifende Übereinstimmungserkennung in Networks.
      properties:
        ip:
          type: string
          format: ip
          description: Für den Endbenutzer ermittelte IPv4- oder IPv6-Adresse.
          example: 192.0.2.1
        device_id:
          type: string
          maxLength: 255
          description: >-
            Stabiler Geräteidentifikator, der von Ihrer Anwendung erfasst wurde
            (Android `ANDROID_ID`, iOS `identifierForVendor`).
        device_platform:
          type: string
          enum:
            - android
            - ios
            - ipados
            - tvos
            - web
          description: Plattform des Geräts des Endbenutzers.
        device_model:
          type: string
          maxLength: 255
          description: Von Ihrer Anwendung gemeldetes Gerätemodell.
        os_version:
          type: string
          maxLength: 64
          description: Betriebssystemversion.
        app_version:
          type: string
          maxLength: 64
          description: Version Ihrer Anwendung.
        user_agent:
          type: string
          maxLength: 512
          description: User-Agent des Browsers oder der App.
    RiskWarning:
      type: object
      required:
        - feature
        - risk
        - log_type
        - short_description
        - long_description
      properties:
        feature:
          type: string
          description: Funktion, die die Warnung erzeugt hat.
        risk:
          type: string
          description: >-
            Maschinenlesbarer Risiko-Code. Neue Werte können im Laufe der Zeit
            hinzugefügt werden.
        additional_data:
          type: object
          nullable: true
          additionalProperties: true
          description: Risikospezifischer Kontext oder `null`.
        log_type:
          type: string
          enum:
            - error
            - warning
            - information
          description: Schweregrad, der von den Entscheidungsregeln verwendet wird.
        short_description:
          type: string
          description: Für Menschen lesbare einzeilige Zusammenfassung.
        long_description:
          type: string
          description: Lesbare Erklärung.
    RiskLifecycleEvent:
      type: object
      required:
        - type
        - timestamp
        - details
        - fee
      properties:
        type:
          type: string
          description: >-
            Maschinenlesbarer Ereignistyp. Neue Werte können im Laufe der Zeit
            hinzugefügt werden.
        timestamp:
          type: string
          format: date-time
          description: Wann das Ereignis stattgefunden hat.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: Ereignisspezifische Payload oder `null`.
        fee:
          type: number
          description: Für dieses Ereignis abgerechneter USD-Betrag.
    EmailMatchItem:
      type: object
      description: >-
        Eine andere Sitzung Ihrer Anwendung, die dieselbe E-Mail-Adresse mit
        abweichenden `vendor_data` verwendet hat.
      properties:
        session_id:
          type: string
          format: uuid
          description: >-
            Sitzungs-ID der anderen Verifizierung, die diese E-Mail-Adresse
            verwendet hat.
        session_number:
          type: integer
          description: Benutzerfreundliche fortlaufende Nummer dieser Sitzung.
        vendor_data:
          type: string
          nullable: true
          description: '`vendor_data` dieser Sitzung.'
        verification_date:
          type: string
          description: Wann diese Sitzung erstellt wurde (`YYYY-MM-DDTHH:MM:SSZ`).
        email:
          type: string
          description: Die übereinstimmende E-Mail-Adresse.
        status:
          type: string
          description: Status dieser Sitzung (z. B. `Approved`, `Declined`, `In Progress`).
        is_blocklisted:
          type: boolean
          description: >-
            Gibt an, ob die E-Mail-Adresse auf der Sperrliste Ihrer Anwendung
            steht.
        api_service:
          type: string
          nullable: true
          description: >-
            Für Sitzungen vom API-Typ: die eigenständige API, die sie erstellt
            hat; `null` für reguläre Verifizierungssitzungen.
        source:
          type: string
          description: >-
            Wo die Übereinstimmung gefunden wurde. Normalerweise `session`; ein
            Sperrlisten-Treffer über einen Organisationslisteneintrag verwendet
            `list_entry`.
    EmailIntelligence:
      type: object
      description: >-
        Normalisierter E-Mail-Intelligence-Block. Nur vorhanden, wenn das
        Intelligence-Add-on für diese E-Mail ausgeführt wurde; falls vorhanden,
        wird er auch als `enrichment`-Alias mit identischen Werten
        bereitgestellt.
      properties:
        score:
          type: number
          nullable: true
          description: Normalisierter Risiko-Score von 0–100. Höher ist riskanter.
        deliverable:
          type: string
          nullable: true
          description: Zustellbarkeitsbereich (z. B. `high`).
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`, `Medium` oder `High`.'
        breach_risk_index:
          type: number
          nullable: true
          description: Numerischer Breach-Risiko-Index.
        is_recent_breach:
          type: boolean
          nullable: true
          description: >-
            `true`, wenn die Adresse in einer kürzlich aufgetretenen Datenpanne
            vorkommt.
        is_frequent_breached:
          type: boolean
          nullable: true
          description: '`true`, wenn die Adresse in vielen Datenpannen vorkommt.'
        is_disposable:
          type: boolean
          nullable: true
          description: '`true`, wenn die Domain ein Wegwerf-Anbieter ist.'
        is_free_domain:
          type: boolean
          nullable: true
          description: '`true`, wenn die Domain ein Freemail-Anbieter ist.'
        is_breached:
          type: boolean
          nullable: true
          description: '`true`, wenn die Adresse in bekannten Datenpannen vorkommt.'
        no_of_breaches:
          type: number
          nullable: true
          description: Anzahl bekannter Datenlecks, die die Adresse enthalten.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Stabiler Didit-Identifikator des Signals, zum Beispiel
                  `IR-5AC67A32`. Opak: danach gruppieren und filtern, nicht
                  parsen.
              value:
                nullable: true
                description: >-
                  Für ein Risiko-Flag (beispielsweise `voip`, `leaked`,
                  `disposable`, `spam_trap`): dessen Wert: ein boolescher Wert,
                  eine Stufe oder ein Datum. Null für einen bewerteten
                  Grundcode.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: >-
                  Gibt an, ob das Signal das Risiko erhöht oder das Vertrauen
                  gestärkt hat.
              message:
                type: string
                description: Lesbare Erklärung des Signals, auf Englisch.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Wie stark das Signal den Score beeinflusst hat, zum Beispiel
                  `low`, `medium` oder `high`.
          description: >-
            Signale, die den Score erklären, jeweils mit einem stabilen
            Didit-Code, einer Richtung, einer Nachricht und einer
            Auswirkungsstufe. Im Laufe der Zeit können neue Codes hinzukommen;
            weisen Sie unbekannte Codes daher nicht ab.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        Social Footprint der E-Mail-Adresse: die Online-Plattformen, auf denen
        sie registriert ist. Nur vorhanden, wenn `enable_social` gesetzt war und
        die Prüfung abgeschlossen wurde. Jeder Zähler kann null sein, wenn dafür
        keine Daten zurückgegeben wurden. `profiles_registered: 0` bedeutet,
        dass die Plattformen geprüft wurden und die E-Mail-Adresse auf keiner
        davon gefunden wurde – eine gültige, abrechenbare Antwort und ein
        häufiges Signal für eine synthetische Identität.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: >-
            Plattformen, bei denen die E-Mail-Adresse nachweislich registriert
            ist.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Auf Registrierung geprüfte Plattformen.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Plattformen, die einen zugehörigen Namen zurückgegeben haben.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Plattformen, die ein Profilfoto zurückgegeben haben.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Kommunikationsplattformen mit erkannter Präsenz.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Unterschiedliche Plattformkategorien mit erkannter Präsenz.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Zusammengesetzter Indikator für digitale Reife, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indikator für die Profilreichhaltigkeit, 0–10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Mix aus kostenlosen vs. kostenpflichtigen Plattformen, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registrierungen auf kostenlosen Plattformen.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registrierungen auf rein kostenpflichtigen Plattformen.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registrierungen auf Freemium-Plattformen.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: >-
            Vollständigkeit des WhatsApp-Profils. Nur für Telefonnummern; null
            für E-Mail-Adressen.
          example: Partial
        registered_platforms:
          type: array
          description: Plattformen, bei denen eine Registrierung bestätigt ist.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Geprüfte Plattformen mit negativem Ergebnis.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Anzahl der Registrierungen und Verhältnis pro Plattformkategorie.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Profildetails pro Plattform, geschlüsselt nach Plattform, sofern die
            Plattform diese bereitstellt.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Plattform-Identifikator.
          example: whatsapp
        category:
          type: string
          description: >-
            Plattformkategorie, z. B. MESSAGING, SOCIAL_MEDIA, ECOMMERCE,
            PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            `global` für weltweite Plattformen, `local` für regionsspezifische
            Plattformen.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: >-
            Plattformen in dieser Kategorie, bei denen eine Registrierung
            bestätigt ist.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Anteil der geprüften Plattformen der Kategorie mit einer
            Registrierung, 0.0-1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Profilname, sofern die Plattform diesen bereitstellt.
        photo:
          type: string
          nullable: true
          description: Profilfoto-URL, sofern die Plattform diese bereitstellt.
        about:
          type: string
          nullable: true
          description: Profil-Info-/Bio-Text, sofern die Plattform diesen bereitstellt.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Profilsichtbarkeit, sofern die Plattform diese bereitstellt.
        business_account:
          type: boolean
          nullable: true
          description: >-
            Gibt an, ob das Profil ein Geschäftskonto ist, sofern die Plattform
            dies bereitstellt.
  responses:
    EmailRiskValidationError:
      description: Validierung der Anfrage fehlgeschlagen.
      content:
        application/json:
          examples:
            Missing email:
              summary: Fehlende E-Mail-Adresse
              value:
                email:
                  - This field is required.
            Invalid email:
              summary: Ungültige E-Mail
              value:
                email:
                  - Enter a valid email address.
            Invalid country hint:
              summary: Ungültiger Länderhinweis
              value:
                country_code:
                  - Ensure this field has no more than 3 characters.
    RiskPermissionDenied:
      description: >-
        Der API-Schlüssel fehlt oder ist ungültig, oder die Organisation kann
        die Live-Abfrage nicht abdecken. Diese API gibt niemals `401` zurück.
      content:
        application/json:
          examples:
            Missing or invalid API key:
              summary: >-
                Kein `x-api-key`-Header, oder der Schlüssel ist ungültig oder
                widerrufen
              value:
                detail: You do not have permission to perform this action.
            Not enough credits:
              summary: >-
                Das Guthaben der Organisation reicht für den Preis der Abfrage
                nicht aus
              value:
                error: You don't have enough credits to perform this request.
    RateLimitedWrite:
      description: >-
        Das geteilte Schreiblimit von 300 Anfragen pro Minute pro API-Schlüssel
        wurde überschritten. Beachten Sie `Retry-After`, bevor Sie es erneut
        versuchen.
      content:
        application/json:
          schema:
            type: object
            required:
              - detail
            properties:
              detail:
                type: string
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
  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.

````

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