# Domaines API

> Ajoutez des domaines d’envoi, consultez leurs enregistrements DNS et leur statut de vérification, et vérifiez-les.

URL de base : `https://api.emailit.com/v2`. Authentifiez-vous avec `Authorization: Bearer <API key>`.

## Créer un domaine — POST /domains

> Ajoutez un domaine d’envoi à l’espace de travail et obtenez les enregistrements DNS SPF, DKIM, return-path, DMARC, de suivi et de réception à publier avant de le vérifier.

# Créer un domaine

Ajoute un domaine d’envoi et renvoie les enregistrements DNS à publier.

`POST /domains`

Nécessite une clé API `full`. Emailit génère une clé DKIM de 2 048 bits pour le domaine. Publiez les enregistrements de `dns_records` chez votre fournisseur DNS, puis appelez [Vérifier un domaine](/fr/docs/api-reference/domains/verify/). Vous pouvez envoyer depuis le domaine une fois qu’il est vérifié. Consultez [Ajouter un domaine](/fr/docs/domains/add-a-domain/) et [Enregistrements DNS](/fr/docs/domains/dns-records/).

Le nombre de domaines dépend de votre forfait : 3 sur Pay as you go (25 après votre premier achat de crédits), 100 sur Pro et 1 000 sur Business. Déclenche l’événement `domain.created`.

## Paramètres du corps

- `name` (string, obligatoire): Le domaine depuis lequel envoyer, par exemple `acme.com` ou `mail.acme.com`, sans `http://`, `https://` ni `www.`. Enregistré en minuscules. Vos adresses `from` doivent utiliser exactement ce domaine.

- `tracking_key` (string): Le nom du sous-domaine utilisé pour le CNAME de suivi des ouvertures et des clics. Vaut `go` par défaut, ce qui donne `go.acme.com`. Lettres, chiffres et traits d’union.

- `inbound_key` (string): Le nom du sous-domaine utilisé pour la réception des e-mails. Vaut `inbound` par défaut, ce qui donne `inbound.acme.com`. Lettres, chiffres et traits d’union.

- `dmarc_reports` (boolean): Collecte les rapports DMARC du domaine. Emailit crée une adresse de réception des rapports et l’ajoute à l’enregistrement DMARC suggéré. Disponible sur les forfaits Pro, Business et Custom. Consultez [DMARC](/fr/docs/dmarc/).

- `track_loads` (boolean): Doit valoir `false` à la création d’un domaine. Activez le suivi avec [Mettre à jour un domaine](/fr/docs/api-reference/domains/update/) une fois le CNAME de suivi vérifié.

- `track_clicks` (boolean): Comme `track_loads`, pour le suivi des clics.

Les anciens indicateurs `outgoing`, `incoming` et `use_for_any` sont acceptés pour compatibilité et n’ont aucun effet.

## Réponse

Renvoie `201` avec l’[objet domaine](/fr/docs/api-reference/domains/get/), `dns_records` compris. Un nouveau domaine a le statut `pending`, ou `pending_review` sur Pay as you go jusqu’à sa première vérification DNS.

**Requête** `POST /domains`

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

const domain = await emailit.domains.create({ name: 'acme.com' });
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

domain = client.domains.create({"name": "acme.com"})
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$domain = $emailit->domains()->create(['name' => 'acme.com']);
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

domain = client.domains.create(name: "acme.com")
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"

client := emailit.NewClient("your_api_key")

domain, err := client.Domains.Create(&emailit.CreateDomainRequest{Name: "acme.com"})
```

**Rust**

```rust
use emailit::Emailit;

let emailit = Emailit::new("your_api_key");

let domain = emailit.domains.create(emailit::types::CreateDomainParams::new("acme.com")).await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;

EmailitClient emailit = new EmailitClient("your_api_key");

EmailitObject domain = emailit.domains().create(DomainCreateParams.builder().setName("acme.com").build());
```

**.NET**

```csharp
using Emailit;

var emailit = new EmailitClient("your_api_key");

var domain = emailit.Domains.Create(new DomainCreateOptions { Name = "acme.com" });
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

$domain = Emailit::domains()->create(['name' => 'acme.com']);
```

**cURL**

```bash
curl https://api.emailit.com/v2/domains \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "acme.com"}'
```

**cURL**

```bash
curl https://api.emailit.com/v2/domains \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "acme.com",
    "tracking_key": "links",
    "inbound_key": "reply",
    "dmarc_reports": true
  }'
