Add a domain

Add a sending domain and receive its DNS records.

Registers the domain and returns the SPF/DKIM/DMARC records to publish. Verify with PUT /v3/domains/{name}/verify once DNS has propagated.

POST /v3/domains

Body parameters

ParameterTypeRequiredDescription
domainstringRequiredOnly count events whose message was sent from this domain.

Responses

StatusDescription
201Created. The domain object with status: "pending" and the dns_records to publish (all ok: false until verified). Re-POSTing a domain you already registered returns the existing record instead of an error.
400The value isn't a valid domain name.
403Your plan's domain allowance is used up — upgrade for unlimited domains.

Code examples

cURL
curl -X POST https://api.wemail.io/v3/domains \
  -H "Authorization: Bearer afn_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "domain": "mail.acme.io" }'
Node.js
await wemail.domains.create({ domain: "mail.acme.io" });
Python
wemail.domains.create(domain="mail.acme.io")
PHP
$wemail->domains->create(['domain' => 'mail.acme.io']);
Ruby
wemail.domains.create(domain: "mail.acme.io")
Go
client.Domains.Create(ctx, &wemail.DomainParams{Domain: "mail.acme.io"})
Java
wemail.domains().create("mail.acme.io");
.NET
await wemail.Domains.CreateAsync(new DomainParams { Domain = "mail.acme.io" });
ResponseExample response
{
  "id": "dom_01HCXV5Z…",
  "domain": "mail.acme.io",
  "status": "pending",
  "spf": false,
  "dkim": false,
  "dmarc": false,
  "dkim_selector": "afn8kq2x1w9",
  "tracking_subdomain": "track.mail.acme.io",
  "dns_records": [
    { "type": "CNAME", "host": "afn8kq2x1w9._domainkey.mail.acme.io", "value": "afn8kq2x1w9.dkim.wemail.io", "ok": false },
    { "type": "TXT",   "host": "mail.acme.io",                        "value": "v=spf1 include:wemail.io ~all", "ok": false },
    { "type": "CNAME", "host": "track.mail.acme.io",                  "value": "track.wemail.io", "ok": false },
    { "type": "TXT",   "host": "_dmarc.mail.acme.io",                 "value": "v=DMARC1; p=none;", "ok": false }
  ],
  "sent_count": 0,
  "reputation": null,
  "created_at": "2026-05-10T09:42:18Z",
  "verified_at": null
}