Developers & AI
API reference
The VerifiedInbox REST API (v1). Every step of the process is an API call; free steps work without an account.
Everything you can do on the website, you can do with the API. The same operations are also available to AI assistants through MCP.
Basics#
- Base URL:
https://api.getverifiedinbox.com. All endpoints are under/v1. - Format: JSON bodies (
Content-Type: application/json), UTF-8. Timestamps are RFC 3339 (UTC). Money is in integer cents (USD). - Versioning: v1 only changes in backward-compatible ways (new fields may appear).
- Pagination: list responses look like
{ "data": [...], "next_cursor": null }.
Authentication#
You can send a guest token together with an account credential (guest token in VI-Guest-Token): that's how anonymous drafts are claimed. OAuth callers can add VI-Environment: live|test and VI-Organization: <id>. API keys are bound to one organization and environment.
Scopes: applications:read, applications:write, billing:write, certificates:write, support:write.
Conventions#
- Errors return
{ "error": { "code", "message", "details"?, "next_action"? } }. Themessageis plain English. Common codes:invalid_request(400),unauthenticated(401),payment_required(402),forbidden/insufficient_scope(403),not_found(404),version_conflict/conflict(409),unprocessable/blocked_provider(422),rate_limited(429, withRetry-After),upstream_unavailable(503). Resources you can't access return 404, never 403. - Idempotency: checkout and certificate operations require an
Idempotency-Keyheader (up to 255 characters); starting an application accepts one. Same key and body → the original response is replayed; same key with a different body → 409. Thex-idempotencyfield of each operation in the OpenAPI document says which. - Concurrency: applications have a
version. SendIf-Match: "<version>"on user-driven changes to avoid overwriting someone else's edit (409version_conflictreturns the current application). - Next actions: application responses include
next_actions, each with a title, the step, whether it needs sign-in or payment, and the matching API call and MCP tool.
OpenAPI#
The complete, machine-readable contract is an OpenAPI 3.1 document:
https://getverifiedinbox.com/openapi.json(also served by the API athttps://api.getverifiedinbox.com/openapi.json)
Import it into Postman, Insomnia or an SDK generator, or hand it to an AI assistant. Each operation lists who may call it (x-access), whether it needs an Idempotency-Key (x-idempotency), and the MCP tool that does the same thing (x-mcp-tools). The tables below are generated from that document, so they always match the live API. More: OpenAPI schema.
Endpoints#
Meta#
Service metadata, health and this contract.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /health |
Liveness check | Public — no credentials needed | — |
GET /openapi.json |
This OpenAPI document | Public — no credentials needed | — |
GET /ready |
Readiness check | Public — no credentials needed | — |
GET /v1/meta |
Pricing, steps and live/mocked integrations | Public — no credentials needed | get_started |
Checks#
Free, repeatable public checks of any domain.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
POST /v1/checks/domain |
Quick domain eligibility check | Public — no credentials needed | check_domain |
POST /v1/checks/email-auth |
Full SPF/DKIM/DMARC/BIMI inspection | Public — no credentials needed | check_email_security |
GET /v1/providers/blocked |
Shared mailbox domains that can't be used | Public — no credentials needed | — |
Glossary#
Plain-English definitions of every term we use.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /v1/glossary |
All glossary terms | Public — no credentials needed | — |
GET /v1/glossary/{term} |
One glossary term | Public — no credentials needed | explain_term |
Guest sessions#
Anonymous credentials and resume links.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
POST /v1/guest-sessions |
Create a guest credential | Public — no credentials needed | — |
DELETE /v1/guest-sessions/current |
Revoke the current guest session | Free — guest or account | — |
POST /v1/resume |
Exchange a one-time resume token | Public — no credentials needed | — |
Applications#
The server-side state of one domain's journey.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /v1/applications |
List my verifications | Free — guest or account | list_applications, get_account |
POST /v1/applications |
Start (or resume) a verification | Public — no credentials needed | start_application |
GET /v1/applications/{application_id} |
Get a verification | Free — guest or account | get_application |
PATCH /v1/applications/{application_id} |
Choose product / contact email | Free — guest or account | — |
POST /v1/applications/{application_id}/archive |
Archive (unpaid only) | Free — guest or account | — |
POST /v1/applications/{application_id}/claim |
Move a guest draft into the account | Account required | claim_application |
GET /v1/applications/{application_id}/events |
Timeline of the verification | Free — guest or account | — |
GET /v1/applications/{application_id}/next-steps |
Current step and next actions | Free — guest or account | get_application |
POST /v1/applications/{application_id}/refresh |
Re-run checks now | Free — guest or account | — |
POST /v1/applications/{application_id}/resume-links |
One-time link to continue in a browser | Free — guest or account | create_resume_link |
POST /v1/applications/{application_id}/steps/{step}/complete |
Complete a wizard step and move on | Free — guest or account | complete_step |
Email health#
SPF, DKIM, DMARC and BIMI for an application.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
POST /v1/applications/{application_id}/dkim-selectors |
Verify DKIM selectors you supply | Free — guest or account | verify_dkim_selectors |
GET /v1/applications/{application_id}/email-health |
Latest email-security report + DMARC rollout plan | Free — guest or account | — |
POST /v1/applications/{application_id}/email-health/check |
Re-check email security now | Free — guest or account | recheck_email_security |
PUT /v1/applications/{application_id}/email-usage |
How email is used on the domain | Free — guest or account | set_email_usage |
Logo#
Logo intake, SVG Tiny P/S conversion and approval.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /v1/applications/{application_id}/logo |
Logo status, analysis and changes | Free — guest or account | get_logo_status |
PUT /v1/applications/{application_id}/logo |
Submit the logo | Free — guest or account | submit_logo |
GET /v1/applications/{application_id}/logo-candidates |
Logos found on the website | Free — guest or account | get_logo_status |
POST /v1/applications/{application_id}/logo/approve |
Approve the reviewed inbox-ready logo | Paid plan required | approve_logo |
GET /v1/applications/{application_id}/logo/converted.svg |
Inbox-ready SVG Tiny P/S file | Free — guest or account | — |
GET /v1/applications/{application_id}/logo/original.svg |
Original logo file | Free — guest or account | — |
GET /v1/applications/{application_id}/logo/preview.png |
Rendered PNG preview | Free — guest or account | — |
Trademark#
USPTO trademark search and verification.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /v1/applications/{application_id}/trademark |
Trademark result | Free — guest or account | get_trademark_status |
POST /v1/applications/{application_id}/trademark/claim |
Verify a specific USPTO number | Free — guest or account | search_trademark |
POST /v1/applications/{application_id}/trademark/search |
(Re)start the USPTO search | Free — guest or account | search_trademark |
Eligibility#
VMC / CMC / not-yet-eligible outcome and price estimate.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /v1/applications/{application_id}/eligibility |
VMC / CMC / not-yet-eligible with evidence | Free — guest or account | get_eligibility |
POST /v1/applications/{application_id}/eligibility/watch |
Email me when this domain qualifies | Free — guest or account | watch_eligibility |
GET /v1/applications/{application_id}/estimate |
Itemized yearly price | Free — guest or account | get_estimate |
Checkout#
Stripe hosted checkout (agents create links; people pay).
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
POST /v1/applications/{application_id}/checkout |
Create a Stripe checkout link | Account required | create_checkout |
Business#
Legal company verification.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /v1/applications/{application_id}/business |
Company verification status | Free — guest or account | get_business_status |
PUT /v1/applications/{application_id}/business |
Submit legal company details | Paid plan required | submit_business_details |
DNS#
The DNS records to add, with live status.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /v1/applications/{application_id}/dns |
Every DNS record to add, with live status | Paid plan required | get_dns_records |
POST /v1/applications/{application_id}/dns/verify |
Re-check DNS now | Paid plan required | verify_dns |
Test messages#
Authentication results on a real email.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
POST /v1/applications/{application_id}/test-messages |
Get an address to send a real test email to | Account required | create_test_message |
GET /v1/applications/{application_id}/test-messages/{test_message_id} |
Authentication results of the test email | Free — guest or account | get_test_message_result |
Certificate#
Certificate order, status, reissue, renewal and revocation.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /v1/applications/{application_id}/certificate |
Certificate status, prerequisites, final check and history | Free — guest or account | get_certificate |
POST /v1/applications/{application_id}/certificate/check |
Re-check everything the issuer will verify | Paid plan required | run_final_check |
POST /v1/applications/{application_id}/certificate/order |
Submit the order (normally automatic) | Paid plan required | order_certificate |
POST /v1/applications/{application_id}/certificate/reissue |
Reissue the certificate | Paid plan required | reissue_certificate |
POST /v1/applications/{application_id}/certificate/renew |
Renew early | Paid plan required | renew_certificate |
POST /v1/applications/{application_id}/certificate/revoke |
Revoke permanently | Paid plan required | revoke_certificate |
Go live#
BIMI publication and display confirmation.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /v1/applications/{application_id}/go-live |
BIMI publication, test email, display, monitoring, renewal | Free — guest or account | — |
POST /v1/applications/{application_id}/inbox-display |
Record that the logo was seen in a mailbox | Paid plan required | confirm_inbox_display |
Account#
Profile, organizations, environment, API keys, orders.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /v1/api-keys |
API keys | Account required | — |
POST /v1/api-keys |
Create an API key (web session) | Account required | — |
DELETE /v1/api-keys/{api_key_id} |
Revoke an API key | Account required | — |
POST /v1/billing/portal |
Stripe billing portal link | Account required | — |
GET /v1/me |
Who am I (works anonymously too) | Public — no credentials needed | get_account |
POST /v1/me/environment |
Switch live/test mode (web session) | Account required | — |
POST /v1/me/organization |
Switch organization (web session) | Account required | — |
GET /v1/notifications |
Notification log | Account required | — |
GET /v1/orders |
Orders and payments | Account required | get_account, list_orders |
GET /v1/orders/{order_id} |
One order | Account required | list_orders |
GET /v1/organizations |
My organizations | Account required | — |
POST /v1/organizations |
Create an organization | Account required | — |
GET /v1/organizations/{organization_id} |
One organization | Account required | — |
PATCH /v1/organizations/{organization_id} |
Rename an organization | Account required | — |
GET /v1/organizations/{organization_id}/members |
Organization members | Account required | — |
Support#
Contact a human, feedback and feature requests.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
POST /v1/support |
Contact a human, feedback, feature request, partnership | Public — no credentials needed | contact_support, send_feedback |
Hosting#
Public logo and certificate files referenced by BIMI records.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /bimi/test/{domain}/{file} |
Hosted BIMI assets (test mode) | Public — no credentials needed | — |
GET /bimi/{domain}/{file} |
Hosted BIMI logo / certificate | Public — no credentials needed | — |
MCP#
Model Context Protocol endpoint and OAuth discovery.
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
GET /.well-known/oauth-protected-resource |
OAuth protected-resource metadata (RFC 9728) | Public — no credentials needed | — |
GET /.well-known/oauth-protected-resource/mcp |
OAuth protected-resource metadata for /mcp | Public — no credentials needed | — |
POST /mcp |
MCP endpoint (Streamable HTTP, JSON responses) | Public — no credentials needed | — |
Test mode#
Sandbox helpers (no real payments).
| Method & path | Summary | Access | MCP tool |
|---|---|---|---|
POST /v1/dev/mock-checkout/{order_id}/complete |
Simulate payment of a mock checkout | Account required | — |
Example#
# Check a domain
curl -s https://api.getverifiedinbox.com/v1/checks/domain \
-H 'Content-Type: application/json' \
-d '{"domain":"acme.com"}'
# Start an application (save the guest_token from the response)
curl -s https://api.getverifiedinbox.com/v1/applications \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: start-acme-1' \
-d '{"domain":"acme.com"}'
# Read it later
curl -s https://api.getverifiedinbox.com/v1/applications/APPLICATION_ID \
-H 'VI-Guest-Token: vi_guest_…'Rate limits#
Anonymous requests are limited per IP address and per guest token, and expensive work has daily budgets. When you hit a limit you get 429 with Retry-After (seconds). Poll background work gently.