
# Bestätigungscode senden

`POST /fapi/v1/verifications` · wird vom Anmelde-Host der Umgebung aufgerufen

Sendet eine Nachricht mit einem 6-stelligen Code und einem Bestätigungslink an eine der nicht bestätigten E-Mail-Adressen des angemeldeten Benutzers und gibt die ID des Codeversuchs zurück. Der Benutzer gibt den Code mit [Bestätigungscode eingeben](/docs/api/fapi/verifications/attempt) ein oder öffnet den Link. Beide sind 10 Minuten gültig. Eine neue Nachricht ersetzt die offene Bestätigung der Adresse: Code und Link einer früheren Nachricht funktionieren nicht mehr. Eine erneute Authentifizierung ist nicht erforderlich, da nur das Postfach der Adresse den Code erhält. Erforderlich ist das Cookie `__Host-idp_session` des angemeldeten Benutzers; fehlt das Cookie, ist es abgelaufen oder widerrufen, wird `401 unauthenticated` zurückgegeben. Eine Erstanbieter-Anwendung auf einem anderen Ursprung kann stattdessen ihr Front-API-Zugriffstoken senden (`Authorization: DPoP <token>` mit einem DPoP-Nachweis; siehe [Front-API-Zugriffstoken](/docs/api/fapi/front-api-token)).

## Anfrage

Header:

| Header | Erforderlich | Beschreibung |
| --- | --- | --- |
| `Idp-Client` | ja | SDK-Kennung. |
| `Origin` | ja | Muss genau `https://<sign-in host>` sein. |
| `Content-Type` | ja | `application/json`. |

Body:

| Feld | Typ | Erforderlich | Beschreibung |
| --- | --- | --- | --- |
| `email_id` | string (UUID) | ja | Die `id` der Adresse aus [E-Mail-Adressen auflisten](/docs/api/fapi/me/emails/list). |

## Antwort

`202 Accepted`:

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `id` | string (UUID) | Die ID des Codeversuchs, die im `:attempt`-Pfad verwendet wird. Sie ist kein Geheimnis. |
| `expires_at` | string (RFC 3339) | Zeitpunkt, zu dem Code und Link ungültig werden. |

```json
{"id": "0190a5c4-1b2c-7d3e-8f40-5162738400ff", "expires_at": "2026-10-12T10:10:00Z"}
```

## Fehler

| Status | Code | Wann |
| --- | --- | --- |
| 400 | `malformed_request` | Der Body ist kein gültiges JSON. |
| 400 | `unknown_field` | Der Body enthält ein anderes Feld als `email_id`. |
| 401 | `unauthenticated` | Kein gültiges Sitzungs-Cookie. |
| 403 | `origin_not_allowed` | `Origin` fehlt oder ist falsch. |
| 404 | `not_found` | `email_id` ist keine der Adressen des Benutzers. |
| 409 | `conflict` | Die Adresse ist bereits bestätigt. |
| 413 | `payload_too_large` | Der Body ist zu groß. |
| 415 | `unsupported_media_type` | `Content-Type` ist nicht `application/json`. |
| 422 | `validation_failed` | `email_id` fehlt. |
| 429 | `verification_rate_limited` | In der letzten Stunde wurden an diese Adresse 5 Bestätigungsnachrichten gesendet, einschließlich der Nachricht beim Hinzufügen; versuchen Sie es später erneut. |

## Beispiel

```bash
curl -X POST https://example.keenauth.app/fapi/v1/verifications \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{"email_id": "0190a5c4-1b2c-7d3e-8f40-516273849abc"}'
```

## Personenbezogene Daten

Dieser Endpunkt verarbeitet personenbezogene Daten: Profil des Endbenutzers. [Personenbezogene Daten in den KeenAuth-APIs](/docs/policies/personal-data) beschreibt, welche Daten gespeichert werden, wie lange sie aufbewahrt und wie sie gelöscht werden. Senden Sie in keinem Feld besondere Kategorien personenbezogener Daten (Gesundheit, biometrische Daten, Religion, politische Meinungen, sexuelle Orientierung).
