Receive on your own domain
Start receiving mail at a domain you control, such as support.acme.com, instead of the project address. Publish the two records in the response: an MX record pointing at us, and a TXT record that proves you own the domain. We check them every minute, and for up to 72 hours, and the domain turns active once both are right. The MX must be the only MX at that name: a second one would send some of your mail elsewhere.
Use a subdomain. Pointing a root domain such as acme.com here sends all of its mail to SendSend and none to the mailboxes it has now. The response includes a warning for root domains. A project can receive on up to 5 domains.
Required scope: inbound:manage
Request body
| Field | Type |
|---|---|
domainrequired | string |
Unknown fields are rejected, so a typo never silently does nothing.
Example
curl -X POST 'https://api.sendsend.email/v1/inbound/domains' \
-H "Authorization: Bearer $SENDSEND_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"domain": "support.acme.com"
}'Response 201
{
"id": "ind_Wq7…",
"object": "inbound_domain",
"domain": "support.acme.com",
"status": "pending",
"mx_ok": false,
"txt_ok": false,
"records": [
{
"purpose": "mx",
"type": "MX",
"name": "support.acme.com",
"value": "inbound-smtp.us-east-2.amazonaws.com",
"priority": 10,
"status": "missing"
},
{
"purpose": "verification",
"type": "TXT",
"name": "_sendsend-inbound.support.acme.com",
"value": "sendsend-verify=k3x…",
"status": "missing"
}
],
"last_checked_at": null,
"verified_at": null,
"created_at": "2026-10-06T15:00:00.000Z"
}Errors
| Status | Code | When |
|---|---|---|
| 400 | validation_error | The request body or parameters are invalid. The message says which field. |
| 409 | domain_already_registered | Another project already has this domain. |
| 401 | unauthorized | The API key is missing, invalid or revoked. |
| 403 | forbidden | The key does not have the scope this endpoint needs. |
Every error has the same shape. See Errors.