VerifiedInbox

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#

Credential How to send it For
None — Public checks
Guest token VI-Guest-Token: vi_guest_… or Authorization: Bearer vi_guest_… Continuing an anonymous application
API key Authorization: Bearer vi_live_… or vi_test_… Servers, scripts, AI agents (API keys)
OAuth token Authorization: Bearer <token> (WorkOS) MCP clients signed in as a person

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"? } }. The message is 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, with Retry-After), upstream_unavailable (503). Resources you can't access return 404, never 403.
  • Idempotency: checkout and certificate operations require an Idempotency-Key header (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. The x-idempotency field of each operation in the OpenAPI document says which.
  • Concurrency: applications have a version. Send If-Match: "<version>" on user-driven changes to avoid overwriting someone else's edit (409 version_conflict returns 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:

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 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#

bash
# 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.