# Domínios API

> Adicione domínios de envio, consulte os registros DNS e o status de verificação deles, e verifique-os.

URL base: `https://api.emailit.com/v2`. Autentique-se com `Authorization: Bearer <API key>`.

## Criar um domínio — POST /domains

> Adicione um domínio de envio ao workspace e obtenha os registros DNS de SPF, DKIM, return path, DMARC, rastreamento e recebimento a publicar antes de verificá-lo.

# Criar um domínio

Adiciona um domínio de envio e retorna os registros DNS a publicar para ele.

`POST /domains`

Requer uma chave de API com escopo `full`. O Emailit gera uma chave DKIM de 2048 bits para o domínio. Publique os registros de `dns_records` no seu provedor de DNS e depois chame [Verificar um domínio](/pt/docs/api-reference/domains/verify/). Você pode enviar do domínio assim que ele for verificado. Consulte [Adicionar um domínio](/pt/docs/domains/add-a-domain/) e [Registros DNS](/pt/docs/domains/dns-records/).

O número de domínios depende do seu plano: 3 no Pay as you go (25 após a sua primeira compra de créditos), 100 no Pro e 1.000 no Business. Dispara um evento `domain.created`.

## Parâmetros do corpo

- `name` (string, obrigatório): O domínio de envio, como `acme.com` ou `mail.acme.com`, sem `http://`, `https://` ou `www.`. Armazenado em minúsculas. Os seus endereços `from` devem usar exatamente este domínio.

- `tracking_key` (string): O rótulo do subdomínio para o CNAME de rastreamento de aberturas e cliques. O padrão é `go`, que resulta em `go.acme.com`. Letras, dígitos e hifens.

- `inbound_key` (string): O rótulo do subdomínio para o recebimento de e-mails. O padrão é `inbound`, que resulta em `inbound.acme.com`. Letras, dígitos e hifens.

- `dmarc_reports` (boolean): Coleta relatórios DMARC do domínio. O Emailit cria um endereço de relatórios e o adiciona ao registro DMARC sugerido. Disponível nos planos Pro, Business e Custom. Consulte [DMARC](/pt/docs/dmarc/).

- `track_loads` (boolean): Deve ser `false` ao criar um domínio. Ative o rastreamento com [Atualizar um domínio](/pt/docs/api-reference/domains/update/) depois que o CNAME de rastreamento for verificado.

- `track_clicks` (boolean): Igual a `track_loads`, para o rastreamento de cliques.

As flags antigas `outgoing`, `incoming` e `use_for_any` são aceitas por compatibilidade e não têm efeito.

## Retorno

Retorna `201` com o [objeto de domínio](/pt/docs/api-reference/domains/get/), incluindo `dns_records`. Um domínio novo tem o status `pending`, ou `pending_review` no Pay as you go até a primeira verificação de DNS.

