Ajouter une adresse e-mail secondaire non vérifiée à un utilisateur
POST /v1/users/{user_id}/emails · autorisation users:write
Ajoute à l'utilisateur une adresse e-mail secondaire non vérifiée. L'adresse est normalisée avant d'être stockée. Si l'utilisateur possède déjà la même adresse, aucune ligne n'est écrite et la ligne existante est renvoyée (elle peut être vérifiée ou principale), de sorte que répéter la requête est sans risque. Une nouvelle ligne est écrite dans le journal d'audit de gestion sous user.email_added, avec la clé d'API comme auteur ; l'adresse elle-même n'est pas écrite dans l'enregistrement d'audit. Pour vérifier l'adresse, envoyez un e-mail de vérification avec POST /v1/users/{user_id}/emails/{email_id}:send-verification ou marquez-la comme vérifiée avec :verify.
Requête
| Paramètre | Dans | Obligatoire | Description |
|---|---|---|---|
user_id |
path | oui | Identifiant de l'utilisateur, préfixé usr_. |
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
email |
string | oui | L'adresse, au plus 320 caractères. |
Réponse
201 Created avec la ligne d'e-mail. Sans l'autorisation users:read_pii, l'adresse est masquée (a***@e***.com).
{
"id": "0191f0a0-3333-7444-8555-666666666666",
"email": "ada@example.com",
"verified": false,
"primary": false,
"created_at": "2026-01-15T09:30:00Z"
}
Erreurs
Chaque erreur est un corps application/problem+json avec un code stable.
| HTTP | code |
Quand |
|---|---|---|
| 400 | malformed_request, unknown_field |
Le corps n'est pas du JSON valide ou contient un champ inconnu. |
| 409 | conflict |
L'adresse est vérifiée sur un autre utilisateur de cet environnement (errors[] : /email, email_taken). |
| 409 | email_limit_reached |
L'utilisateur possède déjà 10 adresses. |
| 415 | unsupported_media_type |
Le corps a été envoyé sans Content-Type: application/json. |
| 422 | validation_failed |
email est absent, vide, dépasse 320 caractères, n'est pas une adresse valide ou a un type incorrect. |
| 404 | not_found |
L'utilisateur n'existe pas dans cet environnement, est en cours de suppression, ou l'identifiant est mal formé. |
| 401 | unauthenticated |
La clé d'API est absente, invalide ou révoquée. |
| 403 | insufficient_permissions |
La clé ne dispose pas de l'autorisation users:write. |
| 429 | rate_limited |
La limite de débit a été dépassée ; respectez Retry-After. |
| 503 | service_unavailable |
Une dépendance est temporairement indisponible ; réessayez plus tard. |
Exemple
curl -X POST https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/emails \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "ada@example.com"}'
Données personnelles
Cet endpoint traite des données personnelles : le profil de l'utilisateur final. Données personnelles dans les API KeenAuth décrit ce qui est stocké, combien de temps il est conservé et comment il est supprimé. N'envoyez de données personnelles sensibles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.