```

**201**

```json
{
  "object": "domain",
  "id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
  "name": "acme.com",
  "verification_token": "vt_4KY8weirBN9sxnfbIt78tsFWteY",
  "verification_method": "dns",
  "verified_at": null,
  "manually_verified_at": null,
  "manual_review_required": false,
  "verification_status": "pending",
  "dkim_identifier_string": "emailit",
  "dns_checked_at": null,
  "spf_status": "pending",
  "spf_error": null,
  "dkim_status": "pending",
  "dkim_error": null,
  "mx_status": "pending",
  "mx_error": null,
  "return_path_status": "pending",
  "return_path_error": null,
  "dmarc_status": "pending",
  "dmarc_error": null,
  "tracking_status": "pending",
  "tracking_error": null,
  "tracking_key": null,
  "inbound_status": "pending",
  "inbound_error": null,
  "inbound_key": null,
  "track_loads": 0,
  "track_clicks": 0,
  "dmarc_reports": false,
  "dmarc_address": null,
  "created_at": "2026-10-01T09:12:03.551208Z",
  "updated_at": "2026-10-01T09:12:03.551208Z",
  "dns_records": [
    {
      "required": true,
      "type": "MX",
      "name": "emailit.acme.com",
      "value": "feedback-smtp.ffdc-1.emailit.com",
      "priority": 10,
      "ttl": "auto",
      "status": "pending",
      "error": null
    },
    {
      "required": true,
      "type": "TXT",
      "name": "emailit.acme.com",
      "value": "v=spf1 include:_spf.emailit.com ~all",
      "priority": null,
      "ttl": "auto",
      "status": "pending",
      "error": null
    },
    {
      "required": true,
      "type": "TXT",
      "name": "emailit._domainkey.acme.com",
      "value": "v=DKIM1; t=s; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3kQ...IDAQAB;",
      "priority": null,
      "ttl": "auto",
      "status": "pending",
      "error": null
    },
    {
      "required": false,
      "type": "TXT",
      "name": "_dmarc.acme.com",
      "value": "v=DMARC1; p=none;",
      "priority": null,
      "ttl": "auto",
      "status": "pending",
      "error": null
    },
    {
      "required": false,
      "type": "CNAME",
      "name": "go.acme.com",
      "value": "go.emailitmail.com",
      "priority": null,
      "ttl": "auto",
      "status": "pending",
      "error": null
    },
    {
      "required": false,
      "type": "MX",
      "name": "inbound.acme.com",
      "value": "inbound.emailitmail.com",
      "priority": 10,
      "ttl": "auto",
      "status": "pending",
      "error": null
    }
  ]
}
```

**400**

```json
{
  "error": "The domain must be in apex format (e.g., domain.com) without http://, https://, or www."
}
```

**403**

```json
{
  "error": "plan_required",
  "required_plan": "pro"
}
```

**409**

```json
{
  "error": "Domain with this name already exists",
  "existing": {
    "object": "domain",
    "id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
    "name": "acme.com"
  }
}
```

**422 Limite**

```json
{
  "error": "Pay as you go includes 3 domain(s)."
}
```

**422 Suivi**

```json
{
  "error": "Tracking requires a verified custom CNAME. New messages are not rewritten to a shared tracking URL."
}
```

---
Source: https://emailit.com/fr/docs/api-reference/domains/create/

## Récupérer un domaine — GET /domains/{id}

> Récupérez un domaine d’envoi par son ID ou son nom, avec son statut de vérification, le statut de chaque enregistrement DNS et les enregistrements à publier.

# Récupérer un domaine

Récupère un domaine d’envoi avec son statut de vérification et ses enregistrements DNS.

`GET /domains/{id}`

Nécessite une clé API `full`. Les statuts des enregistrements reflètent la dernière vérification DNS, exécutée lorsque vous appelez [Vérifier un domaine](/fr/docs/api-reference/domains/verify/) et automatiquement une fois par jour.

## Paramètres de chemin

- `id` (string, obligatoire): L’ID du domaine (`dom_…`, ou `sd_…` et `sed_…` pour les domaines plus anciens) ou le nom de domaine, par exemple `acme.com`.

## Réponse

Renvoie l’objet domaine.

- `object` (string): Toujours `domain`.

- `id` (string): L’ID du domaine.

- `name` (string): Le nom de domaine.

- `verification_status` (string): `verified` lorsque le domaine peut envoyer. `pending` tant que SPF, DKIM ou le return-path ne sont pas encore corrects. `pending_review` sur Pay as you go lorsque le domaine doit faire l’objet d’un examen manuel par Emailit avant de pouvoir être vérifié, par exemple parce qu’il a été enregistré il y a moins de 30 jours.

- `verified_at` (string | null): Date de la dernière vérification DNS réussie, ou `null` si le domaine n’est pas vérifié. Une vérification en échec réinitialise ce champ.

- `manual_review_required` (boolean): Indique si le domaine attend l’examen manuel d’Emailit.

- `manually_verified_at` (string | null): Date à laquelle Emailit a approuvé manuellement le domaine, ou `null`.

- `dns_checked_at` (string | null): Date de la dernière vérification des enregistrements DNS.

- `spf_status, dkim_status, return_path_status` (string): Statut des trois enregistrements obligatoires : `pending` (pas encore vérifié), `ok`, `missing` ou `invalid`. Les trois doivent être `ok` pour que le domaine soit vérifié.

- `mx_status` (string): Identique à `return_path_status`.

- `dmarc_status` (string): Statut de l’enregistrement DMARC : `pending`, `ok`, `missing`, `invalid` ou `error`. Facultatif pour la vérification.

- `tracking_status` (string): Statut du CNAME de suivi. Doit être `ok` avant que vous puissiez activer le suivi.

- `inbound_status` (string): Statut de l’enregistrement MX de réception. Nécessaire pour [recevoir des e-mails](/fr/docs/inbound/) sur le domaine.

- `spf_error, dkim_error, mx_error, return_path_error, dmarc_error, tracking_error, inbound_error` (string | null): Le problème détecté sur chaque enregistrement après une vérification en échec, ou `null`.

- `tracking_key` (string | null): Le nom du sous-domaine de suivi, ou `null` pour la valeur par défaut `go`.

- `inbound_key` (string | null): Le nom du sous-domaine de réception, ou `null` pour la valeur par défaut `inbound`.

- `track_loads` (integer): `1` si le suivi des ouvertures est activé par défaut pour les e-mails de ce domaine, `0` sinon.

- `track_clicks` (integer): `1` si le suivi des clics est activé par défaut, `0` sinon.

- `dmarc_reports` (boolean): Indique si Emailit collecte les rapports DMARC du domaine.

- `dmarc_address` (string | null): L’adresse qui reçoit les rapports DMARC, ou `null` lorsque `dmarc_reports` est désactivé.

- `verification_token, verification_method, dkim_identifier_string` (string): Détails internes de vérification. `verification_method` vaut `dns` et `dkim_identifier_string` est le sélecteur DKIM, `emailit`.

- `created_at, updated_at` (string): Date d’ajout et de dernière modification du domaine.

- `dns_records` (object[]): Les enregistrements à publier. Chacun comporte `type` (`MX`, `TXT` ou `CNAME`), `name`, `value`, `priority` (pour les enregistrements MX), `ttl` (`auto`), `required` (indique s’il est nécessaire à la vérification), ainsi que son `status` et son `error` actuels.

| Enregistrement | Type | Nom | Valeur | Obligatoire |
| --- | --- | --- | --- | --- |
| Return-path | MX | `emailit.acme.com` | `feedback-smtp.ffdc-1.emailit.com`, priorité 10 | Oui |
| SPF | TXT | `emailit.acme.com` | `v=spf1 include:_spf.emailit.com ~all` | Oui |
| DKIM | TXT | `emailit._domainkey.acme.com` | `v=DKIM1; t=s; h=sha256; p=…` | Oui |
| DMARC | TXT | `_dmarc.acme.com` | `v=DMARC1; p=none;`, plus les adresses de rapport lorsque `dmarc_reports` est activé | Non |
| Suivi | CNAME | `go.acme.com` | `go.emailitmail.com` | Non |
| Réception | MX | `inbound.acme.com` | `inbound.emailitmail.com`, priorité 10 | Non |

**Requête** `GET /domains/{id}`

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

const domain = await emailit.domains.get('dom_4K468YrjOkR1wwdhqiO0G9XEUey');
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

domain = client.domains.get("dom_4K468YrjOkR1wwdhqiO0G9XEUey")
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$domain = $emailit->domains()->get('dom_4K468YrjOkR1wwdhqiO0G9XEUey');
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

domain = client.domains.get("dom_4K468YrjOkR1wwdhqiO0G9XEUey")
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"
client := emailit.NewClient("your_api_key")

domain, err := client.Domains.Get("dom_4K468YrjOkR1wwdhqiO0G9XEUey")
```

