
# Ajouter une adresse e-mail

`POST /fapi/v1/me/emails` · appelé depuis l'hôte de connexion de l'environnement

Ajoute une adresse e-mail à l'utilisateur authentifié, en tant qu'adresse non vérifiée et non principale, et envoie à cette adresse un lien de vérification. L'adresse devient utilisable une fois que l'utilisateur ouvre le lien. Chaque requête acceptée reçoit une réponse `202` sans corps, y compris lorsque l'adresse fait déjà partie des adresses de cet utilisateur ; la réponse ne révèle jamais si l'adresse est utilisée sur un autre compte. Un utilisateur détient au maximum 10 adresses, la principale comprise. Nécessite le cookie `__Host-idp_session` de l'utilisateur authentifié ; si le cookie est absent, expiré ou révoqué, renvoie `401 unauthenticated`. Une application propriétaire sur une autre origine peut à la place envoyer son jeton d'accès à l'API frontale (`Authorization: DPoP <token>` avec une preuve DPoP ; voir [Jeton d'accès à l'API frontale](/docs/api/fapi/front-api-token)).

La session doit avoir été vérifiée au cours des 5 dernières minutes. Si l'utilisateur possède un second facteur, la session doit également avoir été ouverte avec un second facteur (`urn:idp:acr:mfa`).

## Requête

En-têtes :

| En-tête | Obligatoire | Description |
| --- | --- | --- |
| `Idp-Client` | oui | Identifiant du SDK. |
| `Origin` | oui | Doit être exactement `https://<hôte de connexion>`. |
| `Content-Type` | oui | `application/json`. |

Corps :

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `email` | string | oui | L'adresse à ajouter (320 caractères au maximum). |

## Réponse

`202 Accepted`, sans corps.

## Erreurs

| Statut | Code | Quand |
| --- | --- | --- |
| 400 | `malformed_request` | Le corps n'est pas du JSON valide. |
| 400 | `unknown_field` | Le corps contient un champ autre que `email`. |
| 401 | `unauthenticated` | Aucun cookie de session valide. |
| 401 | `step_up_required` | La session n'a pas été vérifiée au cours des 5 dernières minutes ou un second facteur est requis ; vérifiez à nouveau avec `max_age=300` (et, le cas échéant, `acr_values`) dans l'en-tête `WWW-Authenticate`. |
| 403 | `origin_not_allowed` | `Origin` est absent ou incorrect. |
| 409 | `email_limit_reached` | L'utilisateur possède déjà 10 adresses e-mail. |
| 413 | `payload_too_large` | Le corps est trop volumineux. |
| 415 | `unsupported_media_type` | `Content-Type` n'est pas `application/json`. |
| 422 | `validation_failed` | `email` est absent. |
| 422 | `email_invalid` | `email` n'est pas une adresse e-mail valide. |
| 422 | `email_domain_not_allowed` | L'environnement n'autorise pas les adresses de ce domaine. |
| 429 | `verification_rate_limited` | Trop de messages de vérification ont été envoyés récemment ; réessayez plus tard. |

## Exemple

```bash
curl -X POST https://example.keenauth.app/fapi/v1/me/emails \
  -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": "ada@example.org"}'
```

## Données personnelles

Ce point de terminaison traite des données personnelles : profil de l'utilisateur final. [Données personnelles dans les API KeenAuth](/docs/policies/personal-data) décrit ce qui est stocké, pendant combien de temps et comment elles sont supprimées. N'envoyez aucune catégorie particulière de données personnelles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.
