Understand domain monitor results
Documentation navigation
Interpret authentication evidence, compare domain checks and export findings without confusing unchecked signals with passes.
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.
/domain-monitor/monitors/{monitorId}/email-verification-address
Create or rotate domain monitor email verification address
Request, parameters, and responses
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
monitorId | string:uuid | Yes |
Responses
| Status | Schema | Description |
|---|---|---|
200 | DomainMonitorEmailVerificationDto | OK |
HTTP and SDK snippets
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 -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
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
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")
/domain-monitor/monitors/{monitorId}/observed-auth-samples
List domain monitor observed authentication samples
Request, parameters, and responses
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
monitorId | string:uuid | Yes |
Responses
| Status | Schema | Description |
|---|---|---|
200 | DomainMonitorObservedAuthSampleDto[] | OK |
HTTP and SDK snippets
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 -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
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
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")
/domain-monitor/monitors/{monitorId}/auth-stack
Get current auth stack for monitor domain
Request, parameters, and responses
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
monitorId | string:uuid | Yes |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
dkimSelector | string | No |
Responses
| Status | Schema | Description |
|---|---|---|
200 | CheckEmailAuthStackResults | OK |
HTTP and SDK snippets
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 -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
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
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.
/domain-monitor/monitors/{monitorId}/runs/{runId}/compare/{otherRunId}
Compare two monitor runs
Request, parameters, and responses
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
monitorId | string:uuid | Yes | |
runId | string:uuid | Yes | |
otherRunId | string:uuid | Yes |
Responses
| Status | Schema | Description |
|---|---|---|
200 | DomainMonitorRunComparisonDto | OK |
HTTP and SDK snippets
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 -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
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
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")
/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
| Name | Type | Required | Description |
|---|---|---|---|
monitorId | string:uuid | Yes | |
runId | string:uuid | Yes |
Responses
| Status | Schema | Description |
|---|---|---|
200 | Response | OK |
HTTP and SDK snippets
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 -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
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
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.