v1 · API reference

Domains

The domains you send from. Add a domain, publish its DNS records, verify it, and manage its tracking and TLS defaults — sending is blocked until the domain verifies.

Base URL: https://www.unitpost.com/api/v1/api/v1

Domains

List domains

GET/api/v1/api/v1/domains

GET /domains
curl -X GET 'https://www.unitpost.com/api/v1/api/v1/domains' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Response · 200
{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "object": "domain",
      "id": "id_123",
      "name": "Example",
      "status": "pending",
      "records": [
        {
          "type": "string",
          "name": "Example",
          "value": "string",
          "priority": 0
        }
      ],
      "dkim_selector": "string",
      "open_tracking": false,
      "click_tracking": false,
      "tls": "opportunistic",
      "tracking_subdomain": "string",
      "tracking_verified_at": "2026-01-01T00:00:00.000Z",
      "verified_at": "2026-01-01T00:00:00.000Z",
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}

Retrieve a list of your sending domains, cursor-paginated, with each domain's verification status. Add a new one with Add a domain, or fetch a single domain (including its DNS records) with Retrieve a domain. Requires the domains:read capability.

Parameters3 fields
FieldTypeDescription
limitinteger · queryMax rows to return (default 20, max 100).
afterstring · queryReturn rows after this id (forward paging).
beforestring · queryReturn rows before this id (backward paging).
Response · 200 fields14 fields
FieldTypeDescription
objectrequiredstring
idrequiredstring
namerequiredstring
statusrequiredenumpending | verifying | verified | degraded | failed
recordsrequiredobject
dkim_selectorrequiredobject
open_trackingrequiredobject
click_trackingrequiredobject
tlsrequiredenumopportunistic | enforced
tracking_subdomainrequiredobject
tracking_verified_atrequiredobject
verified_atrequiredobject
created_atrequiredstring
updated_atrequiredstring
200401422

Add a domain

POST/api/v1/api/v1/domains

POST /domains
curl -X POST 'https://www.unitpost.com/api/v1/api/v1/domains' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "yourdomain.com"
  }'
Response · 201
{
  "object": "domain",
  "id": "id_123",
  "name": "Example",
  "status": "pending",
  "records": [
    {
      "type": "string",
      "name": "Example",
      "value": "string",
      "priority": 0
    }
  ],
  "dkim_selector": "string",
  "open_tracking": false,
  "click_tracking": false,
  "tls": "opportunistic",
  "tracking_subdomain": "string",
  "tracking_verified_at": "2026-01-01T00:00:00.000Z",
  "verified_at": "2026-01-01T00:00:00.000Z",
  "created_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z"
}

Add a domain you'll send email from. The response includes the DNS records (SPF, DKIM, and so on) to publish with your DNS provider. Once they're published, trigger a check with Verify a domain — sending from the domain is blocked until it verifies. Requires the domains:write capability.

Request body1 field
FieldTypeDescription
namerequiredstring
Response · 201 fields14 fields
FieldTypeDescription
objectrequiredstring
idrequiredstring
namerequiredstring
statusrequiredenumpending | verifying | verified | degraded | failed
recordsrequiredobject
dkim_selectorrequiredobject
open_trackingrequiredobject
click_trackingrequiredobject
tlsrequiredenumopportunistic | enforced
tracking_subdomainrequiredobject
tracking_verified_atrequiredobject
verified_atrequiredobject
created_atrequiredstring
updated_atrequiredstring
201401409422

Retrieve a domain

GET/api/v1/api/v1/domains/{id}

GET /domains/{id}
curl -X GET 'https://www.unitpost.com/api/v1/api/v1/domains/dom_123' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Response · 200
{
  "object": "domain",
  "id": "id_123",
  "name": "Example",
  "status": "pending",
  "records": [
    {
      "type": "string",
      "name": "Example",
      "value": "string",
      "priority": 0
    }
  ],
  "dkim_selector": "string",
  "open_tracking": false,
  "click_tracking": false,
  "tls": "opportunistic",
  "tracking_subdomain": "string",
  "tracking_verified_at": "2026-01-01T00:00:00.000Z",
  "verified_at": "2026-01-01T00:00:00.000Z",
  "created_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z"
}

Retrieve a single sending domain by id, including its current verification status and the DNS records you need to publish. Re-run the DNS check with Verify a domain, or change its tracking/TLS settings with Update a domain. Requires the domains:read capability.