**Requisição** `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 Rastreamento**

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

---
Fonte: https://emailit.com/pt/docs/api-reference/domains/create/

## Obter um domínio — GET /domains/{id}

> Obtenha um domínio de envio pelo ID ou pelo nome, com o status de verificação, o status de cada registro DNS e os registros a publicar.

# Obter um domínio

Obtém um domínio de envio com o status de verificação e os registros DNS.

`GET /domains/{id}`

Requer uma chave de API com escopo `full`. Os status dos registros refletem a última verificação de DNS, que roda quando você chama [Verificar um domínio](/pt/docs/api-reference/domains/verify/) e automaticamente uma vez por dia.

## Parâmetros de caminho

- `id` (string, obrigatório): O ID do domínio (`dom_…`, ou `sd_…` e `sed_…` para domínios mais antigos) ou o nome do domínio, como `acme.com`.

## Retorno

Retorna o objeto de domínio.

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

- `id` (string): O ID do domínio.

- `name` (string): O nome do domínio.

- `verification_status` (string): `verified` quando o domínio pode enviar. `pending` enquanto o SPF, o DKIM ou o return path ainda não estiverem corretos. `pending_review` no Pay as you go quando o domínio precisa de uma análise manual do Emailit antes de ser verificado, por exemplo porque foi registrado há menos de 30 dias.

- `verified_at` (string | null): Quando a última verificação de DNS passou, ou `null` se o domínio não estiver verificado. Uma verificação com falha limpa o valor.

- `manual_review_required` (boolean): Se o domínio está aguardando a análise manual do Emailit.

- `manually_verified_at` (string | null): Quando o Emailit aprovou o domínio manualmente, ou `null`.

- `dns_checked_at` (string | null): Quando os registros DNS foram verificados pela última vez.

- `spf_status, dkim_status, return_path_status` (string): Status dos três registros obrigatórios: `pending` (ainda não verificado), `ok`, `missing` ou `invalid`. Os três devem estar `ok` para que o domínio seja verificado.

- `mx_status` (string): Igual a `return_path_status`.

- `dmarc_status` (string): Status do registro DMARC: `pending`, `ok`, `missing`, `invalid` ou `error`. Opcional para a verificação.

- `tracking_status` (string): Status do CNAME de rastreamento. Deve estar `ok` antes que você possa ativar o rastreamento.

- `inbound_status` (string): Status do registro MX de recebimento. Necessário para [receber e-mails](/pt/docs/inbound/) no domínio.

- `spf_error, dkim_error, mx_error, return_path_error, dmarc_error, tracking_error, inbound_error` (string | null): O que há de errado com cada registro após uma verificação com falha, ou `null`.

- `tracking_key` (string | null): O rótulo do subdomínio de rastreamento, ou `null` para o padrão `go`.

- `inbound_key` (string | null): O rótulo do subdomínio de recebimento, ou `null` para o padrão `inbound`.

- `track_loads` (integer): `1` se o rastreamento de aberturas estiver ativado por padrão para os e-mails deste domínio, `0` se não estiver.

- `track_clicks` (integer): `1` se o rastreamento de cliques estiver ativado por padrão, `0` se não estiver.

- `dmarc_reports` (boolean): Se o Emailit coleta relatórios DMARC do domínio.

- `dmarc_address` (string | null): O endereço que recebe os relatórios DMARC, ou `null` quando `dmarc_reports` está desativado.

- `verification_token, verification_method, dkim_identifier_string` (string): Detalhes internos da verificação. `verification_method` é `dns` e `dkim_identifier_string` é o seletor DKIM, `emailit`.

- `created_at, updated_at` (string): Quando o domínio foi adicionado e alterado pela última vez.

- `dns_records` (object[]): Os registros a publicar. Cada um tem `type` (`MX`, `TXT` ou `CNAME`), `name`, `value`, `priority` (para registros MX), `ttl` (`auto`), `required` (se é necessário para a verificação), além do `status` e do `error` atuais.

| Registro | Tipo | Nome | Valor | Obrigatório |
| --- | --- | --- | --- | --- |
| Return path | MX | `emailit.acme.com` | `feedback-smtp.ffdc-1.emailit.com`, prioridade 10 | Sim |
| SPF | TXT | `emailit.acme.com` | `v=spf1 include:_spf.emailit.com ~all` | Sim |
| DKIM | TXT | `emailit._domainkey.acme.com` | `v=DKIM1; t=s; h=sha256; p=…` | Sim |
| DMARC | TXT | `_dmarc.acme.com` | `v=DMARC1; p=none;`, mais os endereços de relatórios quando `dmarc_reports` está ativado | Não |
| Rastreamento | CNAME | `go.acme.com` | `go.emailitmail.com` | Não |
| Recebimento | MX | `inbound.acme.com` | `inbound.emailitmail.com`, prioridade 10 | Não |

**Requisição** `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"
}
```

---
Fonte: https://emailit.com/pt/docs/api-reference/domains/get/

## Verificar um domínio — POST /domains/{id}/verify

> Verifique agora os registros DNS de um domínio de envio e atualize o status de verificação dele. SPF, DKIM e return path precisam passar antes que você possa enviar.

# Verificar um domínio

Consulta agora os registros DNS do domínio, salva o resultado e retorna o domínio com os novos status.

`POST /domains/{id}/verify`

Requer uma chave de API com escopo `full`. Chame-o depois de publicar os registros de [Criar um domínio](/pt/docs/api-reference/domains/create/) e de novo sempre que alterá-los. As alterações de DNS podem levar um tempo para se propagar; se um registro mostrar `missing`, aguarde alguns minutos e tente de novo.

O domínio passa a `verified` quando os três registros obrigatórios estão `ok`:

- **SPF:** um registro TXT em `emailit.<domain>` que inclui `_spf.emailit.com`.
- **DKIM:** um registro TXT em `emailit._domainkey.<domain>` com a chave pública do domínio.
- **Return path:** um único registro MX em `emailit.<domain>` apontando para `feedback-smtp.ffdc-1.emailit.com`.

No Pay as you go, um domínio registrado há menos de 30 dias recebe `pending_review` em vez disso, e o Emailit o analisa manualmente. Os registros DMARC, de rastreamento e de recebimento também são verificados, mas não afetam a verificação.

O Emailit também verifica de novo cada domínio uma vez por dia. Se um registro obrigatório deixar de passar, o domínio deixa de estar verificado, os envios a partir dele falham e o proprietário do workspace recebe um e-mail. Consulte [Verificação de domínio](/pt/docs/domains/verification/).

## Parâmetros de caminho

- `id` (string, obrigatório): O ID do domínio ou o nome do domínio.

## Retorno

Retorna o [objeto de domínio](/pt/docs/api-reference/domains/get/) com o resultado desta verificação em `verification_status`, em cada campo `*_status` e `*_error` e em `dns_records`. Esta resposta não inclui `dmarc_reports` nem `dmarc_address`; consulte-os com [Obter um domínio](/pt/docs/api-reference/domains/get/).

**Requisição** `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 Pendente**