**Rust**

```rust
use emailit::Emailit;

let emailit = Emailit::new("your_api_key");

let domain = emailit.domains.get("dom_4K468YrjOkR1wwdhqiO0G9XEUey").await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;

EmailitClient emailit = new EmailitClient("your_api_key");

EmailitObject domain = emailit.domains().get("dom_4K468YrjOkR1wwdhqiO0G9XEUey");
```

**.NET**

```csharp
using Emailit;

var emailit = new EmailitClient("your_api_key");

var domain = emailit.Domains.Get("dom_4K468YrjOkR1wwdhqiO0G9XEUey");
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

$domain = Emailit::domains()->get('dom_4K468YrjOkR1wwdhqiO0G9XEUey');
```

**cURL**

```bash
curl https://api.emailit.com/v2/domains/dom_4K468YrjOkR1wwdhqiO0G9XEUey \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**200**

```json
{
  "object": "domain",
  "id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
  "name": "acme.com",
  "verification_token": "vt_4KY8weirBN9sxnfbIt78tsFWteY",
  "verification_method": "dns",
  "verified_at": "2026-10-01T03:00:12.000000Z",
  "manually_verified_at": null,
  "manual_review_required": false,
  "verification_status": "verified",
  "dkim_identifier_string": "emailit",
  "dns_checked_at": "2026-10-01T03:00:12.000000Z",
  "spf_status": "ok",
  "spf_error": null,
  "dkim_status": "ok",
  "dkim_error": null,
  "mx_status": "ok",
  "mx_error": null,
  "return_path_status": "ok",
  "return_path_error": null,
  "dmarc_status": "ok",
  "dmarc_error": null,
  "tracking_status": "ok",
  "tracking_error": null,
  "tracking_key": null,
  "inbound_status": "invalid",
  "inbound_error": "queryMx ENOTFOUND inbound.acme.com",
  "inbound_key": null,
  "track_loads": 1,
  "track_clicks": 1,
  "dmarc_reports": true,
  "dmarc_address": "4KXUJdXRVlVgbkWQm4GHLy8BleP@dmarc.emailitmail.com",
  "created_at": "2026-09-14T08:02:51.000000Z",
  "updated_at": "2026-10-01T03:00:12.000000Z",
  "dns_records": [
    {
      "required": true,
      "type": "MX",
      "name": "emailit.acme.com",
      "value": "feedback-smtp.ffdc-1.emailit.com",
      "priority": 10,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": true,
      "type": "TXT",
      "name": "emailit.acme.com",
      "value": "v=spf1 include:_spf.emailit.com ~all",
      "priority": null,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": true,
      "type": "TXT",
      "name": "emailit._domainkey.acme.com",
      "value": "v=DKIM1; t=s; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3kQ...IDAQAB;",
      "priority": null,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": false,
      "type": "TXT",
      "name": "_dmarc.acme.com",
      "value": "v=DMARC1; p=none; rua=mailto:4KXUJdXRVlVgbkWQm4GHLy8BleP@dmarc.emailitmail.com; ruf=mailto:4KXUJdXRVlVgbkWQm4GHLy8BleP@dmarc.emailitmail.com;",
      "priority": null,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": false,
      "type": "CNAME",
      "name": "go.acme.com",
      "value": "go.emailitmail.com",
      "priority": null,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": false,
      "type": "MX",
      "name": "inbound.acme.com",
      "value": "inbound.emailitmail.com",
      "priority": 10,
      "ttl": "auto",
      "status": "invalid",
      "error": "queryMx ENOTFOUND inbound.acme.com"
    }
  ]
}
```

**404**

```json
{
  "error": "Domain not found"
}
```

---
Source: https://emailit.com/fr/docs/api-reference/domains/get/

## Vérifier un domaine — POST /domains/{id}/verify

> Vérifiez immédiatement les enregistrements DNS d’un domaine d’envoi et mettez à jour son statut de vérification. SPF, DKIM et le return-path doivent être validés avant que vous puissiez envoyer.

# Vérifier un domaine

Interroge immédiatement les enregistrements DNS du domaine, enregistre le résultat et renvoie le domaine avec ses nouveaux statuts.

`POST /domains/{id}/verify`

Nécessite une clé API `full`. Appelez-le après avoir publié les enregistrements fournis par [Créer un domaine](/fr/docs/api-reference/domains/create/), puis chaque fois que vous les modifiez. La propagation des modifications DNS peut prendre un certain temps : si un enregistrement affiche `missing`, patientez quelques minutes et relancez.

Le domaine passe à `verified` lorsque les trois enregistrements obligatoires sont `ok` :

- **SPF :** un enregistrement TXT sur `emailit.<domain>` qui inclut `_spf.emailit.com`.
- **DKIM :** un enregistrement TXT sur `emailit._domainkey.<domain>` contenant la clé publique du domaine.
- **Return-path :** un seul enregistrement MX sur `emailit.<domain>` pointant vers `feedback-smtp.ffdc-1.emailit.com`.

Sur Pay as you go, un domaine enregistré il y a moins de 30 jours obtient plutôt `pending_review`, et Emailit l’examine manuellement. Les enregistrements DMARC, de suivi et de réception sont également vérifiés, mais n’ont pas d’incidence sur la vérification.

Emailit revérifie également chaque domaine une fois par jour. Si un enregistrement obligatoire n’est plus valide, le domaine n’est plus vérifié, les envois depuis ce domaine échouent et le propriétaire de l’espace de travail reçoit un e-mail. Consultez [Vérification des domaines](/fr/docs/domains/verification/).

## Paramètres de chemin

- `id` (string, obligatoire): L’ID du domaine ou le nom de domaine.

## Réponse

Renvoie l’[objet domaine](/fr/docs/api-reference/domains/get/) avec le résultat de cette vérification dans `verification_status`, dans chaque champ `*_status` et `*_error`, et dans `dns_records`. Cette réponse n’inclut pas `dmarc_reports` ni `dmarc_address` ; lisez-les avec [Récupérer un domaine](/fr/docs/api-reference/domains/get/).

**Requête** `POST /domains/{id}/verify`

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

const domain = await emailit.domains.verify('dom_4K468YrjOkR1wwdhqiO0G9XEUey');
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

domain = client.domains.verify("dom_4K468YrjOkR1wwdhqiO0G9XEUey")
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$domain = $emailit->domains()->verify('dom_4K468YrjOkR1wwdhqiO0G9XEUey');
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

domain = client.domains.verify("dom_4K468YrjOkR1wwdhqiO0G9XEUey")
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"
client := emailit.NewClient("your_api_key")

domain, err := client.Domains.Verify("dom_4K468YrjOkR1wwdhqiO0G9XEUey")
```

