- Add a sending domain POST
- Receive email at a domain POST
- Add a custom tracking domain POST
- Remove a sending domain DELETE
- Stop receiving email at a domain DELETE
- Remove a custom tracking domain DELETE
- Retrieve a DMARC report GET
- Retrieve a domain's DMARC status GET
- Retrieve a sending domain GET
- List a domain's DMARC reports GET
- List sending domains GET
- Check a domain's DNS records now POST
- Create an email template POST
- Delete an email template DELETE
- Retrieve a template's draft GET
- Retrieve a template version GET
- Retrieve an email template GET
- List a template's versions GET
- List email templates GET
- Publish a template's draft POST
- Restore a template version POST
- Update a template's draft PUT
- Update an email template PATCH
- Check an email address POST
- Check an IP address POST
- Check a rate limit POST
- Classify content POST
- Assess an event POST
- Report an assessment's outcome POST
- Create a rate limit bucket POST
- Add an allow or block list entry POST
- Create a rule POST
- Delete a rate limit bucket DELETE
- Remove a list entry DELETE
- Delete a rule DELETE
- Forget a user DELETE
- Retrieve an assessment GET
- Retrieve the calibration GET
- Retrieve a rate limit bucket GET
- Retrieve a list entry GET
- Retrieve a rule GET
- Retrieve the risk settings GET
- List assessments GET
- List rate limit buckets GET
- List allow and block list entries GET
- List rules GET
- Update a rate limit bucket PATCH
- Update a rule PATCH
- Update the risk settings PATCH
- Create a webhook endpoint POST
- Open a webhook listener POST
- Delete a webhook endpoint DELETE
- Close a webhook listener DELETE
- Retrieve a delivery GET
- Retrieve a webhook endpoint GET
- List an endpoint's deliveries GET
- List webhook endpoints GET
- Poll a webhook listener POST
- Recover failed deliveries POST
- Retry a delivery POST
- Roll a signing secret POST
- Update a webhook endpoint PATCH
Retrieve a domain's DMARC status
The domain's published DMARC record, where it is on the path from p=none to p=reject, the record to publish next and whether the last 14 days of aggregate reports say that is safe (ready, with the checks behind it), and a summary of those reports. Mailbox providers send DMARC aggregate reports to the domain's report_address once its _dmarc record names it (rua=mailto:…), usually once a day each.
bearerAuthAuthorizationBearer <token>A secret API key from the dashboard: coss_live_… for production environments, coss_test_… for sandbox environments.
id*stringThe domain's id.
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.
"2026-10-10"The domain's DMARC status.
application/json- response
- response
- …
object*"domain_dmarc""domain_dmarc"domain_id*stringreport_address*|Where the domain's DMARC aggregate reports go (rua=mailto:…). null when this deployment doesn't receive email.
record*|nullpolicy*|The policy receivers apply: the record's p (none when it has none), or for a subdomain without a record of its own, its organizational domain's sp (else p).
inherited_from*|The organizational domain whose DMARC record applies, when this domain publishes none of its own.
policy_since*|When a DNS check first saw the current policy.
stage*stringWhere the domain is on the path to enforcement: not_checked (DNS not checked yet), no_record, monitoring (p=none), quarantine or reject.
"not_checked""no_record""monitoring""quarantine""reject"partial*booleanThe policy applies only partly (pct below 100, or t=y).
reporting*booleanThe published record sends aggregate reports to report_address.
ready*booleanWhether next is safe to publish now.
next*|The next step: publish a first record, add_reporting (send reports to COSS), complete_rollout (drop pct/t=y) or tighten to the next policy. null at p=reject.
checks*array<>The readiness checks gating next, from the last 14 days of reports.
warnings*array<string>report_summary*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.get("dom_01k7c8m4q2f3e9v6t5r1n0p8yz");{ "object": "domain_dmarc", "domain_id": "dom_01k7c8m4q2f3e9v6t5r1n0p8yz", "report_address": "dmarc-k3x9m2pq7rtw4nbc@inbound.coss.com", "record": { "value": "v=DMARC1; p=none; rua=mailto:dmarc-k3x9m2pq7rtw4nbc@inbound.coss.com;", "p": "none", "sp": null, "np": null, "adkim": null, "aspf": null, "pct": null, "t": null, "rua": [ "mailto:dmarc-k3x9m2pq7rtw4nbc@inbound.coss.com" ] }, "policy": "none", "inherited_from": null, "policy_since": "2026-09-20T08:00:00.000Z", "stage": "monitoring", "partial": false, "reporting": true, "ready": true, "next": { "kind": "tighten", "policy": "quarantine", "record": "v=DMARC1; p=quarantine; rua=mailto:dmarc-k3x9m2pq7rtw4nbc@inbound.coss.com;" }, "checks": [ { "id": "coss_pass_rate", "ok": true, "message": "100% of mail sent through COSS passes DMARC (99% needed)." } ], "warnings": [], "report_summary": { "period_start": "2026-09-26T00:00:00.000Z", "period_end": "2026-10-10T00:00:00.000Z", "reports": 28, "messages": 1846, "passing": 1840, "coss_messages": 1840, "coss_passing": 1840, "first_report_at": "2026-09-21T00:00:00.000Z", "last_report_at": "2026-10-09T23:59:59.000Z", "sources": [ { "source_ip": "54.240.8.12", "header_from": "acme.com", "messages": 1840, "passing": 1840, "via_coss": true } ] }}