```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"
}
```

---
Fonte: https://emailit.com/pt/docs/api-reference/domains/verify/

## Atualizar um domínio — POST /domains/{id}

> Ative ou desative o rastreamento de aberturas e cliques, altere os subdomínios de rastreamento e de recebimento ou ative os relatórios DMARC de um domínio de envio.

# Atualizar um domínio

Atualiza as configurações de um domínio de envio. Só mudam os campos que você enviar.

`POST /domains/{id}`

Requer uma chave de API com escopo `full`. Dispara um evento `domain.updated`.

## Parâmetros de caminho

- `id` (string, obrigatório): O ID do domínio ou o nome do domínio.

## Parâmetros do corpo

- `track_loads` (boolean): Ativa ou desativa por padrão o rastreamento de aberturas para os e-mails deste domínio. Para ativá-lo, é preciso um CNAME de rastreamento verificado (`tracking_status` igual a `ok`). Consulte [Domínio de rastreamento personalizado](/pt/docs/tracking/custom-tracking-domain/).

- `track_clicks` (boolean): Ativa ou desativa por padrão o rastreamento de cliques. Mesmo requisito de `track_loads`.

- `tracking_key` (string | null): Um novo rótulo de subdomínio para o CNAME de rastreamento, ou `null` para o padrão `go`. Alterá-lo redefine `tracking_status` para `pending`, então publique o novo CNAME e [verifique](/pt/docs/api-reference/domains/verify/) de novo.

- `inbound_key` (string | null): Um novo rótulo de subdomínio para o recebimento de e-mails, ou `null` para o padrão `inbound`. Alterá-lo redefine `inbound_status` para `pending`.

- `dmarc_reports` (boolean): Coleta relatórios DMARC do domínio. Ativar adiciona um endereço de relatórios ao registro DMARC sugerido, então atualize o seu registro `_dmarc` em seguida. Apenas nos planos Pro, Business e Custom. Desativar mantém o endereço para uso futuro.

