Supported Formats

JSON

GET https://api.dmarcreport.com/v2/all_domains.json
List of all Domains

Returns a list of all domains across all accounts for the authenticated user.

Response includes: - parked_domain (boolean): Indicates if the domain is parked (true) or live (false). Parked domains have limited message volume. - tags (array): Array of tag objects associated with the domain, each containing id, name, and color.

Supported Formats

JSON

Errors

Code Description
401 Unauthorized
403 Forbidden
404 Not Found
500 Server crashed for some reason

Examples

{
    "domains": [
        {
            "id": 2593,
            "user_id": 1,
            "address": "123.com",
            "slug": "123-com",
            "rua_report": true,
            "ruf_report": true,
            "mta_sts_report": null,
            "dmarc_status": "dmarc_record_published",
            "mta_sts_status": "mta_sts_inactive",
            "parked_domain": false,
            "created_at": "2023-03-31T11:49:04.099Z",
            "updated_at": "2023-04-06T16:00:41.258Z",
            "tags": [
                {
                    "id": 1,
                    "name": "Production",
                    "color": "#3B82F6"
                }
            ]
        },
        {
            "id": 2503,
            "user_id": 1,
            "address": "sampledomain.com",
            "slug": "sampledomain-com",
            "rua_report": true,
            "ruf_report": true,
            "mta_sts_report": false,
            "dmarc_status": "dmarc_inactive",
            "mta_sts_status": "mta_sts_inactive",
            "parked_domain": true,
            "created_at": "2022-04-15T11:05:05.212Z",
            "updated_at": "2023-04-06T16:00:26.839Z",
            "tags": []
        },
        {
            "id": 2596,
            "user_id": 1,
            "address": "dmarcreport.com",
            "slug": "dmarcreport-com",
            "rua_report": true,
            "ruf_report": true,
            "mta_sts_report": true,
            "dmarc_status": "dmarc_record_published",
            "mta_sts_status": "mta_sts_active",
            "parked_domain": false,
            "created_at": "2022-04-15T11:05:05.212Z",
            "updated_at": "2023-04-06T16:00:26.839Z",
            "tags": [
                {
                    "id": 2,
                    "name": "Client-A",
                    "color": "#10B981"
                },
                {
                    "id": 3,
                    "name": "Enterprise",
                    "color": "#F59E0B"
                }
            ]
        }
    ]
}

GET https://api.dmarcreport.com/v2/accounts/:account_id/domains.json
List of all domains in given account

Returns a list of all domains in the specified account.

Response includes: - parked_domain (boolean): Indicates if the domain is parked (true) or live (false). Parked domains have limited message volume. - tags (array): Array of tag objects associated with the domain, each containing id, name, and color.

Supported Formats

JSON

Errors

Code Description
401 Unauthorized
403 Forbidden
404 Not Found
500 Server crashed for some reason

Examples

{
    "domains": [
        {
            "id": 2593,
            "user_id": 1,
            "address": "123.com",
            "slug": "123-com",
            "rua_report": true,
            "ruf_report": true,
            "mta_sts_report": null,
            "dmarc_status": "dmarc_record_published",
            "mta_sts_status": "mta_sts_inactive",
            "parked_domain": false,
            "created_at": "2023-03-31T11:49:04.099Z",
            "updated_at": "2023-04-06T16:00:41.258Z",
            "tags": [
                {
                    "id": 1,
                    "name": "Production",
                    "color": "#3B82F6"
                }
            ]
        },
        {
            "id": 2503,
            "user_id": 1,
            "address": "sampledomain.com",
            "slug": "sampledomain-com",
            "rua_report": true,
            "ruf_report": true,
            "mta_sts_report": false,
            "dmarc_status": "dmarc_inactive",
            "mta_sts_status": "mta_sts_inactive",
            "parked_domain": true,
            "created_at": "2022-04-15T11:05:05.212Z",
            "updated_at": "2023-04-06T16:00:26.839Z",
            "tags": []
        },
        {
            "id": 2596,
            "user_id": 1,
            "address": "dmarcreport.com",
            "slug": "dmarcreport-com",
            "rua_report": true,
            "ruf_report": true,
            "mta_sts_report": true,
            "dmarc_status": "dmarc_record_published",
            "mta_sts_status": "mta_sts_active",
            "parked_domain": false,
            "created_at": "2022-04-15T11:05:05.212Z",
            "updated_at": "2023-04-06T16:00:26.839Z",
            "tags": [
                {
                    "id": 2,
                    "name": "Client-A",
                    "color": "#10B981"
                },
                {
                    "id": 3,
                    "name": "Enterprise",
                    "color": "#F59E0B"
                }
            ]
        }
    ]
}

