Retrieve a DMARC report

GET
/v1/domains/{id}/dmarc/reports/{report_id}

One aggregate report with its rows: each source IP, how many messages it sent, whether they passed DMARC (aligned DKIM or SPF) and what the receiver did with them.

Authorization

bearerAuth
headerAuthorizationBearer <token>

A secret API key from the dashboard: coss_live_… for production environments, coss_test_… for sandbox environments.

Path Parameters

id*string

The domain's id.

report_id*string

The report's id.

Header Parameters

Coss-Version?"2026-10-10"

The API version (a date) to use for this request. Defaults to your organization's version, pinned to the latest one when it first used the API and upgraded from the dashboard. The SDK always sends the version it was built for.

Value in"2026-10-10"

Response Body

The report.

application/json
  1. response
object*"dmarc_report"
Value in"dmarc_report"
id*string
domain_id*string
reporter*
report_id*string

The reporter's own id of the report.

period_start*string
Formatdate-time
period_end*string
Formatdate-time
policy_published*

The policy the reporter found when it evaluated the mail.

messages*integer
passing*integer
truncated*boolean

The report listed more rows than are kept (10,000); totals cover the kept rows.

received_at*string
Formatdate-time
records*array<>
import { Coss } from "coss";const coss = new Coss({  apiKey: process.env.COSS_API_KEY,  baseUrl: "https://api.coss.com",});const { data, error } = await coss.domains.dmarc.reports.get("dom_01k7c8m4q2f3e9v6t5r1n0p8yz", "dmarcrep_01k7c8m4q2f3e9v6t5r1n0p8yz");
{  "object": "dmarc_report",  "id": "dmarcrep_01k7c8m4q2f3e9v6t5r1n0p8yz",  "domain_id": "dom_01k7c8m4q2f3e9v6t5r1n0p8yz",  "reporter": {    "org_name": "google.com",    "email": "noreply-dmarc-support@google.com"  },  "report_id": "13845021974128475",  "period_start": "2026-10-09T00:00:00.000Z",  "period_end": "2026-10-09T23:59:59.000Z",  "policy_published": {    "domain": "acme.com",    "p": "none",    "sp": null,    "np": null,    "adkim": "r",    "aspf": "r",    "pct": 100,    "testing": null  },  "messages": 1204,  "passing": 1200,  "truncated": false,  "received_at": "2026-10-10T03:12:44.000Z",  "records": [    {      "source_ip": "54.240.8.12",      "count": 1200,      "disposition": "none",      "dkim": "pass",      "spf": "pass",      "dmarc_pass": true,      "header_from": "acme.com",      "envelope_from": "send.acme.com",      "via_coss": true,      "auth_results": {        "dkim": [          {            "domain": "acme.com",            "selector": "x7f3k2m9qp4ld8sv6hwz1nyc5rbtgj0e",            "result": "pass"          }        ],        "spf": [          {            "domain": "send.acme.com",            "scope": "mfrom",            "result": "pass"          }        ]      },      "reasons": []    }  ]}