**Rust**

```rust
use emailit::Emailit;

let emailit = Emailit::new("your_api_key");

let domain = emailit.domains.verify("dom_4K468YrjOkR1wwdhqiO0G9XEUey").await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;

EmailitClient emailit = new EmailitClient("your_api_key");

EmailitObject domain = emailit.domains().verify("dom_4K468YrjOkR1wwdhqiO0G9XEUey");
```

**.NET**

```csharp
using Emailit;

var emailit = new EmailitClient("your_api_key");

var domain = emailit.Domains.Verify("dom_4K468YrjOkR1wwdhqiO0G9XEUey");
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

$domain = Emailit::domains()->verify('dom_4K468YrjOkR1wwdhqiO0G9XEUey');
```

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/domains/dom_4K468YrjOkR1wwdhqiO0G9XEUey/verify \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**200 En attente**

```json
{
  "object": "domain",
  "id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
  "name": "acme.com",
  "verification_token": "vt_4KY8weirBN9sxnfbIt78tsFWteY",
  "verification_method": "dns",
  "verified_at": null,
  "manually_verified_at": null,
  "manual_review_required": false,
  "dkim_identifier_string": "emailit",
  "dns_checked_at": "2026-10-01T09:20:41.000000Z",
  "spf_status": "ok",
  "spf_error": null,
  "dkim_status": "missing",
  "dkim_error": "queryTxt ENOTFOUND emailit._domainkey.acme.com",
  "mx_status": "ok",
  "mx_error": null,
  "return_path_status": "ok",
  "return_path_error": null,
  "dmarc_status": "error",
  "dmarc_error": "queryTxt ENOTFOUND _dmarc.acme.com",
  "tracking_status": "invalid",
  "tracking_error": "queryCname ENOTFOUND go.acme.com",
  "tracking_key": null,
  "inbound_status": "invalid",
  "inbound_error": "queryMx ENOTFOUND inbound.acme.com",
  "inbound_key": null,
  "track_loads": 0,
  "track_clicks": 0,
  "created_at": "2026-10-01T09:12:03.000000Z",
  "updated_at": "2026-10-01T09:20:41.000000Z",
  "dns_records": [
    {
      "required": true,
      "type": "MX",
      "name": "emailit.acme.com",
      "value": "feedback-smtp.ffdc-1.emailit.com",
      "priority": 10,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": true,
      "type": "TXT",
      "name": "emailit.acme.com",
      "value": "v=spf1 include:_spf.emailit.com ~all",
      "priority": null,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": true,
      "type": "TXT",
      "name": "emailit._domainkey.acme.com",
      "value": "v=DKIM1; t=s; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3kQ...IDAQAB;",
      "priority": null,
      "ttl": "auto",
      "status": "missing",
      "error": "queryTxt ENOTFOUND emailit._domainkey.acme.com"
    },
    {
      "required": false,
      "type": "TXT",
      "name": "_dmarc.acme.com",
      "value": "v=DMARC1; p=none;",
      "priority": null,
      "ttl": "auto",
      "status": "error",
      "error": "queryTxt ENOTFOUND _dmarc.acme.com"
    },
    {
      "required": false,
      "type": "CNAME",
      "name": "go.acme.com",
      "value": "go.emailitmail.com",
      "priority": null,
      "ttl": "auto",
      "status": "invalid",
      "error": "queryCname ENOTFOUND go.acme.com"
    },
    {
      "required": false,
      "type": "MX",
      "name": "inbound.acme.com",
      "value": "inbound.emailitmail.com",
      "priority": 10,
      "ttl": "auto",
      "status": "invalid",
      "error": "queryMx ENOTFOUND inbound.acme.com"
    }
  ],
  "verification_status": "pending"
}
```