GET https://api.dmarcreport.com/v2/accounts/:account_id/domains/:id.json
Get all the details of a Domain

Returns detailed information about a specific domain.

The :id parameter can be either the numeric ID or the slug of the domain.

Response includes: - parked_domain (boolean): Indicates if the domain is parked (true) or live (false). Parked domains have limited message volume. - tags (array): Array of tag objects associated with the domain, each containing id, name, and color.

Supported Formats

JSON

Errors

Code Description
401 Unauthorized
403 Forbidden
404 Not Found
500 Server crashed for some reason

Examples

{
    "id": 16,
    "user_id": 1,
    "address": "abc.com",
    "slug": "abc-com",
    "rua_report": true,
    "ruf_report": true,
    "mta_sts_report": true,
    "dmarc_status": "dmarc_active",
    "mta_sts_status": "mta_sts_active",
    "parked_domain": false,
    "created_at": "2020-04-21T23:33:47.526Z",
    "updated_at": "2023-04-06T16:00:24.086Z",
    "tags": [
        {
            "id": 1,
            "name": "Production",
            "color": "#3B82F6"
        },
        {
            "id": 2,
            "name": "Client-A",
            "color": "#10B981"
        }
    ]
}

Params

Param name Description
id
required

Domain ID (numeric, e.g., “123”) or slug (e.g., “example-com”)

Validations:

  • Must be a String


POST https://api.dmarcreport.com/v2/accounts/:account_id/domains.json
Add your domain

Creates a new domain in the specified account.

Parked Domains: Set parked_domain: true to create a parked domain. Parked domains have limited message volume and are useful for domains that don’t actively send email. Requires parked domain quota in your subscription.

Response includes: - parked_domain (boolean): Indicates if the domain is parked or live - parked_domain_credits (integer): Message credits remaining (only for parked domains) - parked_domain_status (string): Status of parked domain (only for parked domains) - tags (array): Array of tag objects associated with the domain

Supported Formats

JSON

Errors

Code Description
401 Unauthorized
403 Forbidden
404 Not Found
500 Server crashed for some reason

Params

Param name Description
domain
required

Validations:

  • Must be a Hash

domain[address]
required

Address of your domain

Validations:

  • Must be a String

domain[rua_report]
required

Receives RUA Report against your domain

Validations:

  • Must be one of: true, false, true, false.

domain[ruf_report]
required

Receives RUF Report against your domain

Validations:

  • Must be one of: true, false, true, false.

domain[mta_sts_report]
optional

Receives MTA-STS Report against your domain

Validations:

  • Must be one of: true, false, true, false.

domain[parked_domain]
optional

Set to true to create a parked domain with limited message volume (requires parked domain quota)

Validations:

  • Must be one of: true, false, true, false.

domain[tag_ids]
optional

Array of tag IDs to attach to the domain

Validations:

  • Must be an array of any type

domain[tag_names]
optional

Array of tag names to attach to the domain (must exist)

Validations:

  • Must be an array of any type

domain[mta_sts_policy]
optional

Validations:

  • Must be a Hash

domain[mta_sts_policy][mode]
required

Policy Mode

Validations:

  • Must be one of: testing, enforce.

domain[mta_sts_policy][mx]
required

Detected Mail Records Separated by comma eg: custmx.cscdns.net, mail.dmarc.com

Validations:

  • Must be a String

domain[mta_sts_policy][mx_age]
required

Policy Age (Valid Time in_days)

Validations:

  • Must be one of: 1_day, 2_days, 3_days, 4_days, 5_days, 6_days, 7_days, 2_weeks, 1_month, 2_months, 3_months, 6_months, 12_months.


