Domains

Register, verify, and manage sending domains. See Domains & DNS for how BYODKIM verification works.

POST/api/domains

Add a domain

Body

ParameterDescription
domain
stringrequired
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/domains

List 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/:id

Retrieve 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/verify

Check 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/upgrade

Upgrade 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/rotate

Rotate 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/:id

Remove a domain

Requires org:admin. Deletes the domain and its sending identity — sending from it stops immediately. Returns 204 with no body.