Domains
Register, verify, and manage sending domains. See Domains & DNS for how BYODKIM verification works.
POST
/api/domainsAdd a domain
Body
| Parameter | Description |
|---|---|
domainstringrequired | Domain to send from, e.g. yourdomain.com. |
Response 201
{
"id": "d1e2f3a4-...",
"domain": "yourdomain.com",
"status": "pending",
"verification_status": "pending",
"dkim_mode": "byodkim",
"dkim_selector": "cs1a2b3c",
"dkim_status": "pending",
"mail_from_status": "pending",
"mail_from_domain": "send.yourdomain.com",
"dkim_transition": null,
"rotation_due": false,
"dns_records": [
{
"type": "TXT",
"name": "cs1a2b3c._domainkey.yourdomain.com",
"value": "p=MIIBIjANBgkq...",
"group": "dkim"
},
{
"type": "MX",
"name": "send.yourdomain.com",
"value": "feedback-smtp.us-east-1.amazonses.com",
"priority": 10,
"group": "mail_from"
},
{
"type": "TXT",
"name": "send.yourdomain.com",
"value": "v=spf1 include:amazonses.com ~all",
"group": "mail_from"
},
{
"type": "TXT",
"name": "_dmarc.yourdomain.com",
"value": "v=DMARC1; p=none; rua=mailto:dmarc@cmdsend.com",
"group": "dmarc"
}
],
"region": "us-east-1",
"created_at": "2026-08-01T12:00:00.000Z"
}GET
/api/domainsList domains
Response 200
{
"data": [
{
"id": "d1e2f3a4-...",
"domain": "yourdomain.com",
"status": "pending",
"verification_status": "pending",
"dkim_mode": "byodkim",
"dkim_selector": "cs1a2b3c",
"dkim_status": "pending",
"mail_from_status": "pending",
"mail_from_domain": "send.yourdomain.com",
"dkim_transition": null,
"rotation_due": false,
"dns_records": [
{
"type": "TXT",
"name": "cs1a2b3c._domainkey.yourdomain.com",
"value": "p=MIIBIjANBgkq...",
"group": "dkim"
},
{
"type": "MX",
"name": "send.yourdomain.com",
"value": "feedback-smtp.us-east-1.amazonses.com",
"priority": 10,
"group": "mail_from"
},
{
"type": "TXT",
"name": "send.yourdomain.com",
"value": "v=spf1 include:amazonses.com ~all",
"group": "mail_from"
},
{
"type": "TXT",
"name": "_dmarc.yourdomain.com",
"value": "v=DMARC1; p=none; rua=mailto:dmarc@cmdsend.com",
"group": "dmarc"
}
],
"region": "us-east-1",
"created_at": "2026-08-01T12:00:00.000Z"
}
],
"total": 1
}GET
/api/domains/:idRetrieve a domain
Response 200
{
"id": "d1e2f3a4-...",
"domain": "yourdomain.com",
"status": "pending",
"verification_status": "verified",
"dkim_mode": "byodkim",
"dkim_selector": "cs1a2b3c",
"dkim_status": "success",
"mail_from_status": "success",
"mail_from_domain": "send.yourdomain.com",
"dkim_transition": null,
"rotation_due": false,
"dns_records": [
{
"type": "TXT",
"name": "cs1a2b3c._domainkey.yourdomain.com",
"value": "p=MIIBIjANBgkq...",
"group": "dkim"
},
{
"type": "MX",
"name": "send.yourdomain.com",
"value": "feedback-smtp.us-east-1.amazonses.com",
"priority": 10,
"group": "mail_from"
},
{
"type": "TXT",
"name": "send.yourdomain.com",
"value": "v=spf1 include:amazonses.com ~all",
"group": "mail_from"
},
{
"type": "TXT",
"name": "_dmarc.yourdomain.com",
"value": "v=DMARC1; p=none; rua=mailto:dmarc@cmdsend.com",
"group": "dmarc"
}
],
"region": "us-east-1",
"created_at": "2026-08-01T12:00:00.000Z"
}POST
/api/domains/:id/verifyCheck DNS now
Triggers an immediate verification check instead of waiting for the next background poll. Also resets the 72-hour verification window if it had expired.
Response 200
{
"id": "d1e2f3a4-...",
"domain": "yourdomain.com",
"status": "pending",
"verification_status": "pending",
"dkim_mode": "byodkim",
"dkim_selector": "cs1a2b3c",
"dkim_status": "pending",
"mail_from_status": "pending",
"mail_from_domain": "send.yourdomain.com",
"dkim_transition": null,
"rotation_due": false,
"dns_records": [
{
"type": "TXT",
"name": "cs1a2b3c._domainkey.yourdomain.com",
"value": "p=MIIBIjANBgkq...",
"group": "dkim"
},
{
"type": "MX",
"name": "send.yourdomain.com",
"value": "feedback-smtp.us-east-1.amazonses.com",
"priority": 10,
"group": "mail_from"
},
{
"type": "TXT",
"name": "send.yourdomain.com",
"value": "v=spf1 include:amazonses.com ~all",
"group": "mail_from"
},
{
"type": "TXT",
"name": "_dmarc.yourdomain.com",
"value": "v=DMARC1; p=none; rua=mailto:dmarc@cmdsend.com",
"group": "dmarc"
}
],
"region": "us-east-1",
"created_at": "2026-08-01T12:00:00.000Z",
"dns_check": {
"ok": true,
"results": [
{
"server": "1.1.1.1",
"ok": true
},
{
"server": "8.8.8.8",
"ok": true
}
]
}
}POST
/api/domains/:id/upgradeUpgrade Easy DKIM to BYODKIM
For domains still on legacy Easy DKIM. Publishes a new BYODKIM key alongside the existing CNAMEs; sending stays on the old key until the new DNS record verifies.
POST
/api/domains/:id/rotateRotate the DKIM key
Requires org:admin. Publishes a new key alongside the current one (dual-publish); the old key stays live for 7 days after cutover.
DELETE
/api/domains/:idRemove a domain
Requires org:admin. Deletes the domain and its sending identity — sending from it stops immediately. Returns 204 with no body.