MailSlurp logo

Understand domain monitor results

Documentation navigation
Search documentation

Interpret authentication evidence, compare domain checks and export findings without confusing unchecked signals with passes.

View MarkdownAgent setup

Start with the latest run's status and then read the individual evidence. A domain score summarizes the run; the underlying checks explain which record or sending behavior needs attention.

Read authentication and transport findings

Check What to investigate
SPF Confirm the published record includes the services that send for this domain.
DKIM Supply the selector used by your sender and inspect a delivered sample. Missing selector evidence is not proof that signing works or fails.
DMARC Review the policy and observed alignment. A published policy and an enforced policy are separate findings.
MX Confirm the expected receiving configuration and investigate unexpected changes.
BIMI, MTA-STS and TLS reporting Inspect the record and any supporting policy evidence returned by the check.
Blocklists Read whether the check ran and whether a listing was found. blacklistChecked: false must not be interpreted as a clean lookup.

Run statuses include HEALTHY, DEGRADED, CRITICAL and FAILED. Read errorMessage for execution failures and evidence and insights for the checks. DNS changes may take time to become visible; preserve the before/after evidence instead of repeatedly changing several records at once.

Add a delivered authentication sample

Create a verification address for the monitor, then send to it through your actual sending platform. Review the observed samples and auth stack alongside DNS evidence. This helps distinguish a published DKIM record from the signature and alignment on a real email.

POST /domain-monitor/monitors/{monitorId}/email-verification-address

Create or rotate domain monitor email verification address

Request, parameters, and responses

Path parameters

NameTypeRequiredDescription
monitorIdstring:uuidYes

Responses

StatusSchemaDescription
200DomainMonitorEmailVerificationDtoOK
HTTP and SDK snippets

HTTP

HTTP
POST /domain-monitor/monitors/00000000-0000-4000-8000-000000000000/email-verification-address HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json

cURL

cURL
curl -X POST "https://api.mailslurp.com/domain-monitor/monitors/00000000-0000-4000-8000-000000000000/email-verification-address" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Accept: application/json"

JavaScript SDK

JavaScript SDK
import { Configuration, DomainMonitorControllerApi } from "mailslurp-client";

const config = new Configuration({ apiKey: "YOUR_API_KEY" });
const domainMonitorController = new DomainMonitorControllerApi(config);
const request = {
  "monitorId": "00000000-0000-4000-8000-000000000000"
};

const result = await domainMonitorController.createDomainMonitorEmailVerificationAddress(request);

Python SDK

Python SDK
import mailslurp_client
from mailslurp_client.api.domain_monitor_controller_api import DomainMonitorControllerApi

configuration = mailslurp_client.Configuration()
configuration.api_key["x-api-key"] = "YOUR_API_KEY"

with mailslurp_client.ApiClient(configuration) as api_client:
    domainMonitorController = DomainMonitorControllerApi(api_client)
    result = domainMonitorController.create_domain_monitor_email_verification_address("00000000-0000-4000-8000-000000000000")
GET /domain-monitor/monitors/{monitorId}/observed-auth-samples

List domain monitor observed authentication samples

Request, parameters, and responses

Path parameters

NameTypeRequiredDescription
monitorIdstring:uuidYes

Responses

StatusSchemaDescription
200DomainMonitorObservedAuthSampleDto[]OK
HTTP and SDK snippets

HTTP

HTTP
GET /domain-monitor/monitors/00000000-0000-4000-8000-000000000000/observed-auth-samples HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json

cURL

cURL
curl -X GET "https://api.mailslurp.com/domain-monitor/monitors/00000000-0000-4000-8000-000000000000/observed-auth-samples" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Accept: application/json"

JavaScript SDK

JavaScript SDK
import { Configuration, DomainMonitorControllerApi } from "mailslurp-client";

