Domains
Add and verify sending domains.
Add a domain
POST /v1/domains
Adds a new sending domain to your workspace. After adding, you will receive DNS records that must be configured with your DNS provider before the domain can be verified.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Domain name to add |
Examples
TypeScript SDK
const domain = await send0.domains.create({
domain: 'mail.acme.com',
});curl
curl -X POST https://api.send0.dev/v1/domains \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "domain": "mail.acme.com" }'Response (201)
{
"id": "dom_5mKpLvRw9nQx",
"object": "domain",
"domain": "mail.acme.com",
"status": "pending",
"dns_records": [
{
"type": "TXT",
"name": "send0._domainkey.mail.acme.com",
"value": "v=DKIM1; k=rsa; p=MIGfMA0GCS...",
"ttl": 3600
},
{
"type": "TXT",
"name": "mail.acme.com",
"value": "v=spf1 include:send0.dev ~all",
"ttl": 3600
},
{
"type": "CNAME",
"name": "send0-verify.mail.acme.com",
"value": "verify.send0.dev",
"ttl": 3600
}
],
"created_at": "2026-04-12T10:30:00Z",
"verified_at": null
}After adding a domain, configure the returned DNS records with your DNS provider, then call the verify endpoint.
Get a domain
GET /v1/domains/:id
Retrieves a single domain by ID, including its current verification status and DNS records.
Examples
TypeScript SDK
const domain = await send0.domains.get('dom_5mKpLvRw9nQx');curl
curl https://api.send0.dev/v1/domains/dom_5mKpLvRw9nQx \
-H "Authorization: Bearer sk_live_..."List domains
GET /v1/domains
Returns a paginated list of domains in your workspace. Uses cursor-based pagination.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | number | 20 | Results per page (max 100) |
cursor | string | — | Pagination cursor |
Examples
TypeScript SDK
const { data } = await send0.domains.list();curl
curl https://api.send0.dev/v1/domains \
-H "Authorization: Bearer sk_live_..."Remove a domain
DELETE /v1/domains/:id
Permanently removes a domain from your workspace. Any emails using this domain as a sender will fail after removal.
Examples
TypeScript SDK
await send0.domains.delete('dom_5mKpLvRw9nQx');curl
curl -X DELETE https://api.send0.dev/v1/domains/dom_5mKpLvRw9nQx \
-H "Authorization: Bearer sk_live_..."Verify a domain
POST /v1/domains/:id/verify
Triggers DNS record verification. Call this after adding the required DNS records to your DNS provider.
Examples
TypeScript SDK
const result = await send0.domains.verify('dom_5mKpLvRw9nQx');
console.log(result.status); // 'verified' or 'pending'curl
curl -X POST https://api.send0.dev/v1/domains/dom_5mKpLvRw9nQx/verify \
-H "Authorization: Bearer sk_live_..."Response (200)
{
"id": "dom_5mKpLvRw9nQx",
"status": "verified",
"dns_records": [
{
"type": "TXT",
"name": "send0._domainkey.mail.acme.com",
"value": "v=DKIM1; k=rsa; p=MIGfMA0GCS...",
"ttl": 3600
},
{
"type": "TXT",
"name": "mail.acme.com",
"value": "v=spf1 include:send0.dev ~all",
"ttl": 3600
},
{
"type": "CNAME",
"name": "send0-verify.mail.acme.com",
"value": "verify.send0.dev",
"ttl": 3600
}
]
}Domain status
| Status | Description |
|---|---|
pending | DNS records not yet verified |
verified | Domain is verified and ready to send |
failed | DNS verification failed |
Note: DNS propagation can take up to 48 hours. If verification returns
pending, wait and try again later.