---
title: "Email security grade and per-protocol status for every tracked domain, worst first"
method: GET
path: "/email"
---

# Email security grade and per-protocol status for every tracked domain, worst first

`GET /email`

## Request

- Base URL: `https://www.domainlab.app/api/v1`
- URL: `https://www.domainlab.app/api/v1/email`
- Auth: HTTP bearer

Grades A-F. rubric is "mail" (has mail servers), "parked" (no mail servers; graded on lock-down) or "unregistered" (not graded). statuses has one of pass, warn, fail, missing, unknown for spf, dkim, dmarc, mx, mta_sts, tls_rpt, bimi, dnssec.

## Query parameters

- `grade` string

## Response `200`

{ domains: [{ domain_id, domain_name, grade, rubric, checked_at, statuses, fix_count, reason, changed_at }], counts: { A, B, C, D, F, not_graded } (all tracked domains), total (after the grade filter), total_tracked }

## Other responses

- `401`: Missing or invalid API key
- `403`: Account lacks API access (no active subscription or trial)
- `429`: Rate limit or monthly quota exceeded. Respect the Retry-After header. code is RATE_LIMITED (short-lived) or MONTHLY_QUOTA_EXCEEDED (resets next period).

---

[API](https://skmtc.dev/domainlab/apis/domain-lab-api.md) · [All operations](https://skmtc.dev/domainlab/apis/domain-lab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/domainlab/apis/domain-lab-api/revisions/5dade951c661?raw)