**404**

```json
{
  "error": "Domain not found"
}
```

---
Source: https://emailit.com/fr/docs/api-reference/domains/verify/

## Mettre à jour un domaine — POST /domains/{id}

> Activez ou désactivez le suivi des ouvertures et des clics, modifiez les sous-domaines de suivi et de réception, ou activez les rapports DMARC d’un domaine d’envoi.

# Mettre à jour un domaine

Met à jour les paramètres d’un domaine d’envoi. Seuls les champs que vous envoyez sont modifiés.

`POST /domains/{id}`

Nécessite une clé API `full`. Déclenche l’événement `domain.updated`.

## Paramètres de chemin

- `id` (string, obligatoire): L’ID du domaine ou le nom de domaine.

## Paramètres du corps

- `track_loads` (boolean): Active ou désactive par défaut le suivi des ouvertures pour les e-mails de ce domaine. L’activation nécessite un CNAME de suivi vérifié (`tracking_status` vaut `ok`). Consultez [Domaine de suivi personnalisé](/fr/docs/tracking/custom-tracking-domain/).

- `track_clicks` (boolean): Active ou désactive par défaut le suivi des clics. Même condition que pour `track_loads`.

- `tracking_key` (string | null): Un nouveau nom de sous-domaine pour le CNAME de suivi, ou `null` pour la valeur par défaut `go`. Le modifier remet `tracking_status` à `pending` : publiez le nouveau CNAME et [vérifiez](/fr/docs/api-reference/domains/verify/) à nouveau le domaine.

