Security & Trust · DomScan product

Email Compliance API

Analyze email authentication records including SPF, DKIM, and DMARC.

What you get

Analyze email authentication records including SPF, DKIM, and DMARC.

SynchronousRESTMCPSDK

Choose this product when

Who it is for

Use bounded passive checks to enrich triage and investigation, not to replace authorized testing or human review.

Choose this product when

Choose this for a policy-oriented review of public email controls and published compliance signals.

What you get

Analyze email authentication records including SPF, DKIM, and DMARC.

Endpoints

Review the supported operations, inputs, outputs, execution modes, and response limits before integrating.

GET /v1/email/compliance View API reference

Credits and authentication

6 Authentication required. Check the operation reference for the exact cost and any per-item pricing.

Example operation

Use documented operations to collect, assess, enrich, verify, compare, protect, or monitor public evidence.

GET /v1/email/compliance

Query Parameters

Parameter Type required
domain string required
selectors string optional
providers string optional

Response Fields

Field Type
domain string
status string
score integer
grade string
provider_readiness object
provider_readiness.google object
provider_readiness.google.provider string
provider_readiness.google.display_name string
provider_readiness.google.status string
provider_readiness.google.dns_visible_status string
provider_readiness.google.requirements[] object[]
provider_readiness.google.requirements[] object
provider_readiness.google.requirements[].id string
provider_readiness.google.requirements[].label string
provider_readiness.google.requirements[].status string
provider_readiness.google.requirements[].severity string
provider_readiness.google.requirements[].category string
provider_readiness.google.requirements[].evidence string
provider_readiness.google.requirements[].recommendation string
provider_readiness.google.verification_required[] string[]
provider_readiness.google.notes[] string[]
provider_readiness.microsoft object
provider_readiness.microsoft.provider string
provider_readiness.microsoft.display_name string
provider_readiness.microsoft.status string
provider_readiness.microsoft.dns_visible_status string
provider_readiness.microsoft.requirements[] object[]
provider_readiness.microsoft.requirements[] object
provider_readiness.microsoft.requirements[].id string
provider_readiness.microsoft.requirements[].label string
provider_readiness.microsoft.requirements[].status string
provider_readiness.microsoft.requirements[].severity string
provider_readiness.microsoft.requirements[].category string
provider_readiness.microsoft.requirements[].evidence string
provider_readiness.microsoft.requirements[].recommendation string
provider_readiness.microsoft.verification_required[] string[]
provider_readiness.microsoft.notes[] string[]
summary object
summary.authentication object
summary.transport object
summary.dns_security object
summary.brand_trust object
action_items[] object[]
action_items[] object
action_items[].priority string
action_items[].category string
action_items[].title string
action_items[].detail string
action_items[].fix string
evidence object
evidence.email_auth object
evidence.dns_security object
proxy object
proxy.configured boolean
proxy.enriched boolean
proxy.checks[] string[]
limitations[] string[]
checked_at string
check_duration_ms integer

Example Request

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/email/compliance?domain=example.com&selectors=google%2Cselector1%2Csendgrid&providers=google%2Cmicrosoft"

Example Response

