Run an email authentication check
const url = 'https://app.hostrepute.com/api/v1/deliverability/check';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"host":"example.com","data_source_group_uuid":"01a178db-d581-700d-9729-4f4abc8cee72","checks":["mx_health","spf_record","dmarc_record"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://app.hostrepute.com/api/v1/deliverability/check \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "host": "example.com", "data_source_group_uuid": "01a178db-d581-700d-9729-4f4abc8cee72", "checks": [ "mx_health", "spf_record", "dmarc_record" ] }'Check a domain’s or IP’s email authentication records now and get the result in the response. status is the overall result: passed, warning or failed. Each entry in result.checks has its own status (passed, warning, failed or skipped) and a message; checks that only apply to IP addresses are skipped for a domain. meta shows what the check cost and the credits your team has left.
Costs 1 credit. Needs the deliverability:check ability.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
The domain or IP address to check. A URL is accepted and its host name is used.
Example
example.comThe UUID of a check profile. When you leave out checks, the profile’s email authentication checks run.
Example
01a178db-d581-700d-9729-4f4abc8cee72The checks to run, from reverse_dns, forward_confirmed_reverse_dns, generic_ptr, ptr_hostname_format, mx_health, spf_record, spf_strict, spf_lookup_limit, dmarc_record, dmarc_strict, mta_sts, tls_rpt and bimi. Without checks or data_source_group_uuid, all 13 run. Read https://docs.hostrepute.com/reference/email-authentication-checks/ for what each one verifies.
Example
[ "mx_health", "spf_record", "dmarc_record"]Responses
Section titled “Responses”object
object
object
object
object
object
Example
{ "data": { "uuid": "01a178db-e1ee-72a1-b274-94bf06c7e8c7", "host": "example.com", "status": "failed", "result": { "summary": { "skipped": 4, "failed": 1, "passed": 5, "warning": 3 }, "checks": [ { "type": "reverse_dns", "label": "Reverse DNS", "status": "skipped", "message": "IP-only check skipped for domain target.", "context": [] }, { "type": "forward_confirmed_reverse_dns", "label": "Forward-confirmed Reverse DNS", "status": "skipped", "message": "IP-only check skipped for domain target.", "context": [] }, { "type": "generic_ptr", "label": "Generic PTR Pattern", "status": "skipped", "message": "IP-only check skipped for domain target.", "context": [] }, { "type": "ptr_hostname_format", "label": "PTR Hostname Format", "status": "skipped", "message": "IP-only check skipped for domain target.", "context": [] }, { "type": "mx_health", "label": "MX Health", "status": "failed", "message": "No MX records were found.", "context": [] }, { "type": "spf_record", "label": "SPF Record", "status": "passed", "message": "One SPF record found.", "context": { "record": "v=spf1 -all" } }, { "type": "spf_strict", "label": "SPF Strict Policy", "status": "passed", "message": "SPF uses a strict fail-all policy.", "context": { "record": "v=spf1 -all" } }, { "type": "spf_lookup_limit", "label": "SPF Lookup Limit", "status": "passed", "message": "SPF is within the DNS lookup limit.", "context": { "record": "v=spf1 -all", "lookup_count": 0, "lookup_limit": 10 } }, { "type": "dmarc_record", "label": "DMARC Record", "status": "passed", "message": "DMARC record found.", "context": { "record": "v=DMARC1;p=reject;sp=reject;adkim=s;aspf=s", "policy": "reject" } }, { "type": "dmarc_strict", "label": "DMARC Strict Policy", "status": "passed", "message": "DMARC uses an enforcement policy.", "context": { "record": "v=DMARC1;p=reject;sp=reject;adkim=s;aspf=s", "policy": "reject" } }, { "type": "mta_sts", "label": "MTA-STS Policy", "status": "warning", "message": "No MTA-STS DNS policy record was found.", "context": { "name": "_mta-sts.example.com" } }, { "type": "tls_rpt", "label": "TLS-RPT Record", "status": "warning", "message": "No TLS-RPT record was found.", "context": { "name": "_smtp._tls.example.com" } }, { "type": "bimi", "label": "BIMI Record", "status": "warning", "message": "No BIMI record was found.", "context": { "name": "default._bimi.example.com" } } ] }, "data_source_group": null, "checked_at": "2026-10-26T15:37:18.000000Z", "created_at": "2026-10-26T15:37:18.000000Z" }, "meta": { "credit_cost": 1, "credits_remaining": 4247 }}Not enough credits
object
Example
{ "message": "Insufficient credits.", "required_credits": 1, "available_credits": 0}No check profile with this UUID in your team
object
Example
{ "message": "Monitoring profile not found."}Invalid input
object
object
Example
{ "message": "The selected checks.0 is invalid.", "errors": { "checks.0": [ "The selected checks.0 is invalid." ] }}