- `inbound_key` (string | null): Un nouveau nom de sous-domaine pour la réception des e-mails, ou `null` pour la valeur par défaut `inbound`. Le modifier remet `inbound_status` à `pending`.

- `dmarc_reports` (boolean): Collecte les rapports DMARC du domaine. L’activation ajoute une adresse de réception des rapports à l’enregistrement DMARC suggéré : mettez ensuite à jour votre enregistrement `_dmarc`. Forfaits Pro, Business et Custom uniquement. La désactivation conserve l’adresse pour plus tard.

- `name` (string): Un nouveau nom de domaine. Les enregistrements DNS passent au nouveau nom : publiez-les sur ce domaine et vérifiez-le à nouveau avant d’envoyer depuis celui-ci.

Les anciens indicateurs `outgoing`, `incoming` et `use_for_any` sont acceptés et n’ont aucun effet. Les champs inconnus sont ignorés. Une requête sans aucun de ces champs renvoie `400`.

## Réponse

Renvoie l’[objet domaine](/fr/docs/api-reference/domains/get/) mis à jour, `dns_records` compris.

**Requête** `POST /domains/{id}`

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

const domain = await emailit.domains.update('dom_4K468YrjOkR1wwdhqiO0G9XEUey', { track_clicks: false });
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

domain = client.domains.update("dom_4K468YrjOkR1wwdhqiO0G9XEUey", {"track_clicks": False})
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$domain = $emailit->domains()->update('dom_4K468YrjOkR1wwdhqiO0G9XEUey', ['track_clicks' => false]);
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

domain = client.domains.update("dom_4K468YrjOkR1wwdhqiO0G9XEUey", track_clicks: false)
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"
client := emailit.NewClient("your_api_key")

domain, err := client.Domains.Update("dom_4K468YrjOkR1wwdhqiO0G9XEUey", &emailit.UpdateDomainRequest{TrackClicks: false})
```

**Rust**

```rust
use emailit::Emailit;

let emailit = Emailit::new("your_api_key");

let domain = emailit.domains.update("dom_4K468YrjOkR1wwdhqiO0G9XEUey", emailit::types::UpdateDomainParams { track_clicks: Some(false), ..Default::default() }).await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;

EmailitClient emailit = new EmailitClient("your_api_key");

EmailitObject domain = emailit.domains().update("dom_4K468YrjOkR1wwdhqiO0G9XEUey", DomainUpdateParams.builder().setTrackClicks(false).build());
```

**.NET**

```csharp
using Emailit;

var emailit = new EmailitClient("your_api_key");

var domain = emailit.Domains.Update("dom_4K468YrjOkR1wwdhqiO0G9XEUey", new DomainUpdateOptions { TrackClicks = false });
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

