API documentation — InboxVerify
Home / API

REST API

Run every diagnostic from your own code. JSON in, JSON out, same results as the dashboard.

Authentication

Create an API key in your dashboard under API Keys and send it as a bearer token. Keys are secrets — never put them in front-end code.

curl -X POST https://inboxverify.io/api/v1/domain/check \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"domain": "example.com"}'

Responses & errors

Every response has success, data and meta. Reports use the statuses pass, warning, fail, unknown and info. unknown means a check could not be completed and is never counted as a pass.

{ "success": true, "data": { "id": "7c0f…", "service": "spf", "target": "example.com", "status": "completed", "overall": "warning", "score": 82, "report": { "headline": "…", "sections": [ { "title": "SPF record", "status": "pass", "checks": [ … ] } ], "data": { … } } }, "meta": { "credits_used": 0, "credits_remaining": 1240 } }
HTTPcodeMeaning
401unauthenticatedMissing or invalid API key
402insufficient_creditsNot enough credits
403service_disabledThe tool is disabled
422validation_failed / invalid_targetBad input, or a private / internal target
429rate_limitedToo many requests (see Retry-After)

Rate limits & credits

Each key has a per-minute limit (headers X-RateLimit-Limit / X-RateLimit-Remaining) and every tool has its own per-minute limit. Credits are deducted when a check starts and refunded automatically if it fails. Current costs:

ServiceCredits
Email verification1 per email
Problem Solver3 (first 3/day free)
Inbox Checker2 (first 5/day free)
Header Analyzerfree
Bounce Explainerfree
Domain Checker2 (first 5/day free)
MX Checkerfree
SPF Checkerfree
DKIM Checkerfree
DMARC Checkerfree
PTR / Reverse DNSfree
SMTP Tester1 (first 10/day free)
Blacklist Checker1 (first 10/day free)
IP / Domain Reputation2 (first 5/day free)

Async requests

Requests wait for the result by default. For slow checks (domain, SMTP, blacklist) you may add "async": true: you get 202 with an id, then poll GET /scans/{id} until status is completed or failed.

Endpoints

https://inboxverify.io/api/v1
POST/email/verify

Verify one email address.

{ "email": "user@example.com" }
POST/email/check

Full technical diagnosis of an email address.

{ "email": "user@example.com", "mailbox": true }
POST/domain/check

Domain Email Health Report.

{ "domain": "example.com", "smtp": true }
POST/mx/check

MX records, IPs, reverse DNS, optional SMTP.

{ "domain": "example.com", "smtp": false }
POST/spf/check

SPF validation, lookup count, include tree. Optional IP test.

{ "domain": "example.com", "ip": "203.0.113.10" }
POST/dkim/check

DKIM selector lookup or discovery.

{ "domain": "example.com", "selector": "google" }
POST/dmarc/check

DMARC policy, tags and reporting.

{ "domain": "example.com" }
POST/blacklist/check

IP or domain blocklist check.

{ "target": "203.0.113.10" }
POST/smtp/check

SMTP connection, EHLO, STARTTLS and certificate.

{ "host": "mail.example.com", "ports": [ 25, 587 ] }
POST/ptr/check

Reverse DNS and FCrDNS.

{ "ip": "203.0.113.10", "hostname": "mail.example.com" }
POST/header/analyze

Analyse raw email headers or a full message.

{ "headers": "Received: from \u2026\nFrom: \u2026" }
POST/bounce/explain

Explain a bounce / SMTP error.

{ "message": "550 5.7.26 \u2026" }
POST/reputation/check

Reputation indicators for an IP or domain.

{ "target": "example.com" }
POST/problem/solve

Prioritised fix plan for a problem (spam_folder, bouncing, not_receiving, blacklisted, new_domain, bulk_rules, spoofing).

{ "problem": "spam_folder", "domain": "example.com" }
GET/scans/{id}

Fetch a report by id (for async requests).

GET/scans

List your reports (paginated).

GET/account

Credits and available services with their cost.

Existing verification API

The original endpoints (GET /api/validate, POST /api/validate/bulk, POST /api/batch/upload, /api/jobs) keep working unchanged with the same keys. See the legacy documentation.