Deliverability Score per verified domain, and the worst

Search Documentation

Search across all developer documentation

deliverability

Deliverability Score per verified domain, and the worst

GET /v1/deliverability
Auth required api.reports.view

One row per adopted, verified sending domain from its latest nightly snapshot (05:40 UTC), plus org_summary: the org as its worst assessed domain — worst band, then lowest score — never a mean.

A score is the weighted share of DECIDED checks that pass. unknown checks are excluded from the denominator and reported in coverage; they never count as zero or as a pass. Bands: healthy ≥ 90, at_risk 70–89, failing < 70 — except that any blocking task forces failing, whatever the number. A domain with no snapshot yet is not_yet_assessed, with null score, coverage and taken_at — never zeros.

Cursor-paginated over the domains; org_summary always covers every domain, not just the page. Available on every plan. Read-only.

Query parameters

limit integer optional

Page size (1–200). Default 50.

cursor string optional

Opaque cursor returned from the previous page.

Responses

Errors follow the RFC 7807 problem format — see the error reference.

200 A page of domains and the org summary application/json
data array<object> required

Each entry in data:

domain_id string<uuid> required
domain string required
status string enum required

One of: assessed, not_yet_assessed

score integer | null required
band string enum required

One of: healthy, at_risk, failing, unassessed

band_label string required
low_confidence boolean required
coverage object | null required
blocking_tasks integer required
open_tasks integer required
top_task object | null required

Fields of top_task:

key string required
title string required
where string enum required

One of: sendops, dns, aws, third_party

severity string enum required

One of: blocking, important, advisory

taken_at string<date-time> | null required
pagination object required

Fields of pagination:

has_more boolean required
next_cursor string | null optional
org_summary object required

The org as its WORST assessed domain — worst band, then lowest score — never a mean. worst_band is unassessed and worst_domain null when no domain has a scored snapshot yet.

Fields of org_summary:

worst_band string enum required

One of: healthy, at_risk, failing, unassessed

worst_band_label string required
worst_domain string | null required
worst_domain_id string<uuid> | null required
open_tasks integer required
blocking_tasks integer required
assessed_domains integer required
not_yet_assessed_domains integer required
next_nightly_at string<date-time> required
401 Missing, malformed, or unknown API key application/problem+json
403 Key lacks the required scope or plan limit violated application/problem+json
404 Resource not found application/problem+json
422 A query parameter, path value or body field failed validation. The body is a validation_failed Problem. When the refusal is about a reference — a segment key, template slug, topic or attribute name the organization does not have — it additionally carries validation_code, field, line/column, missing, candidates and next_step, so a client can correct the call without a second round of guessing. See ValidationProblem. application/problem+json
429 Per-org rate limit exceeded application/problem+json
500 Unexpected server-side failure. The code is internal_error. The request_id field can be quoted to SendOps support to investigate. application/problem+json