{
  "domain": "example.com",
  "status": "warn",
  "score": 82,
  "grade": "B",
  "provider_readiness": {
    "google": {
      "provider": "google",
      "display_name": "Google/Gmail bulk sender readiness",
      "status": "pass",
      "dns_visible_status": "pass",
      "requirements": [
        {
          "id": "google_spf",
          "label": "SPF must be configured for bulk senders",
          "status": "pass",
          "severity": "critical",
          "category": "dns",
          "evidence": "SPF policy: softfail",
          "recommendation": "Publish one valid SPF record that covers every approved sending platform."
        },
        {
          "id": "google_alignment",
          "label": "From domain must align with either SPF or DKIM on live messages",
          "status": "unknown",
          "severity": "high",
          "category": "message",
          "evidence": "Alignment requires Authentication-Results from a real sent message",
          "recommendation": "Send a test message and verify SPF or DKIM alignment."
        }
      ],
      "verification_required": [
        "From domain must align with either SPF or DKIM on live messages",
        "Outbound mail must be transmitted over TLS"
      ],
      "notes": [
        "Status is based on DNS-visible controls. Live sending requirements still need message-header and sender-platform verification."
      ]
    },
    "microsoft": {
      "provider": "microsoft",
      "display_name": "Microsoft Outlook.com high-volume sender readiness",
      "status": "pass",
      "dns_visible_status": "pass",
      "requirements": [],
      "verification_required": [
        "DMARC must align with either SPF or DKIM"
      ],
      "notes": [
        "Status is based on DNS-visible controls. Live sending requirements still need message-header and sender-platform verification."
      ]
    }
  },
  "summary": {
    "authentication": {
      "spf": {
        "status": "pass",
        "record": "v=spf1 include:_spf.example.com ~all",
        "policy": "softfail",
        "lookup_count": 3,
        "lookup_limit_exceeded": false
      },
      "dkim": {
        "status": "pass",
        "selectors_checked": [
          "google",
          "selector1",
          "sendgrid"
        ],
        "selectors_found": [
          "google"
        ],
        "valid_selector_count": 1,
        "weak_selector_count": 0,
        "revoked_selector_count": 0,
        "providers_detected": [
          "Google Workspace"
        ]
      },
      "dmarc": {
        "status": "warn",
        "record": "v=DMARC1; p=none; rua=mailto:[email protected]",
        "policy": "none",
        "subdomain_policy": null,
        "percentage": 100,
        "rua": [
          "mailto:[email protected]"
        ],
        "alignment_mode": {
          "spf": null,
          "dkim": null
        }
      }
    },
    "transport": {
      "mta_sts": {
        "status": "pass",
        "mode": "enforce",
        "policy_fetch_ok": true,
        "policy_matches_mx": true
      },
      "tls_rpt": {
        "status": "pass",
        "rua": [
          "mailto:[email protected]"
        ]
      },
      "mx_records": [
        "aspmx.l.google.com"
      ],
      "client_access_secure_services": 1
    },
    "dns_security": {
      "dnssec": "pass",
      "caa": "pass",
      "zone_transfer": "pass",
      "authoritative_consistency": "pass",
      "blacklist": "pass"
    },
    "brand_trust": {
      "bimi": "unknown",
      "vmc": "unknown"
    }
  },
  "action_items": [
    {
      "priority": "medium",
      "category": "authentication",
      "title": "Move DMARC beyond monitoring mode",
      "detail": "DMARC is valid but still uses p=none.",
      "fix": "After reviewing aggregate reports, move to p=quarantine or p=reject."
    }
  ],
  "evidence": {
    "email_auth": {
      "spf": {
        "record": "v=spf1 include:_spf.example.com ~all"
      },
      "dmarc": {
        "record": "v=DMARC1; p=none; rua=mailto:[email protected]"
      }
    },
    "dns_security": {
      "security_score": 86,
      "security_grade": "B"
    }
  },
  "proxy": {
    "configured": true,
    "enriched": true,
    "checks": [
      "spf_walk",
      "mail_policies",
      "dkim_audit",
      "bimi_audit"
    ]
  },
  "limitations": [
    "DNS-visible checks cannot prove live message-level SPF, DKIM, DMARC alignment, RFC 5322 formatting, spam rate, or one-click unsubscribe behavior."
  ],
  "checked_at": "2026-04-26T12:00:00Z",
  "check_duration_ms": 642
}

Limits and evidence boundaries

Results describe observed public evidence and its provenance.
Unknown means the requested fact could not be determined from the available evidence.
Mail and domain signals do not guarantee inbox placement or message delivery.
Evidence can change over time; use timestamps and freshness fields when provided.

Reviewed 2026-08-22

Frequently asked questions

Where can I find the Email Compliance request and response reference?

Use the API reference for Email Compliance to review parameters, response fields, examples, status codes, and supported operation modes.

How should I interpret unknown or incomplete results from Email Compliance?

Unknown or partial results mean that the requested evidence could not be fully determined. Keep the result state, confidence, freshness, and limitations in downstream decisions.

How is Email Compliance priced?

Pricing depends on the operation and execution mode. Check the endpoint reference for the current credit cost, authentication requirement, and per-item rules.

Used by people at amazing companies

InstantOutseerMongoDBRespondentSage Expense ManagementInstantlyD.R. HortonWhatConvertsAdobeMotionElementsLLM Pulse