DMARC aggregate reports for your domains
DMARC aggregate (RUA) reports receiving providers have sent about your verified domains, newest reporting window first.
The only signal on this surface that does not come from us. A report is a receiver saying what it saw arrive claiming to be your domain, from every source — which is how a sender finds out both that their own alignment is broken and that somebody else is sending as them.
pass_count counts DMARC ALIGNMENT from policy_evaluated, not raw authentication results: a message can pass SPF for a domain that is not the one in its From header, and that is precisely the case DMARC exists to catch.
Only reports about a domain registered in this project are stored, so a report about a domain you have not added will not appear here.
Requires the deliverability:read scope — Check why mail from one of your domains is not arriving.
API key authentication. Use a sk_* (FULL) or pk_* (SENDING_ONLY) key as the bearer token. Public keys (pk_*) are restricted to the email-send endpoints and the self-serve list subscribe/unsubscribe pair; every other endpoint — event tracking included — answers 403 for them. In scope terms (used by /api/v1/* operations): FULL keys hold every scope; SENDING_ONLY keys hold only emails:send.
In: header
Query Parameters
Opaque cursor from a previous response's next_cursor.
How far back to read, by the report's window start. 1-180 days; defaults to 30.
Restrict to reports about one of your domains.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/api/v1/deliverability/dmarc"{
"data": [
{
"id": "string",
"report_id": "string",
"org_name": "string",
"policy_domain": "string",
"range_begin": "2019-08-24T14:15:22Z",
"range_end": "2019-08-24T14:15:22Z",
"total_count": 0,
"pass_count": 0,
"fail_count": 0,
"sources": [
{
"source_ip": "string",
"count": 0,
"disposition": "string",
"dkim": "string",
"spf": "string",
"header_from": "string"
}
],
"received_at": "2019-08-24T14:15:22Z"
}
],
"has_more": true,
"next_cursor": "string",
"intake_configured": true
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"code": "string",
"request_id": "string",
"errors": [
{
"pointer": "string",
"code": "string",
"message": "string"
}
]
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"code": "string",
"request_id": "string",
"errors": [
{
"pointer": "string",
"code": "string",
"message": "string"
}
]
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"code": "string",
"request_id": "string",
"errors": [
{
"pointer": "string",
"code": "string",
"message": "string"
}
]
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"code": "string",
"request_id": "string",
"errors": [
{
"pointer": "string",
"code": "string",
"message": "string"
}
]
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"code": "string",
"request_id": "string",
"errors": [
{
"pointer": "string",
"code": "string",
"message": "string"
}
]
}