
# Récupérer un domaine d'envoi d'e-mails

`GET /v1/email-sender-domains/{sender_domain_id}` · autorisation `email-sender-domains:read` · tous les forfaits

Renvoie un domaine d'envoi : son statut, les résultats de la dernière vérification DNS et les enregistrements DNS à publier. L'en-tête `ETag` contient la version ; envoyez-la dans `If-Match` lorsque vous [supprimez](delete.md) le domaine.

## Requête

| Champ | Type | Requis | Description |
|---|---|---|---|
| `sender_domain_id` | string | oui | Identifiant du domaine d'envoi (`sdom_…`). |

Aucun corps de requête.

## Réponse

`200 OK` avec le domaine d'envoi et `ETag` défini sur sa version.

| Champ | Type | Description |
|---|---|---|
| `id` | string | Identifiant du domaine d'envoi (`sdom_…`). |
| `domain` | string | Le domaine sous forme de A-label IDNA 2008, en minuscules, sans point final. |
| `status` | string | `pending_dns` (en attente des enregistrements DNS), `verified` (prêt à envoyer), `degraded` (les enregistrements échouent depuis 72 heures ; l'environnement est revenu à l'envoi de la plateforme) ou `disabled` (désactivé par la plateforme). |
| `active_selector` | string | Sélecteur DKIM utilisé pour la signature : `akp1` ou `akp2`. |
| `dkim_status` | string or null | Dernière vérification des deux CNAME DKIM (le pire des deux) : `ok`, `missing`, `wrong_target` ou `lookup_failed` ; null avant la première vérification. |
| `return_path_status` | string or null | Dernière vérification du CNAME return-path, mêmes codes ; null avant la première vérification. |
| `dmarc_alignment` | string or null | Résultat DMARC de la dernière vérification : `aligned`, `not_aligned`, `no_record`, `invalid_record` ou `lookup_failed`. DMARC n'est pas obligatoire. |
| `last_checked_at` | string or null | Date de la dernière vérification. |
| `failing_since` | string or null | Première vérification échouée d'un domaine `verified` ; à 72 heures, le domaine passe à `degraded`. |
| `degraded_since` | string or null | Date à laquelle le domaine est passé à `degraded`. |
| `records` | array | Enregistrements DNS à publier : `type` (`CNAME` ou `TXT`), `name`, `value` et `required`. Les deux CNAME DKIM et le CNAME return-path sont obligatoires ; lorsque la dernière vérification n'a trouvé aucun enregistrement `_dmarc`, une suggestion DMARC (`v=DMARC1; p=none`) est ajoutée avec `required: false`. |
| `version` | integer | Version du domaine, identique à l'`ETag` ; elle augmente à chaque écriture, vérifications comprises. |
| `created_at` | string | Date de création. |
| `updated_at` | string | Date de la dernière modification. |

```json
{
  "id": "sdom_01k7r9m3q5t8v2w4x6y8z0a2b4",
  "domain": "mail.example.com",
  "status": "pending_dns",
  "active_selector": "akp1",
  "dkim_status": null,
  "return_path_status": null,
  "dmarc_alignment": null,
  "last_checked_at": null,
  "failing_since": null,
  "degraded_since": null,
  "records": [
    {
      "type": "CNAME",
      "name": "akp1._domainkey.mail.example.com",
      "value": "akp1.sdom_01k7r9m3q5t8v2w4x6y8z0a2b4.dkim.eu.keenauth.app",
      "required": true
    },
    {
      "type": "CNAME",
      "name": "akp2._domainkey.mail.example.com",
      "value": "akp2.sdom_01k7r9m3q5t8v2w4x6y8z0a2b4.dkim.eu.keenauth.app",
      "required": true
    },
    {
      "type": "CNAME",
      "name": "rp.mail.example.com",
      "value": "rp.eu.mail.keenauth.app",
      "required": true
    }
  ],
  "version": 1,
  "created_at": "2026-10-19T09:00:00Z",
  "updated_at": "2026-10-19T09:00:00Z"
}
```

## Erreurs

| HTTP | code | Quand |
|---|---|---|
| 404 | `not_found` | Le domaine d'envoi n'existe pas, appartient à un autre environnement ou l'identifiant est mal formé. |
| 401 | `unauthenticated` | L'identifiant est absent, invalide ou révoqué. |
| 403 | `insufficient_permissions` | L'identifiant ne dispose pas de l'autorisation requise. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; réessayez après la période indiquée par `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez après la période indiquée par `Retry-After`. |

## Exemple

```bash
curl https://api.eu.keenauth.com/v1/email-sender-domains/sdom_01k7r9m3q5t8v2w4x6y8z0a2b4 \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI : `keenauth email-sender-domains get sdom_01k7r9m3q5t8v2w4x6y8z0a2b4`