const config = new Configuration({ apiKey: "YOUR_API_KEY" });
const domainMonitorController = new DomainMonitorControllerApi(config);
const request = {
  "monitorId": "00000000-0000-4000-8000-000000000000"
};

const result = await domainMonitorController.getDomainMonitorObservedAuthSamples(request);

Python SDK

Python SDK
import mailslurp_client
from mailslurp_client.api.domain_monitor_controller_api import DomainMonitorControllerApi

configuration = mailslurp_client.Configuration()
configuration.api_key["x-api-key"] = "YOUR_API_KEY"

with mailslurp_client.ApiClient(configuration) as api_client:
    domainMonitorController = DomainMonitorControllerApi(api_client)
    result = domainMonitorController.get_domain_monitor_observed_auth_samples("00000000-0000-4000-8000-000000000000")
GET /domain-monitor/monitors/{monitorId}/auth-stack

Get current auth stack for monitor domain

Request, parameters, and responses

Path parameters

NameTypeRequiredDescription
monitorIdstring:uuidYes

Query parameters

NameTypeRequiredDescription
dkimSelectorstringNo

Responses

StatusSchemaDescription
200CheckEmailAuthStackResultsOK
HTTP and SDK snippets

HTTP

HTTP
GET /domain-monitor/monitors/00000000-0000-4000-8000-000000000000/auth-stack?dkimSelector=value HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json

cURL

cURL
curl -X GET "https://api.mailslurp.com/domain-monitor/monitors/00000000-0000-4000-8000-000000000000/auth-stack?dkimSelector=value" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Accept: application/json"

JavaScript SDK

JavaScript SDK
import { Configuration, DomainMonitorControllerApi } from "mailslurp-client";

const config = new Configuration({ apiKey: "YOUR_API_KEY" });
const domainMonitorController = new DomainMonitorControllerApi(config);
const request = {
  "monitorId": "00000000-0000-4000-8000-000000000000",
  "dkimSelector": "value"
};

const result = await domainMonitorController.getDomainMonitorAuthStack(request);

Python SDK

Python SDK
import mailslurp_client
from mailslurp_client.api.domain_monitor_controller_api import DomainMonitorControllerApi

configuration = mailslurp_client.Configuration()
configuration.api_key["x-api-key"] = "YOUR_API_KEY"

with mailslurp_client.ApiClient(configuration) as api_client:
    domainMonitorController = DomainMonitorControllerApi(api_client)
    result = domainMonitorController.get_domain_monitor_auth_stack("00000000-0000-4000-8000-000000000000", dkim_selector="value")

Compare before and after a change

Record the run ID before changing DNS or sender configuration. Run the monitor again after the change is visible, then compare the two runs using compareDomainMonitorRuns. Keep the domain and selector context consistent so you know what changed.

// Read the latest summary, auth stack, historical runs, and chart series.
const summary = await mailslurp.domainMonitorController.getDomainMonitorSummary({
  monitorId: monitor.id,
  dkimSelector: "default",
});

const runs = await mailslurp.domainMonitorController.getDomainMonitorRuns({
  monitorId: monitor.id,
  limit: 10,
});

const series = await mailslurp.domainMonitorController.getDomainMonitorSeries({
  monitorId: monitor.id,
  since: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000),
  before: new Date(),
  bucket: "DAY",
});

console.log({
  latestRun: summary.latestRun,
  authStack: summary.authStack,
  runs,
  points: series.points,
});

Use the client and monitor from setup. Replace the example default DKIM selector with your sender's actual selector.

GET /domain-monitor/monitors/{monitorId}/runs/{runId}/compare/{otherRunId}

Compare two monitor runs

Request, parameters, and responses

Path parameters

NameTypeRequiredDescription
monitorIdstring:uuidYes
runIdstring:uuidYes
otherRunIdstring:uuidYes

Responses

StatusSchemaDescription
200DomainMonitorRunComparisonDtoOK
HTTP and SDK snippets

HTTP

