Get one domain's DMARC reporting posture

Search Documentation

Search across all developer documentation

domain-auth

Get one domain's DMARC reporting posture

GET /v1/domain-auth/domains/{domain}
Auth required api.domain_auth.view

Returns one domain's reporting posture. {domain} is the domain NAME (acme.com); a UUID is also accepted. A domain belonging to another org is a 404, not a 403.

Path parameters

domain string required

The domain, by NAME (acme.com). A UUID is also accepted. Matched case-insensitively, and scoped to the calling org — a domain belonging to another org is a 404, never a 403.

Responses

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

200 The domain's reporting posture application/json
domain string required
dmarc_record string optional

The record as last OBSERVED in DNS, not one we hold. Absent means none was published at the last check.

policy string enum required

The enforcement level currently published. no_record is NOT the same as none: none is a deliberate choice to monitor, absence is the absence of a choice. An unparseable record reads as no_record rather than being guessed at.

One of: no_record, none, quarantine, reject

report_address string optional

Where this domain's aggregate reports are delivered.

has_reports boolean required
has_tls_reports boolean required
first_report_at string<date-time> optional
last_report_at string<date-time> optional
report_count integer<int64> required
source_counts object required

Two DIFFERENT groupings. The five class counts partition total. alerting answers a separate question and may overlap any of them. awaiting_decision and open_finding partition alerting exactly.

Fields of source_counts:

total integer<int64> required
sendops integer<int64> required

The org's own SES

sendops_relayed integer<int64> required

The org's own mail via a host that is not their SES.

sendops_unaligned integer<int64> required

The org's own SES

known integer<int64> required

A third party the org confirmed.

unknown integer<int64> required
alerting integer<int64> required

How much of the traffic needs a human. NOT part of the partition above — read this, not unknown, for "is something wrong with this domain".

awaiting_decision integer<int64> required

The only count a decision can reduce.

open_finding integer<int64> required

Needs a DNS record, a third party, or the policy ladder — not a decision.

traffic object | null required

Null when the reporting window holds no data. Null is not zero — a domain nobody reported on has no pass rate.

dispersion object | null optional

Null when the nightly classification pass has never measured this domain. Null is NOT "no campaign detected" — that is a claim, and an unmeasured domain has not earned it.

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
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