Skip to content
Start here

Get DMARC Report Status

client.EmailAuth.DMARCReports.Get(ctx, query) (*DMARCReportGetResponse, error)
GET/zones/{zone_id}/email/auth/dmarc-reports

Retrieves the current DMARC report configuration and status for a zone. Returns the RUA prefix, enabled status, approved sources, and DNS records.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
ParametersExpand Collapse
query DMARCReportGetParams
ZoneID param.Field[string]

Identifier.

maxLength32
ReturnsExpand Collapse
type DMARCReportGetResponse struct{…}

Response for GET/PATCH /dmarc-reports

ApprovedSources []DMARCReportGetResponseApprovedSourceOptional

List of approved sending sources (omitted when empty)

DeprecatedCreated TimeOptional

Deprecated, use created_at

formatdate-time
CreatedAt TimeOptional

Creation timestamp

formatdate-time
Domain stringOptional

The source domain

IPs []stringOptional

Resolved IP addresses from SPF

DeprecatedModified TimeOptional

Deprecated, use modified_at

formatdate-time
ModifiedAt TimeOptional

Last modification timestamp

formatdate-time
Name stringOptional

Source name (typically same as domain)

Slug stringOptional

URL-friendly identifier

Tag stringOptional

Source UUID

DeprecatedCreated TimeOptional

Deprecated, use created_at

formatdate-time
CreatedAt TimeOptional

Creation timestamp

formatdate-time
Enabled boolOptional

Whether DMARC reports are enabled

DeprecatedModified TimeOptional

Deprecated, use modified_at

formatdate-time
ModifiedAt TimeOptional

Last modification timestamp

formatdate-time
Records DMARCReportGetResponseRecordsOptional

Live DNS records for the zone, grouped by type

BimiRecords []DMARCReportGetResponseRecordsBimiRecordOptional

BIMI TXT records

ID stringOptional

DNS record ID

Content stringOptional

Record content

Name stringOptional

DNS record name

TTL int64Optional

Time to live in seconds

Type stringOptional

Record type

CNAMEDKIMRecords []DMARCReportGetResponseRecordsCnamedkimRecordOptional

CNAME records for DKIM

ID stringOptional

DNS record ID

Content stringOptional

Record content

Name stringOptional

DNS record name

TTL int64Optional

Time to live in seconds

Type stringOptional

Record type

CNAMEDMARCRecords []DMARCReportGetResponseRecordsCnamedmarcRecordOptional

CNAME records at _dmarc (problematic)

ID stringOptional

DNS record ID

Content stringOptional

Record content

Name stringOptional

DNS record name

TTL int64Optional

Time to live in seconds

Type stringOptional

Record type

CNAMESPFRecords []DMARCReportGetResponseRecordsCnamespfRecordOptional

CNAME records for SPF

ID stringOptional

DNS record ID

Content stringOptional

Record content

Name stringOptional

DNS record name

TTL int64Optional

Time to live in seconds

Type stringOptional

Record type

DKIMRecords []DMARCReportGetResponseRecordsDKIMRecordOptional

DKIM TXT records

ID stringOptional

DNS record ID

Content stringOptional

Record content

Name stringOptional

DNS record name

TTL int64Optional

Time to live in seconds

Type stringOptional

Record type

DMARCRecords []DMARCReportGetResponseRecordsDMARCRecordOptional

DMARC TXT records

ID stringOptional

DNS record ID

Content stringOptional

Record content

Name stringOptional

DNS record name

TTL int64Optional

Time to live in seconds

Type stringOptional

Record type

SPFRecords []DMARCReportGetResponseRecordsSPFRecordOptional

SPF TXT records

ID stringOptional

DNS record ID

Content stringOptional

Record content

Name stringOptional

DNS record name

TTL int64Optional

Time to live in seconds

Type stringOptional

Record type

RuaPrefix stringOptional

Prefix for DMARC RUA addresses (32-char hex string)

SkipWizard boolOptional

Whether to skip the setup wizard

Status DMARCReportGetResponseStatusOptional

DMARC configuration status