$domain = Emailit::domains()->update('dom_4K468YrjOkR1wwdhqiO0G9XEUey', ['track_clicks' => false]);
```

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/domains/dom_4K468YrjOkR1wwdhqiO0G9XEUey \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"track_clicks": false}'
```

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/domains/acme.com \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"track_loads": true, "track_clicks": true}'
```

**200**

```json
{
  "object": "domain",
  "id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
  "name": "acme.com",
  "verification_token": "vt_4KY8weirBN9sxnfbIt78tsFWteY",
  "verification_method": "dns",
  "verified_at": "2026-10-01T03:00:12.000000Z",
  "manually_verified_at": null,
  "manual_review_required": false,
  "verification_status": "verified",
  "dkim_identifier_string": "emailit",
  "dns_checked_at": "2026-10-01T03:00:12.000000Z",
  "spf_status": "ok",
  "spf_error": null,
  "dkim_status": "ok",
  "dkim_error": null,
  "mx_status": "ok",
  "mx_error": null,
  "return_path_status": "ok",
  "return_path_error": null,
  "dmarc_status": "ok",
  "dmarc_error": null,
  "tracking_status": "ok",
  "tracking_error": null,
  "tracking_key": null,
  "inbound_status": "invalid",
  "inbound_error": "queryMx ENOTFOUND inbound.acme.com",
  "inbound_key": null,
  "track_loads": 1,
  "track_clicks": 0,
  "dmarc_reports": false,
  "dmarc_address": null,
  "created_at": "2026-09-14T08:02:51.000000Z",
  "updated_at": "2026-10-01T10:44:20.000000Z",
  "dns_records": [
    {
      "required": true,
      "type": "MX",
      "name": "emailit.acme.com",
      "value": "feedback-smtp.ffdc-1.emailit.com",
      "priority": 10,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": true,
      "type": "TXT",
      "name": "emailit.acme.com",
      "value": "v=spf1 include:_spf.emailit.com ~all",
      "priority": null,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": true,
      "type": "TXT",
      "name": "emailit._domainkey.acme.com",
      "value": "v=DKIM1; t=s; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3kQ...IDAQAB;",
      "priority": null,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": false,
      "type": "TXT",
      "name": "_dmarc.acme.com",
      "value": "v=DMARC1; p=none;",
      "priority": null,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": false,
      "type": "CNAME",
      "name": "go.acme.com",
      "value": "go.emailitmail.com",
      "priority": null,
      "ttl": "auto",
      "status": "ok",
      "error": null
    },
    {
      "required": false,
      "type": "MX",
      "name": "inbound.acme.com",
      "value": "inbound.emailitmail.com",
      "priority": 10,
      "ttl": "auto",
      "status": "invalid",
      "error": "queryMx ENOTFOUND inbound.acme.com"
    }
  ]
}
```

**400**

```json
{
  "error": "No valid fields provided for update. Provide at least one of: name, outgoing, incoming, use_for_any, track_loads, track_clicks, tracking_key, inbound_key, dmarc_reports"
}
```

**403**

```json
{
  "error": "plan_required",
  "required_plan": "pro"
}
```

**404**

```json
{
  "error": "Domain not found"
}
```

**409**

```json
{
  "error": "Another domain with this name already exists"
}
```

**422**

```json
{
  "error": "Tracking requires a verified custom CNAME. New messages are not rewritten to a shared tracking URL."
}
```

---
Source: https://emailit.com/fr/docs/api-reference/domains/update/

## Lister les domaines — GET /domains

> Listez les domaines d’envoi d’un espace de travail avec leur statut de vérification et DNS, ainsi que le nombre de domaines autorisés par votre forfait.

# Lister les domaines

Renvoie une page de domaines d’envoi, du plus récent au plus ancien, avec le nombre de domaines autorisés par votre forfait.

`GET /domains`

Nécessite une clé API `full`. Les éléments de la liste n’incluent pas `dns_records` ; utilisez [Récupérer un domaine](/fr/docs/api-reference/domains/get/) pour les obtenir.

## Paramètres de requête

- `page` (integer): La page à renvoyer.

- `limit` (integer): Nombre de domaines par page, de 1 à 100.

- `search` (string): Recherche insensible à la casse sur le nom de domaine.

- `match` (string): `all` ou `or`. Mode de combinaison des filtres ci-dessous.

- `order` (string): Une clé de filtre selon laquelle trier.

- `direction` (string): `asc` ou `desc`.

## Filtres

Ajoutez des filtres sous la forme `key.condition=value`, par exemple `dkim_status.exact=ok`. Consultez [Filtrage et tri](/fr/docs/api-reference/filtering/).

| Clé | Type | Valeurs et remarques |
| --- | --- | --- |
| `name` | chaîne | |
| `created_at` | date | |
| `spf_status` | énumération | `ok`, `missing`, `invalid` |
| `dkim_status` | énumération | `ok`, `missing`, `invalid` |
| `return_path_status` | énumération | `ok`, `missing`, `invalid` |

Chaque clé est aussi une clé de tri.

## Réponse

- `data` (object[]): Les [objets domaine](/fr/docs/api-reference/domains/get/) de cette page, sans `dns_records`.

- `next_page_url` (string | null): Chemin de la page suivante, ou `null`. Consultez [Pagination](/fr/docs/api-reference/pagination/).

- `previous_page_url` (string | null): Chemin de la page précédente, ou `null`.

- `domain_limit` (integer | null): Nombre de domaines d’envoi autorisés par votre forfait, ou `null` s’il n’y a pas de limite.

- `domain_count` (integer): Nombre de domaines d’envoi de l’espace de travail, toutes pages confondues.

- `plan_name` (string | null): Le nom de votre forfait, par exemple `Pay as you go` ou `Pro`.

**Requête** `GET /domains`

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

const domains = await emailit.domains.list();
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

domains = client.domains.list()
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$domains = $emailit->domains()->list();
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

domains = client.domains.list
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"
client := emailit.NewClient("your_api_key")

domains, err := client.Domains.List(nil)
```

**Rust**

```rust
use emailit::Emailit;

let emailit = Emailit::new("your_api_key");

let domains = emailit.domains.list(None).await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;

EmailitClient emailit = new EmailitClient("your_api_key");

EmailitObject domains = emailit.domains().list();
```

**.NET**

```csharp
using Emailit;

var emailit = new EmailitClient("your_api_key");

var domains = emailit.Domains.List();
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

$domains = Emailit::domains()->list();
```