HTTP
GET /domain-monitor/monitors/00000000-0000-4000-8000-000000000000/runs/00000000-0000-4000-8000-000000000000/compare/00000000-0000-4000-8000-000000000000 HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json

cURL

cURL
curl -X GET "https://api.mailslurp.com/domain-monitor/monitors/00000000-0000-4000-8000-000000000000/runs/00000000-0000-4000-8000-000000000000/compare/00000000-0000-4000-8000-000000000000" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Accept: application/json"

JavaScript SDK

JavaScript SDK
import { Configuration, DomainMonitorControllerApi } from "mailslurp-client";

const config = new Configuration({ apiKey: "YOUR_API_KEY" });
const domainMonitorController = new DomainMonitorControllerApi(config);
const request = {
  "monitorId": "00000000-0000-4000-8000-000000000000",
  "runId": "00000000-0000-4000-8000-000000000000",
  "otherRunId": "00000000-0000-4000-8000-000000000000"
};

const result = await domainMonitorController.compareDomainMonitorRuns(request);

Python SDK

Python SDK
import mailslurp_client
from mailslurp_client.api.domain_monitor_controller_api import DomainMonitorControllerApi

configuration = mailslurp_client.Configuration()
configuration.api_key["x-api-key"] = "YOUR_API_KEY"

with mailslurp_client.ApiClient(configuration) as api_client:
    domainMonitorController = DomainMonitorControllerApi(api_client)
    result = domainMonitorController.compare_domain_monitor_runs("00000000-0000-4000-8000-000000000000", "00000000-0000-4000-8000-000000000000", "00000000-0000-4000-8000-000000000000")
GET /domain-monitor/monitors/{monitorId}/runs/{runId}/results/export

Export monitor run results as CSV

Export one row per domain monitor check, including run-level score metadata and per-check pass, fail, or not-checked status.

Request, parameters, and responses

Path parameters

NameTypeRequiredDescription
monitorIdstring:uuidYes
runIdstring:uuidYes

Responses

StatusSchemaDescription
200ResponseOK
HTTP and SDK snippets

HTTP

HTTP
GET /domain-monitor/monitors/00000000-0000-4000-8000-000000000000/runs/00000000-0000-4000-8000-000000000000/results/export HTTP/1.1
Host: api.mailslurp.com
x-api-key: YOUR_API_KEY
Accept: application/json

cURL

cURL
curl -X GET "https://api.mailslurp.com/domain-monitor/monitors/00000000-0000-4000-8000-000000000000/runs/00000000-0000-4000-8000-000000000000/results/export" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Accept: application/json"

JavaScript SDK

JavaScript SDK
import { Configuration, DomainMonitorControllerApi } from "mailslurp-client";

const config = new Configuration({ apiKey: "YOUR_API_KEY" });
const domainMonitorController = new DomainMonitorControllerApi(config);
const request = {
  "monitorId": "00000000-0000-4000-8000-000000000000",
  "runId": "00000000-0000-4000-8000-000000000000"
};

const result = await domainMonitorController.exportDomainMonitorRunResults(request);

Python SDK

Python SDK
import mailslurp_client
from mailslurp_client.api.domain_monitor_controller_api import DomainMonitorControllerApi

configuration = mailslurp_client.Configuration()
configuration.api_key["x-api-key"] = "YOUR_API_KEY"

with mailslurp_client.ApiClient(configuration) as api_client:
    domainMonitorController = DomainMonitorControllerApi(api_client)
    result = domainMonitorController.export_domain_monitor_run_results("00000000-0000-4000-8000-000000000000", "00000000-0000-4000-8000-000000000000")

The CSV export contains a row per check, including pass, fail or not-checked information. Use the series endpoint for trends and the run export when you need the evidence for a specific change.

A healthy DNS result does not determine a mailbox's folder decision. Follow up with inbox placement and use Google Postmaster for additional available sender signals.