Skip to content

Domains and events

Domains and DNS records

You can only send from domains you've verified. Chebu gives you the records and checks them.

Domains you add in the Chebu app for your team's mail can send through the API once verified, and domains you add here show up in the app. Adding a domain counts toward your plan's included domains.

DNS records

RecordTypeNameValue
DKIMTXTchebu._domainkeyp=… (your domain's public key)
MAIL FROMMXbouncePriority 10, host shown in your dashboard
MAIL FROM SPFTXTbouncev=spf1 include:_spf.chebu.email ~all
DMARCTXT_dmarcv=DMARC1; p=none;
  • DKIM signs every email so receivers can tell it really came from your domain.
  • MAIL FROM sets the bounce address to a subdomain of yours (bounce by default), so SPF aligns with your domain.
  • DMARC tells receivers what to do with mail that fails those checks. Start with p=none and tighten it once reports look clean.

Add a domain

name is required. region picks the sending region, custom_return_path changes the MAIL FROM subdomain from bounce, and tracking starts off unless you turn it on. The response includes the records to add.

POST/domains
Request
curl -X POST https://api.chebu.io/domains \
  -H "Authorization: Bearer $CHEBU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "northwind.studio",
    "region": "us-east-1",
    "custom_return_path": "bounce",
    "open_tracking": false,
    "click_tracking": false
  }'
JSON

Verify a domain

Chebu checks new domains on its own, often for the first time within a minute and then less often for up to 72 hours. Call verify after you've added the records to check right away.

POST/domains/d91cd9bd-1176-453e-8fc1-35364d380206/verify
Request
curl -X POST https://api.chebu.io/domains/d91cd9bd-1176-453e-8fc1-35364d380206/verify \
  -H "Authorization: Bearer $CHEBU_API_KEY"
JSON
StatusMeaning
not_startedJust added. Chebu starts checking within a minute.
pendingWaiting for the records to appear in DNS.
verifiedReady to send.
partially_verifiedSome records check out and others don't yet.
failedThe records weren't found in time. Fix them and verify again.
temporary_failureA DNS lookup failed for now. Chebu retries.

Retrieve and list domains

GET/domains/d91cd9bd-1176-453e-8fc1-35364d380206
Request
curl https://api.chebu.io/domains/d91cd9bd-1176-453e-8fc1-35364d380206 \
  -H "Authorization: Bearer $CHEBU_API_KEY"
JSON
GET/domains
Request
curl https://api.chebu.io/domains \
  -H "Authorization: Bearer $CHEBU_API_KEY"
JSON

Tracking and TLS

  • open_tracking adds a tiny image to HTML emails, so you get email.opened events.
  • click_tracking routes links through Chebu, so you get email.clicked events.
  • tls is opportunistic by default: Chebu uses TLS whenever the receiving server supports it. Set enforced to only deliver over TLS, and bounce otherwise.
PATCH/domains/d91cd9bd-1176-453e-8fc1-35364d380206
Request
curl -X PATCH https://api.chebu.io/domains/d91cd9bd-1176-453e-8fc1-35364d380206 \
  -H "Authorization: Bearer $CHEBU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "open_tracking": true,
    "click_tracking": true,
    "tls": "enforced"
  }'
JSON

Delete a domain

You can't send from a domain once it's deleted. Emails already sent aren't affected.

DELETE/domains/d91cd9bd-1176-453e-8fc1-35364d380206
Request
curl -X DELETE https://api.chebu.io/domains/d91cd9bd-1176-453e-8fc1-35364d380206 \
  -H "Authorization: Bearer $CHEBU_API_KEY"
JSON