Skip to content

List domains

Every sending domain on your team. Lean rows — no DNS records; see below.

http
GET /v1/domains

Requires a Full access API key.

Query parameters

ParameterTypeDescription
limitnumberHow many to return. Default 20, min 1, max 100.
afterstringReturn domains after this id. Cannot be combined with before.
beforestringReturn domains before this id. Cannot be combined with after.

Newest first. Cursor-paginated.

Example

bash
curl "https://api.sendgrail.com/v1/domains" \
  -H "Authorization: Bearer $SENDGRAIL_API_KEY"
js
const res = await fetch('https://api.sendgrail.com/v1/domains', {
  headers: { Authorization: `Bearer ${process.env.SENDGRAIL_API_KEY}` },
});

const { data, has_more } = await res.json();

Response

json
{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "object": "domain",
      "id": "5f1c3a9e-0d42-4b7c-9a63-2e8b41d7c015",
      "name": "example.com",
      "status": "verified",
      "created_at": "2026-07-14T19:44:32+00:00",
      "region": "us-east-1",
      "capabilities": {
        "sending": "enabled",
        "receiving": "disabled"
      }
    }
  ]
}

No DNS records in the list

A list is the call you make casually — a dashboard load, a health check — and the records array is long. So the list returns a lean row: object, id, name, status, created_at, region and capabilities, and nothing else. To see a domain's records, tls and tracking settings, fetch it with Retrieve a domain.

Transactional email on your own domain.