**cURL**

```bash
curl https://api.emailit.com/v2/domains \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**cURL**

```bash
curl -G https://api.emailit.com/v2/domains \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -d dkim_status.not_exact=ok \
  -d spf_status.not_exact=ok \
  -d match=or
```

**200**

```json
{
  "data": [
    {
      "object": "domain",
      "id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
      "name": "acme.com",
      "verification_token": "vt_4KY8weirBN9sxnfbIt78tsFWteY",
      "verification_method": "dns",
      "verified_at": "2026-10-01T03:00:12.000000Z",
      "manually_verified_at": null,
      "manual_review_required": false,
      "verification_status": "verified",
      "dkim_identifier_string": "emailit",
      "dns_checked_at": "2026-10-01T03:00:12.000000Z",
      "spf_status": "ok",
      "spf_error": null,
      "dkim_status": "ok",
      "dkim_error": null,
      "mx_status": "ok",
      "mx_error": null,
      "return_path_status": "ok",
      "return_path_error": null,
      "dmarc_status": "ok",
      "dmarc_error": null,
      "tracking_status": "ok",
      "tracking_error": null,
      "tracking_key": null,
      "inbound_status": "invalid",
      "inbound_error": "queryMx ENOTFOUND inbound.acme.com",
      "inbound_key": null,
      "track_loads": 1,
      "track_clicks": 1,
      "dmarc_reports": true,
      "dmarc_address": "4KXUJdXRVlVgbkWQm4GHLy8BleP@dmarc.emailitmail.com",
      "created_at": "2026-09-14T08:02:51.000000Z",
      "updated_at": "2026-10-01T03:00:12.000000Z"
    }
  ],
  "next_page_url": null,
  "previous_page_url": null,
  "domain_limit": 100,
  "domain_count": 1,
  "plan_name": "Pro"
}
```

---
Source: https://emailit.com/fr/docs/api-reference/domains/list/

## Supprimer un domaine — DELETE /domains/{id}

> Supprimez définitivement un domaine d’envoi de l’espace de travail. Vous ne pouvez plus envoyer depuis ce domaine, et la suppression est irréversible.

# Supprimer un domaine

Supprime définitivement un domaine d’envoi.

`DELETE /domains/{id}`

Nécessite une clé API `full`. Après la suppression, les envois depuis le domaine échouent avec `Domain not verified`, et les clés API limitées à ce domaine ne peuvent plus envoyer. La clé DKIM du domaine, son historique de santé d’envoi et toute connexion Cloudflare enregistrée sont également supprimés. Les e-mails déjà envoyés restent dans vos logs. Déclenche l’événement `domain.deleted`.

Pour envoyer à nouveau depuis ce domaine, [recréez-le](/fr/docs/api-reference/domains/create/). Il reçoit une nouvelle clé DKIM : vous devrez donc mettre à jour l’enregistrement DKIM.

## Paramètres de chemin

- `id` (string, obligatoire): L’ID du domaine ou le nom de domaine.

## Réponse

- `object` (string): Toujours `domain`.

- `id` (string): L’ID du domaine supprimé.

- `name` (string): Le nom de domaine.

- `deleted` (boolean): Toujours `true`.

**Requête** `DELETE /domains/{id}`

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

await emailit.domains.delete('dom_4K468YrjOkR1wwdhqiO0G9XEUey');
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

client.domains.delete("dom_4K468YrjOkR1wwdhqiO0G9XEUey")
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$emailit->domains()->delete('dom_4K468YrjOkR1wwdhqiO0G9XEUey');
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

client.domains.delete("dom_4K468YrjOkR1wwdhqiO0G9XEUey")
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"
client := emailit.NewClient("your_api_key")

err := client.Domains.Delete("dom_4K468YrjOkR1wwdhqiO0G9XEUey")
```

**Rust**

```rust
use emailit::Emailit;

let emailit = Emailit::new("your_api_key");

emailit.domains.delete("dom_4K468YrjOkR1wwdhqiO0G9XEUey").await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;

EmailitClient emailit = new EmailitClient("your_api_key");

emailit.domains().delete("dom_4K468YrjOkR1wwdhqiO0G9XEUey");
```

**.NET**

```csharp
using Emailit;

var emailit = new EmailitClient("your_api_key");

emailit.Domains.Delete("dom_4K468YrjOkR1wwdhqiO0G9XEUey");
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

Emailit::domains()->delete('dom_4K468YrjOkR1wwdhqiO0G9XEUey');
```

**cURL**

```bash
curl -X DELETE https://api.emailit.com/v2/domains/dom_4K468YrjOkR1wwdhqiO0G9XEUey \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**200**

```json
{
  "object": "domain",
  "id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
  "name": "acme.com",
  "deleted": true
}
```

**404**

```json
{
  "error": "Domain not found"
}
```

---
Source: https://emailit.com/fr/docs/api-reference/domains/delete/