One of the following:
const DMARCReportGetResponseStatusMissingDMARCReport DMARCReportGetResponseStatus = "missing-dmarc-report"
const DMARCReportGetResponseStatusMultipleDMARCReports DMARCReportGetResponseStatus = "multiple-dmarc-reports"
const DMARCReportGetResponseStatusMissingDMARCRua DMARCReportGetResponseStatus = "missing-dmarc-rua"
const DMARCReportGetResponseStatusCNAMEOnDMARCRecord DMARCReportGetResponseStatus = "cname-on-dmarc-record"
DeprecatedTag stringOptional

Use zone_id instead

ZoneID stringOptional

Zone identifier

Get DMARC Report Status

package main

import (
  "context"
  "fmt"

  "github.com/cloudflare/cloudflare-go"
  "github.com/cloudflare/cloudflare-go/email_auth"
  "github.com/cloudflare/cloudflare-go/option"
)

func main() {
  client := cloudflare.NewClient(
    option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"),
  )
  dmarcReport, err := client.EmailAuth.DMARCReports.Get(context.TODO(), email_auth.DMARCReportGetParams{
    ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", dmarcReport.ZoneID)
}
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "approved_sources": [
      {
        "created": "2024-01-15T10:30:00.12345Z",
        "created_at": "2024-01-15T10:30:00.12345Z",
        "domain": "sendgrid.net",
        "ips": [
          "192.168.1.1",
          "10.0.0.1"
        ],
        "modified": "2024-01-15T11:45:00.12345Z",
        "modified_at": "2024-01-15T11:45:00.12345Z",
        "name": "SendGrid",
        "slug": "sendgrid-net",
        "tag": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415"
      }
    ],
    "created": "2024-01-15T10:30:00.12345Z",
    "created_at": "2024-01-15T10:30:00.12345Z",
    "enabled": true,
    "modified": "2024-01-15T11:45:00.12345Z",
    "modified_at": "2024-01-15T11:45:00.12345Z",
    "records": {
      "bimi_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "cname_dkim_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "cname_dmarc_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "cname_spf_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "dkim_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "dmarc_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "spf_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ]
    },
    "rua_prefix": "9233c80fc89f43e3a7b749605f651868",
    "skip_wizard": false,
    "status": "missing-dmarc-report",
    "tag": "023e105f4ecef8ad9ca31a8372d0c353",
    "zone_id": "023e105f4ecef8ad9ca31a8372d0c353"
  }
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "approved_sources": [
      {
        "created": "2024-01-15T10:30:00.12345Z",
        "created_at": "2024-01-15T10:30:00.12345Z",
        "domain": "sendgrid.net",
        "ips": [
          "192.168.1.1",
          "10.0.0.1"
        ],
        "modified": "2024-01-15T11:45:00.12345Z",
        "modified_at": "2024-01-15T11:45:00.12345Z",
        "name": "SendGrid",
        "slug": "sendgrid-net",
        "tag": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415"
      }
    ],
    "created": "2024-01-15T10:30:00.12345Z",
    "created_at": "2024-01-15T10:30:00.12345Z",
    "enabled": true,
    "modified": "2024-01-15T11:45:00.12345Z",
    "modified_at": "2024-01-15T11:45:00.12345Z",
    "records": {
      "bimi_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "cname_dkim_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "cname_dmarc_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "cname_spf_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "dkim_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "dmarc_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ],
      "spf_records": [
        {
          "id": "e5bb46707a802688812d5d1c9f7977d4",
          "content": "\"v=DMARC1; p=none; rua=mailto:rua@dmarc-reports.cloudflare.net\"",
          "name": "_dmarc.example.com",
          "ttl": 300,
          "type": "TXT"
        }
      ]
    },
    "rua_prefix": "9233c80fc89f43e3a7b749605f651868",
    "skip_wizard": false,
    "status": "missing-dmarc-report",
    "tag": "023e105f4ecef8ad9ca31a8372d0c353",
    "zone_id": "023e105f4ecef8ad9ca31a8372d0c353"
  }
}