PUT https://api.dmarcreport.com/v2/accounts/:account_id/domains/:id.json
Update domain settings

Updates settings for a specific domain.

Hosted Services: Enable hosted DMARC or MTA-STS to have DNS records managed by our system. When enabled, the response includes CNAME records you must add to your DNS.

  • hosted_dmarc: Enable hosted DMARC (requires paid plan)
  • hosted_mta_sts: Enable hosted MTA-STS (requires paid plan and mta_sts_report enabled)
  • hosted_dmarc_config: Custom DMARC record (optional)

DMARC Record: When you enable hosted DMARC, we generate a default record for you. The response includes default_dmarc_record and current_dmarc_config fields. If you want to customize the record (policy, sp, pct, etc.), provide hosted_dmarc_config but keep the RUA and RUF addresses from the default record - these are required to receive reports.

Parked Domain Restrictions: - Hosted MTA-STS is not available for parked domains - Hosted DMARC for parked domains requires p=reject policy - Subdomain policy (sp) must also be reject for parked domains

After adding the CNAME records, use the verify endpoints to check propagation.

Supported Formats

JSON

Errors

Code Description
401 Unauthorized
403 Forbidden
404 Not Found
500 Server crashed for some reason

Params

Param name Description
domain
required

Validations:

  • Must be a Hash

domain[rua_report]
optional

Receives RUA Report against your domain

Validations:

  • Must be one of: true, false, true, false.

domain[ruf_report]
optional

Receives RUF Report against your domain

Validations:

  • Must be one of: true, false, true, false.

domain[mta_sts_report]
optional

Receives MTA-STS Report against your domain

Validations:

  • Must be one of: true, false, true, false.

domain[hosted_dmarc]
optional

Enable hosted DMARC - DNS records managed by our system (requires paid plan)

Validations:

  • Must be one of: true, false, true, false.

domain[hosted_dmarc_config]
optional

Custom DMARC record. Must include RUA and RUF addresses from default_dmarc_record to receive reports.

Validations:

  • Must be a String

domain[hosted_mta_sts]
optional

Enable hosted MTA-STS - DNS records managed by our system (requires paid plan and mta_sts_report)

Validations:

  • Must be one of: true, false, true, false.


GET https://api.dmarcreport.com/v2/accounts/:account_id/domains/:id/hosted_services.json
Get hosted services status and CNAME records

Returns the current status of hosted services for a domain, including: - Whether hosted DMARC and MTA-STS are enabled - CNAME records that need to be added to DNS - Current CNAME verification status

Use this endpoint to get the CNAME values after enabling hosted services, and to check the current propagation status.

Supported Formats

JSON

Errors

Code Description
401 Unauthorized
403 Forbidden
404 Not Found
500 Server crashed for some reason

POST https://api.dmarcreport.com/v2/accounts/:account_id/domains/:id/verify_hosted_dmarc.json
Verify hosted DMARC setup status

Checks the complete status of hosted DMARC setup including CNAME propagation and Route53 TXT record.

Response includes: - overall_status: Overall setup status - ready: All records configured and published - action_required: User needs to add/fix CNAME records - pending: System is still processing - cname: CNAME record status (user’s DNS) - verified: CNAME correctly configured - awaiting_setup: User hasn’t added CNAME yet - misconfigured: CNAME exists but has wrong value - txt_record: TXT record status (our Route53) - published: Record is live in Route53 - queued: Record creation in progress

Supported Formats

JSON

Errors

Code Description
401 Unauthorized
403 Forbidden
404 Not Found
500 Server crashed for some reason

POST https://api.dmarcreport.com/v2/accounts/:account_id/domains/:id/verify_hosted_mta_sts.json
Verify hosted MTA-STS setup status

Checks the complete status of hosted MTA-STS setup including all CNAME records, Route53 TXT records, and policy file.

