PristineSend
Get started
API Reference

Domains

List your workspace's sending domains and their verification health. This endpoint is read-only; add and verify domains from the dashboard. See Domain setup for the DNS records themselves.

Overview

MethodPathDescription
GET/api/v1/domainsList sending domains (cursor-paginated)

The domain object

Each domain in the list has this shape:

FieldTypeDescription
idstringThe domain's UUID.
domainstringThe sending domain, e.g. yourdomain.com.
statusstringOverall verification status of the domain.
dkim_statusstring | nullDKIM record verification status.
spf_statusstring | nullSPF record verification status.
dmarc_statusstring | nullDMARC record verification status.
mx_statusstring | nullMX record verification status.
return_path_statusstring | nullCustom MAIL FROM / return-path verification status.
verified_atstring | nullWhen the domain became verified, or null.
created_atstringWhen the domain was added.
dns_recordsobject[]The DNS records to publish. Each is { type, name, value }.
Note: Internal provider and infrastructure fields are never returned — only the fields above. Each dns_records entry contains exactly type, name, and value.

List domains

GET/api/v1/domains

Returns a cursor-paginated list of domains, newest first. Pass next_cursor back as the cursor parameter to fetch the next page.

Query parameters

FieldTypeRequiredDescription
limitnumberoptionalMax domains to return. Default 50, max 100 (over-large values are clamped).
cursorstringoptionalOpaque pagination cursor from a previous response's next_cursor. Omit for the first page; a malformed cursor returns 400 invalid_field.

Response

"color:#ff7b72">import { PristineSend } "color:#ff7b72">from "pristinesend"

"color:#ff7b72">const ps = "color:#ff7b72">new PristineSend(process.env.PRISTINESEND_API_KEY!)

// The returned page auto-paginates — iterate across every page transparently.
for "color:#ff7b72">await ("color:#ff7b72">const domain of "color:#ff7b72">await ps.domains.list({ limit: 50 })) {
  console.log(domain.domain, domain.status)
}

Errors

Errors use the standard envelope — unauthorized (401) and invalid_field (400, for a malformed cursor). See the full Error codes reference for the canonical envelope.