- `name` (string): Um novo nome de domínio. Os registros DNS passam para o novo nome, então publique-os nele e verifique de novo antes de enviar a partir dele.

As flags antigas `outgoing`, `incoming` e `use_for_any` são aceitas e não têm efeito. Campos desconhecidos são ignorados. Uma requisição sem nenhum desses campos retorna `400`.

## Retorno

Retorna o [objeto de domínio](/pt/docs/api-reference/domains/get/) atualizado, incluindo `dns_records`.

**Requisição** `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."
}
```

---
Fonte: https://emailit.com/pt/docs/api-reference/domains/update/

## Listar domínios — GET /domains

> Liste os domínios de envio de um workspace com o status de verificação e de DNS, além de quantos domínios o seu plano permite.

# Listar domínios

Retorna uma página de domínios de envio, dos mais recentes para os mais antigos, com a cota de domínios do seu plano.

`GET /domains`

Requer uma chave de API com escopo `full`. Os itens da listagem não incluem `dns_records`; use [Obter um domínio](/pt/docs/api-reference/domains/get/) para obtê-los.

## Parâmetros de consulta

- `page` (integer): A página a retornar.

- `limit` (integer): Domínios por página, de 1 a 100.

- `search` (string): Busca sem diferenciar maiúsculas de minúsculas no nome do domínio.

- `match` (string): `all` ou `or`. Como os filtros abaixo se combinam.

- `order` (string): Uma chave de filtro pela qual ordenar.

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

## Filtros

Adicione filtros no formato `key.condition=value`, por exemplo `dkim_status.exact=ok`. Consulte [Filtragem](/pt/docs/api-reference/filtering/).

| Chave | Tipo | Valores e observações |
| --- | --- | --- |
| `name` | string | |
| `created_at` | date | |
| `spf_status` | enum | `ok`, `missing`, `invalid` |
| `dkim_status` | enum | `ok`, `missing`, `invalid` |
| `return_path_status` | enum | `ok`, `missing`, `invalid` |

Toda chave também serve para ordenar.

## Retorno

- `data` (object[]): Os [objetos de domínio](/pt/docs/api-reference/domains/get/) desta página, sem `dns_records`.

- `next_page_url` (string | null): Caminho da próxima página, ou `null`. Consulte [Paginação](/pt/docs/api-reference/pagination/).

- `previous_page_url` (string | null): Caminho da página anterior, ou `null`.

- `domain_limit` (integer | null): Quantos domínios de envio o seu plano permite, ou `null` se não houver limite.

- `domain_count` (integer): Quantos domínios de envio o workspace tem, somando todas as páginas.

- `plan_name` (string | null): O nome do seu plano, como `Pay as you go` ou `Pro`.

**Requisição** `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"
}
```

---
Fonte: https://emailit.com/pt/docs/api-reference/domains/list/

## Excluir um domínio — DELETE /domains/{id}

> Exclua permanentemente um domínio de envio do workspace. Não será mais possível enviar dele, e a exclusão não pode ser desfeita.

# Excluir um domínio

Exclui permanentemente um domínio de envio.

`DELETE /domains/{id}`

Requer uma chave de API com escopo `full`. Após a exclusão, os envios do domínio falham com `Domain not verified`, e as chaves de API restritas ao domínio não podem mais enviar. A chave DKIM do domínio, o histórico de saúde de envio e a conexão com o Cloudflare armazenada, se houver, também são removidos. Os e-mails já enviados continuam nos seus logs. Dispara um evento `domain.deleted`.

Para enviar do domínio de novo, [crie-o](/pt/docs/api-reference/domains/create/) outra vez. Ele recebe uma nova chave DKIM, então será preciso atualizar o registro DKIM.

## Parâmetros de caminho

- `id` (string, obrigatório): O ID do domínio ou o nome do domínio.

## Retorno

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

- `id` (string): O ID do domínio excluído.

- `name` (string): O nome do domínio.

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

**Requisição** `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"
}
```

---
Fonte: https://emailit.com/pt/docs/api-reference/domains/delete/
