send0
API Reference

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

ParameterTypeRequiredDescription
domainstringYesDomain 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

ParameterTypeDefaultDescription
limitnumber20Results per page (max 100)
cursorstringPagination 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

StatusDescription
pendingDNS records not yet verified
verifiedDomain is verified and ready to send
failedDNS verification failed

Note: DNS propagation can take up to 48 hours. If verification returns pending, wait and try again later.