| Code | Description |
|---|---|
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 500 | Server crashed for some reason |
{
"note": "When updating or deleting an account, you can use either the 'id' (numeric) or 'slug' in the URL parameter. For example: PUT /v2/accounts/1473 or PUT /v2/accounts/my-team",
"owned_accounts": [
{
"id": 1462,
"title": "Default",
"slug": "default-16243a33-8c11-4989-85e1-0b4a09943a05",
"created_at": "2023-02-22T08:59:26.246Z",
"updated_at": "2023-02-22T08:59:26.246Z",
"user_id": 1
},
{
"id": 1473,
"title": "QA testing update",
"slug": "qa-testing",
"created_at": "2023-02-23T13:10:03.072Z",
"updated_at": "2023-04-07T06:44:16.693Z",
"user_id": 1
}
],
"accounts": [
{
"id": 1487,
"title": "testingNew",
"slug": "testingnew",
"created_at": "2023-03-01T11:09:29.357Z",
"updated_at": "2023-03-01T11:09:29.357Z",
"user_id": 1
},
{
"id": 1488,
"title": "testing",
"slug": "testing-ff8ed30a-1b65-4a89-bd22-19d358a1a9bc",
"created_at": "2023-03-01T11:09:29.455Z",
"updated_at": "2023-03-01T11:09:29.455Z",
"user_id": 1
}
]
}
The :id parameter can be either the numeric ID or the slug of the account
| Code | Description |
|---|---|
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 500 | Server crashed for some reason |
{
"id": 1473,
"title": "QA testing update",
"slug": "qa-testing",
"created_at": "2023-02-23T13:10:03.072Z",
"updated_at": "2026-04-07T06:44:16.693Z",
"user_id": 1,
"domains_count": 8
}
| Param name | Description |
|---|---|
|
id required |
Account ID (numeric, e.g., “1473”) or slug (e.g., “my-team”) Validations:
|
| Code | Description |
|---|---|
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 500 | Server crashed for some reason |
| Param name | Description |
|---|---|
|
account required |
Validations:
|
|
account[title] required |
title of account Validations:
|
The :id parameter can be either the numeric ID or the slug of the account
| Code | Description |
|---|---|
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 500 | Server crashed for some reason |
| Param name | Description |
|---|---|
|
id required |
Account ID (numeric, e.g., “1473”) or slug (e.g., “my-team”) Validations:
|
|
account required |
Validations:
|
|
account[title] required |
Title of team Validations:
|
The :id parameter can be either the numeric ID or the slug of the account
| Code | Description |
|---|---|
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 500 | Server crashed for some reason |
| Param name | Description |
|---|---|
|
id required |
Account ID (numeric, e.g., “1473”) or slug (e.g., “my-team”) Validations:
|
Returns an overall DMARC compliance scorecard for all domains in an account. Uses a single optimized database query to fetch stats for all domains at once.
Response includes: - total_domains: Number of domains in the account - active_domains: Domains with email volume in the period - total_email_volume: Total emails across all domains - overall_compliance_rate: Weighted average compliance rate - policy_distribution: Count of domains by DMARC policy (none/quarantine/reject) - grade_distribution: Count of domains by security grade (A-F) - domains_needing_attention: Domains with grade D or F - domains_ready_to_advance: Domains ready for stronger policy - domains: Per-domain breakdown with policy, compliance, volume, grade, and readiness
Each domain includes readiness indicators: - ready_to_advance: Boolean - true if domain can move to stronger policy - advance_to: Target policy (quarantine or reject) if ready - readiness_note: Human-readable status message - at_max_protection: True when at p=reject with 98%+ compliance
Grades reflect current protection level: - A: p=reject with 98%+ compliance (full protection) - B: p=reject 90%+ OR p=quarantine 90%+ compliance - C: p=reject 80%+ OR p=quarantine 80%+ OR p=none 90%+ - D: p=reject 70%+ OR p=quarantine 70%+ OR p=none 70%+ - F: Below 70% or no DMARC policy
| Code | Description |
|---|---|
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 500 | Server crashed for some reason |
{
"account_id": 1473,
"account_name": "My Company",
"period": {
"start_date": "2026-05-01",
"end_date": "2026-05-31",
"days": 30
},
"total_domains": 5,
"active_domains": 4,
"total_email_volume": 12500,
"overall_compliance_rate": 94.2,
"policy_distribution": {
"none": 1,
"quarantine": 2,
"reject": 1,
"not_set": 1
},
"grade_distribution": {
"A": 1,
"B": 2,
"C": 1,
"D": 0,
"F": 1
},
"domains_needing_attention": [
{
"id": 105,
"address": "legacy.example.com",
"policy": "not_set",
"compliance_rate": 0,
"volume": 0,
"grade": "F",
"ready_to_advance": false,
"readiness_note": "Configure DMARC policy to begin protection"
}
],
"domains_ready_to_advance": [
{
"id": 101,
"address": "example.com",
"policy": "none",
"compliance_rate": 96.5,
"volume": 8500,
"grade": "C",
"ready_to_advance": true,
"advance_to": "quarantine",
"readiness_note": "96.5% compliance achieved - ready to enable quarantine policy"
},
{
"id": 102,
"address": "mail.example.com",
"policy": "quarantine",
"compliance_rate": 99.1,
"volume": 2500,
"grade": "B",
"ready_to_advance": true,
"advance_to": "reject",
"readiness_note": "99.1% compliance achieved - ready for full reject policy"
}
],
"domains": [
{
"id": 101,
"address": "example.com",
"policy": "none",
"compliance_rate": 96.5,
"volume": 8500,
"grade": "C",
"ready_to_advance": true,
"advance_to": "quarantine",
"readiness_note": "96.5% compliance achieved - ready to enable quarantine policy"
},
{
"id": 102,
"address": "mail.example.com",
"policy": "quarantine",
"compliance_rate": 99.1,
"volume": 2500,
"grade": "B",
"ready_to_advance": true,
"advance_to": "reject",
"readiness_note": "99.1% compliance achieved - ready for full reject policy"
},
{
"id": 103,
"address": "marketing.example.com",
"policy": "quarantine",
"compliance_rate": 92.3,
"volume": 1200,
"grade": "B",
"ready_to_advance": false,
"readiness_note": "92.3% compliance - needs 98% for reject"
},
{
"id": 104,
"address": "support.example.com",
"policy": "reject",
"compliance_rate": 99.5,
"volume": 300,
"grade": "A",
"ready_to_advance": false,
"at_max_protection": true,
"readiness_note": "Full protection achieved - maintain current policy"
},
{
"id": 105,
"address": "legacy.example.com",
"policy": "not_set",
"compliance_rate": 0,
"volume": 0,
"grade": "F",
"ready_to_advance": false,
"readiness_note": "Configure DMARC policy to begin protection"
}
]
}
| Param name | Description |
|---|---|
|
id required |
Account ID (numeric or slug) Validations:
|
|
days optional |
Number of days to analyze (default: 30, max: 90) Validations:
|