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
| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | Required | Only count events whose message was sent from this domain. |
Responses
| Status | Description |
|---|---|
201 | Created. 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. |
400 | The value isn't a valid domain name. |
403 | Your 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
}