Response includes: - overall_status: Overall setup status - ready: All records configured, published, and policy file active - action_required: User needs to add/fix CNAME records - pending: System is still processing - records.policy_cname: Policy CNAME status (mta-sts.domain.com) - records.mta_sts_record: MTA-STS record status (_mta-sts.domain.com) - cname_status: CNAME verification status - txt_record_status: Route53 TXT record status - records.tls_rpt_record: TLS-RPT record status (_smtp._tls.domain.com) - cname_status: CNAME verification status - txt_record_status: Route53 TXT record status - records.policy_file: MTA-STS policy file status - active: Policy file accessible - pending: Policy file not yet created - unreachable: Unable to reach policy file

CNAME statuses: verified, awaiting_setup, misconfigured TXT record statuses: published, queued

Supported Formats

JSON

Errors

Code Description
401 Unauthorized
403 Forbidden
404 Not Found
500 Server crashed for some reason

Params

Param name Description
record
optional

Which record to verify: policy, mta_sts, tls_rpt, or all (default: all)

Validations:

  • Must be one of: policy, mta_sts, tls_rpt, all.


POST https://api.dmarcreport.com/v2/accounts/:account_id/domains/:id/generate_dmarc_record.json
Generate a DMARC record

Generates a DMARC record for your domain with all the options available in our UI. Our reporting addresses (RUA and RUF) are automatically included.

Standard DMARC Options: - p (policy): How to handle emails that fail DMARC (none, quarantine, reject) - sp (subdomain policy): Policy for subdomains (none, quarantine, reject) - pct (percentage): Percentage of emails to apply the policy to (0-100) - adkim (DKIM alignment): How strictly to check DKIM (r=relaxed, s=strict) - aspf (SPF alignment): How strictly to check SPF (r=relaxed, s=strict) - fo (forensic options): When to send forensic reports (0, 1, d, s - can combine with colon) - additional_rua_emails (array): Additional email addresses for aggregate reports - additional_ruf_emails (array): Additional email addresses for forensic reports

DMARCbis Options (newer standard): - t (test mode): Enable test mode - reports only, no policy enforcement (y, n) - psd (public suffix domain): Is this a public suffix domain? (y, n, u=unknown) - np (non-existent subdomain policy): Policy for non-existent subdomains (none, quarantine, reject)

Forensic Options (fo) explained: - 0: Send report if all authentication fails (default) - 1: Send report if any authentication fails - d: Send report if DKIM fails - s: Send report if SPF fails - Combine with colon, e.g., “1:d:s” for multiple options

Supported Formats

JSON

Errors

Code Description
401 Unauthorized
403 Forbidden
404 Not Found
500 Server crashed for some reason

Params

Param name Description
p
required

Policy: none (monitor), quarantine (spam folder), reject (block)

Validations:

  • Must be one of: none, quarantine, reject.

sp
optional

Subdomain policy (optional)

Validations:

  • Must be one of: none, quarantine, reject.

pct
optional

Percentage of emails to apply policy (0-100)

Validations:

  • Must be a Integer

adkim
optional

DKIM alignment: r=relaxed (default), s=strict

Validations:

  • Must be one of: r, s.

aspf
optional

SPF alignment: r=relaxed (default), s=strict

Validations:

  • Must be one of: r, s.

fo
optional

Forensic options: 0, 1, d, s (combine with colon, e.g., “1:d”)

Validations:

  • Must be a String

additional_rua_emails
optional

Additional aggregate report email addresses

Validations:

  • Must be an array of any type

additional_ruf_emails
optional

Additional forensic report email addresses

Validations:

  • Must be an array of any type

t
optional

DMARCbis: Test mode (y=yes, n=no)

Validations:

  • Must be one of: y, n.

psd
optional

DMARCbis: Public suffix domain (y=yes, n=no, u=unknown)

Validations:

  • Must be one of: y, n, u.

np
optional

DMARCbis: Non-existent subdomain policy

Validations:

  • Must be one of: none, quarantine, reject.

publish
optional

Also publish this record to hosted DMARC (requires hosted_dmarc enabled)

Validations:

  • Must be one of: true, false, true, false.


DELETE https://api.dmarcreport.com/v2/accounts/:account_id/domains/:id.json
Delete a domain

Supported Formats

JSON

Errors

Code Description
401 Unauthorized
403 Forbidden
404 Not Found
500 Server crashed for some reason