Parameters1 field
FieldTypeDescription
idrequiredstring · path
Response · 200 fields14 fields
FieldTypeDescription
objectrequiredstring
idrequiredstring
namerequiredstring
statusrequiredenumpending | verifying | verified | degraded | failed
recordsrequiredobject
dkim_selectorrequiredobject
open_trackingrequiredobject
click_trackingrequiredobject
tlsrequiredenumopportunistic | enforced
tracking_subdomainrequiredobject
tracking_verified_atrequiredobject
verified_atrequiredobject
created_atrequiredstring
updated_atrequiredstring
200401404

Update a domain

PATCH/api/v1/api/v1/domains/{id}

PATCH /domains/{id}
curl -X PATCH 'https://www.unitpost.com/api/v1/api/v1/domains/dom_123' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "click_tracking": true,
    "open_tracking": true
  }'
Response · 200
{
  "object": "domain",
  "id": "id_123",
  "name": "Example",
  "status": "pending",
  "records": [
    {
      "type": "string",
      "name": "Example",
      "value": "string",
      "priority": 0
    }
  ],
  "dkim_selector": "string",
  "open_tracking": false,
  "click_tracking": false,
  "tls": "opportunistic",
  "tracking_subdomain": "string",
  "tracking_verified_at": "2026-01-01T00:00:00.000Z",
  "verified_at": "2026-01-01T00:00:00.000Z",
  "created_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z"
}

Update a domain's sending options: open/click tracking defaults, TLS enforcement, and the tracking subdomain. These act as the domain-level defaults that individual emails and campaigns can override (see Update a campaign). Requires the domains:write capability.

Parameters1 field
FieldTypeDescription
idrequiredstring · path
Request body4 fields
FieldTypeDescription
open_trackingobject
click_trackingobject
tlsenumopportunistic | enforced
tracking_subdomainobject
Response · 200 fields14 fields
FieldTypeDescription
objectrequiredstring
idrequiredstring
namerequiredstring
statusrequiredenumpending | verifying | verified | degraded | failed
recordsrequiredobject
dkim_selectorrequiredobject
open_trackingrequiredobject
click_trackingrequiredobject
tlsrequiredenumopportunistic | enforced
tracking_subdomainrequiredobject
tracking_verified_atrequiredobject
verified_atrequiredobject
created_atrequiredstring
updated_atrequiredstring
200401404422

Delete a domain

DELETE/api/v1/api/v1/domains/{id}

DELETE /domains/{id}
curl -X DELETE 'https://www.unitpost.com/api/v1/api/v1/domains/dom_123' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Remove a sending domain from your workspace. Sends that reference an address on this domain will be rejected afterwards, so update your from addresses first. Re-add it any time with Add a domain (you'll need to verify it again). Requires the domains:write capability.

Parameters1 field
FieldTypeDescription
idrequiredstring · path
204401404

Verify a domain

POST/api/v1/api/v1/domains/{id}/verify

POST /domains/{id}/verify
curl -X POST 'https://www.unitpost.com/api/v1/api/v1/domains/dom_123/verify' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Response · 200
{
  "object": "domain",
  "id": "id_123",
  "name": "Example",
  "status": "pending",
  "records": [
    {
      "type": "string",
      "name": "Example",
      "value": "string",
      "priority": 0
    }
  ],
  "dkim_selector": "string",
  "open_tracking": false,
  "click_tracking": false,
  "tls": "opportunistic",
  "tracking_subdomain": "string",
  "tracking_verified_at": "2026-01-01T00:00:00.000Z",
  "verified_at": "2026-01-01T00:00:00.000Z",
  "created_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z",
  "checks": [
    "string"
  ]
}

Run an on-demand DNS check and advance the domain's verification status. The response includes per-record checks so you can see exactly which DNS records are still missing or wrong. Get the records to publish from Retrieve a domain. Verification also re-runs periodically in the background. Requires the domains:write capability.

Parameters1 field
FieldTypeDescription
idrequiredstring · path
Response · 200 fields15 fields
FieldTypeDescription
objectrequiredstring
idrequiredstring
namerequiredstring
statusrequiredenumpending | verifying | verified | degraded | failed
recordsrequiredobject
dkim_selectorrequiredobject
open_trackingrequiredobject
click_trackingrequiredobject
tlsrequiredenumopportunistic | enforced
tracking_subdomainrequiredobject
tracking_verified_atrequiredobject
verified_atrequiredobject
created_atrequiredstring
updated_atrequiredstring
checksobject[]
200401404409502