Inbox Check API

Email deliverability test API behind the free Inbox Placement Test at check.live-direct-marketing.online: create a test, send to the returned seed mailboxes across ten providers, poll placement, SPF / DKIM / DMARC and spam-engine verdicts, schedule same-message rechecks, and run continuous domain monitoring. Bearer icp_live_* keys with daily / monthly quotas; the OpenAPI 3.0 document covers 196 operations including the public /api/v1 tier, the account portal and admin surfaces.

Operations 196

GET /api/health #
GET /api/admin/self-control #
POST /api/admin/self-control/run #
POST /api/tests #
GET /api/tests/{token} #
DELETE /api/tests/{token} #
GET /api/tests/{token}/live #
POST /api/track/click #
POST /api/presend #
GET /api/presend/{token} #
DELETE /api/presend/{token} #
GET /api/admin/presend/stats #
GET /api/sender-links/unsubscribe Unsubscribe from sender-link email reports (List-Unsubscribe target) #
POST /api/sender-links/unsubscribe #
GET /api/sender-links/{linkId} Public sender-link page: seed addresses, latest run, history #
DELETE /api/sender-links/{linkId} Revoke a sender link (page stops resolving, auto-runs stop) #
PATCH /api/sender-links/{linkId}/reports Enable/disable email reports for a sender link #
POST /api/sender-links/{linkId}/reactivate Reactivate a dormant sender link (scanner picks it up again) #
POST /api/tests/{token}/finish Finish the current check and return its saved partial report #
POST /api/tests/{token}/warmup Free warmup — move the test's spam-placed emails back to Inbox on our seed mailboxes (one-off "not spam" signal). Public by test token. Idempotent: a repeat POST returns the cached #
POST /api/tests/{token}/repoll Force IMAP re-poll of a test (within cooldown) — public by token #
POST /api/admin/tests/{token}/reanalyze Recompute analysis of the original received copy; preserve placement and delivery timestamps #
POST /api/workers/jobs/claim #
POST /api/workers/jobs/{id}/heartbeat #
POST /api/workers/jobs/{id}/screenshot #
POST /api/workers/jobs/{id}/complete #
POST /api/workers/jobs/{id}/fail #
POST /api/feedback #
GET /api/admin/feedback #
GET /api/admin/feedback/stats #
POST /api/beta-signups #
GET /api/admin/beta-signups #
GET /api/admin/beta-signups/stats #
POST /api/screenshot-orders #
GET /api/admin/screenshot-orders/stats #
POST /api/subscriptions #
GET /api/subscriptions/verify #
GET /api/subscriptions/unsubscribe #
POST /api/subscriptions/unsubscribe #
GET /api/admin/subscriptions #
GET /api/admin/subscriptions/stats #
GET /api/domain-watch/start #
POST /api/domain-watch Request a per-domain confirmation email. Does not activate monitoring. #
GET /api/domain-watch/confirm Read-only consent page. Opening a link never subscribes the mailbox. #
POST /api/domain-watch/confirm Record explicit consent and activate only the domain in this one-time intent. #
GET /api/domain-watch/manage #
POST /api/domain-watch/access #
POST /api/domain-watch/stop #
GET /api/domain-watch/unsubscribe #
POST /api/domain-watch/unsubscribe Unsubscribe one domain, including RFC 8058 one-click POST. #
GET /api/domain-watch/placement #
POST /api/domain-watch/placement #
POST /api/tests/{token}/recheck #
POST /api/tests/{token}/recheck-24h Schedule a same-message placement recheck after 24 hours #
GET /api/tests/{token}/recheck-24h Get the 24-hour placement recheck state and snapshots #
DELETE /api/tests/{token}/recheck-24h Cancel a scheduled 24-hour recheck #
GET /api/admin/recheck-jobs #
GET /api/admin/recheck-jobs/stats #
GET /api/account/monitoring/domains #
POST /api/account/monitoring/domains #
PATCH /api/account/monitoring/domains/{id} #
DELETE /api/account/monitoring/domains/{id} #
POST /api/account/monitoring/domains/{id}/pause #
POST /api/account/monitoring/domains/{id}/resume #
POST /api/account/monitoring/domains/{id}/run #
GET /api/account/monitoring/domains/{id}/checks #
GET /api/account/monitoring/domains/{id}/latest #
GET /api/account/monitoring/settings #
PATCH /api/account/monitoring/settings #
POST /api/auth/register #
GET /api/auth/verify #
POST /api/auth/resend-verification #
POST /api/auth/login #
POST /api/auth/logout #
GET /api/auth/me #
POST /api/auth/email-access #
POST /api/auth/email-access/consume #
GET /api/admin/stats #
GET /api/admin/slack/installations List Slack installations (workspaces) #
GET /api/admin/deliverability/config Get deliverability control config #
PUT /api/admin/deliverability/config Update deliverability control config #
GET /api/admin/seeds #
POST /api/admin/seeds #
POST /api/admin/seeds/{id}/archive #
POST /api/admin/seeds/{id}/restore #
GET /api/admin/audit-log List admin audit log entries #
GET /api/admin/seed-health #
POST /api/admin/seeds/bulk Bulk-upload custom seed accounts #
PATCH /api/admin/seeds/{id} #
POST /api/admin/seeds/sync-ldm #
GET /api/admin/ldm/control-accounts #
POST /api/admin/seeds/import-from-ldm #
POST /api/admin/seeds/import-oauth-combo Import Outlook combo (public-client) seeds via IMAP XOAUTH2 #
POST /api/admin/seeds/{id}/probe #
GET /api/admin/providers #
POST /api/admin/providers #
GET /api/admin/providers/{id} #
PATCH /api/admin/providers/{id} #
DELETE /api/admin/providers/{id} #
GET /api/admin/providers/{id}/delivery-blocks #
POST /api/admin/providers/{id}/delivery-blocks #
DELETE /api/admin/providers/{id}/delivery-blocks/{blockId} #
GET /api/admin/seeds/{id}/stats #
GET /api/admin/providers/{id}/stats #
POST /api/admin/seeds/health-check #
POST /api/admin/cleanup/imap #
POST /api/admin/bounces/process-now #
GET /api/admin/tests #
GET /api/admin/tests/{token}/trace One-stop visual trace of a single test for debugging logical errors. Aggregates everything we know about a token end-to-end: - test row (full state, decoded fields) - per-seed resu #
GET /api/admin/queues #
GET /api/admin/visitors #
GET /api/admin/transport-health Live end-to-end probe of each public transport endpoint. Hits them on localhost so we measure server-side latency without nginx + TLS noise. Used by /artber/health sub-tabs to show #
GET /api/admin/protocol-stats Aggregated request traffic for the AI-agent transports — MCP (streamable HTTP bridge at /mcp) and A2A (the .well-known/agent.json handshake + downstream calls). Lets the admin see #
GET /api/admin/logs #
GET /api/admin/operations-health #
GET /api/admin/api-keys/scopes/structured Structured scope catalog for the wizard UI #
POST /api/admin/api-keys Create a new API key (admin) #
GET /api/admin/api-keys List all API keys (admin) #
PATCH /api/admin/api-keys/{id} Update an API key (admin) #
DELETE /api/admin/api-keys/{id} Revoke an API key (soft-delete) #
GET /api/admin/api-keys/{id}/usage Get usage events + aggregate for an API key #
POST /api/v1/tests Create a deliverability test (manual mode) #
GET /api/v1/tests List own tests (paginated by created_at cursor) #
POST /api/v1/tests/auto Create a deliverability test (auto mode — per-recipient single-seed) #
GET /api/v1/tests/{token} Fetch test status + results (JSON or PDF) #
DELETE /api/v1/tests/{token} Delete a test (irreversible) #
POST /api/v1/tests/{token}/repoll Force IMAP re-poll of a test (within cooldown) #
POST /api/v1/tests/{token}/recheck Schedule a same-message placement recheck #
GET /api/v1/tests/{token}/recheck-status Get delayed placement snapshots and transitions #
GET /api/v1/me Caller introspection — key metadata + current period usage #
GET /api/v1/oauth/tests List completed OAuth-scoped tests #
POST /api/v1/oauth/tests Create an OAuth-scoped deliverability test #
GET /api/v1/oauth/tests/{token} Get one OAuth-scoped test #
GET /api/v1/monitoring/domains List monitored domains #
POST /api/v1/monitoring/domains Add a domain to monitoring #
DELETE /api/v1/monitoring/domains/{id} Remove a monitored domain #
POST /api/v1/monitoring/domains/{id}/pause Pause monitoring for a domain #
POST /api/v1/monitoring/domains/{id}/resume Resume monitoring for a domain #
POST /api/v1/monitoring/domains/{id}/run Run an on-demand check now #
GET /api/v1/monitoring/domains/{id}/checks List a domain’s check history #
GET /api/v1/monitoring/domains/{id}/latest Get a domain’s latest check #
GET /api/v1/monitoring/settings Get monitoring notification settings #
PATCH /api/v1/monitoring/settings Update monitoring notification settings #
GET /api/oauth/authorize #
POST /api/oauth/authorize #
POST /api/oauth/token #
GET /api/oauth/me #
GET /api/reports/{token} #
GET /api/reports/{token}/pdf #
GET /api/mcp Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
POST /api/mcp Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
PUT /api/mcp Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
DELETE /api/mcp Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
PATCH /api/mcp Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
OPTIONS /api/mcp Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
HEAD /api/mcp Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
GET /api/mcp/{path} Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
POST /api/mcp/{path} Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
PUT /api/mcp/{path} Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
DELETE /api/mcp/{path} Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
PATCH /api/mcp/{path} Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
OPTIONS /api/mcp/{path} Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
HEAD /api/mcp/{path} Single handler for GET / POST / DELETE because the streamable-http transport cares about verbs internally and Nest would otherwise need three separate decorators. #
GET /api/account/api-keys #
POST /api/account/api-keys #
GET /api/account/dashboard W1b — portal dashboard: usage chart + recent tests + provider mix. #
DELETE /api/account/api-keys/{id} #
POST /api/monitoring-enrollment #
POST /api/telegram/webhook #
POST /api/telegram/link-token #
GET /api/providers #
GET /api/v1/providers List available providers #
POST /api/admin/deploy #
GET /api/admin/deploy #
GET /api/admin/deploy/{jobId} #
GET /api/amo-widget/v1/providers #
POST /api/amo-widget/v1/log #
GET /api/amo-widget/v1/oauth/install #
POST /api/amo-widget/v1/webhooks/uninstall #
POST /api/amo-widget/v1/tests #
GET /api/amo-widget/v1/tests/{token}/poll #
POST /api/amo-widget/v1/tests/{token}/save-note #
GET /api/admin/dmarc/summary #
GET /api/admin/dmarc/sources #
GET /api/admin/dmarc/reports #
GET /api/admin/dmarc/reports/{id} #
POST /api/admin/dmarc/poll #
GET /api/admin/tls-rpt/reports #
GET /api/domain-observations/lookup #
POST /api/domain-observations #
GET /api/domain-observations/page/{domain} #
GET /api/domain-observations/fallback #
GET /api/domain-observations/data/{domain} #
GET /api/domain-observations/catalog #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/inbox-check-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

live-direct-marketing-online-inbox-check-openapi.json Raw ↑
{"openapi":"3.0.0","paths":{"/api/health":{"get":{"operationId":"HealthController_check","parameters":[],"responses":{"200":{"description":""}},"tags":["health","public"]}},"/api/admin/self-control":{"get":{"operationId":"SelfControlController_history","parameters":[],"responses":{"200":{"description":""}},"tags":["SelfControl"]}},"/api/admin/self-control/run":{"post":{"operationId":"SelfControlController_run","parameters":[],"responses":{"201":{"description":""}},"tags":["SelfControl"]}},"/api/tests":{"post":{"operationId":"TestsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTestDto"}}}},"responses":{"201":{"description":""}},"tags":["tests","public"]}},"/api/tests/{token}":{"get":{"operationId":"TestsController_get","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["tests","public"]},"delete":{"operationId":"TestsController_deleteTest","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["tests","public"]}},"/api/tests/{token}/live":{"get":{"operationId":"TestsSseController_stream","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["tests","sse"]}},"/api/track/click":{"post":{"operationId":"TrackController_click","parameters":[],"responses":{"204":{"description":""}},"tags":["tests","public"]}},"/api/presend":{"post":{"operationId":"PresendController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePresendDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["presend","public"]}},"/api/presend/{token}":{"get":{"operationId":"PresendController_get","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["presend","public"]},"delete":{"operationId":"PresendController_delete","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["presend","public"]}},"/api/admin/presend/stats":{"get":{"operationId":"PresendAdminController_stats","parameters":[{"name":"days","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["PresendAdmin"]}},"/api/sender-links/unsubscribe":{"get":{"operationId":"SenderLinksController_unsubscribeGet","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"summary":"Unsubscribe from sender-link email reports (List-Unsubscribe target)","tags":["sender-links","public"]},"post":{"operationId":"SenderLinksController_unsubscribePost","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["sender-links","public"]}},"/api/sender-links/{linkId}":{"get":{"operationId":"SenderLinksController_get","parameters":[{"name":"linkId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Public sender-link page: seed addresses, latest run, history","tags":["sender-links","public"]},"delete":{"operationId":"SenderLinksController_revoke","parameters":[{"name":"linkId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Revoke a sender link (page stops resolving, auto-runs stop)","tags":["sender-links","public"]}},"/api/sender-links/{linkId}/reports":{"patch":{"operationId":"SenderLinksController_setReports","parameters":[{"name":"linkId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetReportsDto"}}}},"responses":{"200":{"description":""}},"summary":"Enable/disable email reports for a sender link","tags":["sender-links","public"]}},"/api/sender-links/{linkId}/reactivate":{"post":{"operationId":"SenderLinksController_reactivate","parameters":[{"name":"linkId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"summary":"Reactivate a dormant sender link (scanner picks it up again)","tags":["sender-links","public"]}},"/api/tests/{token}/finish":{"post":{"operationId":"WarmupController_finish","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"summary":"Finish the current check and return its saved partial report","tags":["tests","public"]}},"/api/tests/{token}/warmup":{"post":{"operationId":"WarmupController_warmup","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"summary":"Free warmup — move the test's spam-placed emails back to Inbox on our seed mailboxes (one-off \"not spam\" signal). Public by test token. Idempotent: a repeat POST returns the cached summary without reconnecting. Does NOT change the report verdict (CheckResult.placement). Ф2: governed by DeliverabilityConfig — a no-op (result.disabled=true) unless an operator has set warmupEnabled=true, and capped by warmupMaxPerRun / warmupMaxPerSeedPerDay / warmupMaxPerDay. Each attempted move is audit-logged; each non-move outcome carries an honest status (not_found / provider_denied / timeout / provider_error / seed_unavailable / limit_reached) + reason instead of a blanket failure.","tags":["tests","public"]}},"/api/tests/{token}/repoll":{"post":{"description":"Same one-shot IMAP re-check as the owner-key POST /api/v1/tests/{token}/repoll, but usable by anyone who knows the test token (web/Telegram tests never have an API key to call the v1 endpoint with). 30s cooldown per token, quota NOT consumed (no email sent), refused on waiting/checking, 7-day age cap.","operationId":"WarmupController_repoll","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"summary":"Force IMAP re-poll of a test (within cooldown) — public by token","tags":["tests","public"]}},"/api/admin/tests/{token}/reanalyze":{"post":{"operationId":"AnalysisRefreshController_refresh","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"summary":"Recompute analysis of the original received copy; preserve placement and delivery timestamps","tags":["admin"]}},"/api/workers/jobs/claim":{"post":{"operationId":"WorkersController_claim","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimDto"}}}},"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["workers","admin"]}},"/api/workers/jobs/{id}/heartbeat":{"post":{"operationId":"WorkersController_heartbeat","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["workers","admin"]}},"/api/workers/jobs/{id}/screenshot":{"post":{"operationId":"WorkersController_uploadScreenshot","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"placement","required":false,"in":"query","schema":{"type":"string"}},{"name":"variant","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["workers","admin"]}},"/api/workers/jobs/{id}/complete":{"post":{"operationId":"WorkersController_complete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["workers","admin"]}},"/api/workers/jobs/{id}/fail":{"post":{"operationId":"WorkersController_fail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FailDto"}}}},"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["workers","admin"]}},"/api/feedback":{"post":{"operationId":"FeedbackController_submit","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackDto"}}}},"responses":{"201":{"description":""}},"tags":["feedback","public"]}},"/api/admin/feedback":{"get":{"operationId":"FeedbackAdminController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"type":"string"}},{"name":"offset","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin","feedback"]}},"/api/admin/feedback/stats":{"get":{"operationId":"FeedbackAdminController_stats","parameters":[],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin","feedback"]}},"/api/beta-signups":{"post":{"operationId":"BetaSignupsController_submit","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitBetaDto"}}}},"responses":{"201":{"description":""}},"tags":["beta-signups","public"]}},"/api/admin/beta-signups":{"get":{"operationId":"BetaSignupsAdminController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"type":"string"}},{"name":"offset","required":false,"in":"query","schema":{"type":"string"}},{"name":"platform","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin","beta-signups"]}},"/api/admin/beta-signups/stats":{"get":{"operationId":"BetaSignupsAdminController_stats","parameters":[],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin","beta-signups"]}},"/api/screenshot-orders":{"post":{"operationId":"ScreenshotOrdersController_track","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackDto"}}}},"responses":{"201":{"description":""}},"tags":["screenshots","public"]}},"/api/admin/screenshot-orders/stats":{"get":{"operationId":"ScreenshotOrdersAdminController_stats","parameters":[{"name":"days","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin","screenshots"]}},"/api/subscriptions":{"post":{"operationId":"SubscriptionsController_subscribe","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["subscriptions","public"]}},"/api/subscriptions/verify":{"get":{"operationId":"SubscriptionsController_verify","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["subscriptions","public"]}},"/api/subscriptions/unsubscribe":{"get":{"operationId":"SubscriptionsController_unsubscribeGet","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["subscriptions","public"]},"post":{"operationId":"SubscriptionsController_unsubscribePost","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["subscriptions","public"]}},"/api/admin/subscriptions":{"get":{"operationId":"SubscriptionsAdminController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"type":"string"}},{"name":"offset","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["SubscriptionsAdmin"]}},"/api/admin/subscriptions/stats":{"get":{"operationId":"SubscriptionsAdminController_stats","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["SubscriptionsAdmin"]}},"/api/domain-watch/start":{"get":{"operationId":"DomainWatchController_start","parameters":[{"name":"domain","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["domain-watch","public"]}},"/api/domain-watch":{"post":{"operationId":"DomainWatchController_request","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchRequestDto"}}}},"responses":{"201":{"description":""}},"summary":"Request a per-domain confirmation email. Does not activate monitoring.","tags":["domain-watch","public"]}},"/api/domain-watch/confirm":{"get":{"operationId":"DomainWatchController_confirmView","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Read-only consent page. Opening a link never subscribes the mailbox.","tags":["domain-watch","public"]},"post":{"operationId":"DomainWatchController_confirm","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchTokenDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"summary":"Record explicit consent and activate only the domain in this one-time intent.","tags":["domain-watch","public"]}},"/api/domain-watch/manage":{"get":{"operationId":"DomainWatchController_manage","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["domain-watch","public"]}},"/api/domain-watch/access":{"post":{"operationId":"DomainWatchController_access","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchEmailDto"}}}},"responses":{"201":{"description":""}},"tags":["domain-watch","public"]}},"/api/domain-watch/stop":{"post":{"operationId":"DomainWatchController_stop","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchStopDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["domain-watch","public"]}},"/api/domain-watch/unsubscribe":{"get":{"operationId":"DomainWatchController_unsubscribeView","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["domain-watch","public"]},"post":{"operationId":"DomainWatchController_unsubscribe","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"summary":"Unsubscribe one domain, including RFC 8058 one-click POST.","tags":["domain-watch","public"]}},"/api/domain-watch/placement":{"get":{"operationId":"DomainWatchPlacementController_get","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}},{"name":"id","required":true,"in":"query","schema":{"type":"string"}},{"name":"test","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["DomainWatchPlacement"]},"post":{"operationId":"DomainWatchPlacementController_start","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacementDto"}}}},"responses":{"201":{"description":""}},"tags":["DomainWatchPlacement"]}},"/api/tests/{token}/recheck":{"post":{"operationId":"RecheckController_schedule","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecheckDto"}}}},"responses":{"201":{"description":""}},"tags":["recheck","public"]}},"/api/tests/{token}/recheck-24h":{"post":{"description":"Schedules one idempotent delayed scan of the original test token. No new message is sent and no email subscription is required.","operationId":"RecheckController_schedule24h","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"202":{"description":""}},"summary":"Schedule a same-message placement recheck after 24 hours","tags":["recheck","public"]},"get":{"operationId":"RecheckController_status24h","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"summary":"Get the 24-hour placement recheck state and snapshots","tags":["recheck","public"]},"delete":{"operationId":"RecheckController_cancel24h","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Cancel a scheduled 24-hour recheck","tags":["recheck","public"]}},"/api/admin/recheck-jobs":{"get":{"operationId":"RecheckAdminController_list","parameters":[{"name":"status","required":false,"in":"query","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"type":"string"}},{"name":"offset","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin","recheck"]}},"/api/admin/recheck-jobs/stats":{"get":{"operationId":"RecheckAdminController_stats","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[{"adminKey":[]}],"tags":["admin","recheck"]}},"/api/account/monitoring/domains":{"get":{"operationId":"MonitoringController_list","parameters":[],"responses":{"200":{"description":""}},"security":[{"cookie":[]}],"tags":["monitoring","portal"]},"post":{"operationId":"MonitoringController_add","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDomainDto"}}}},"responses":{"201":{"description":""}},"security":[{"cookie":[]}],"tags":["monitoring","portal"]}},"/api/account/monitoring/domains/{id}":{"patch":{"operationId":"MonitoringController_updateDomain","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDomainDto"}}}},"responses":{"200":{"description":""}},"security":[{"cookie":[]}],"tags":["monitoring","portal"]},"delete":{"operationId":"MonitoringController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"cookie":[]}],"tags":["monitoring","portal"]}},"/api/account/monitoring/domains/{id}/pause":{"post":{"operationId":"MonitoringController_pause","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"cookie":[]}],"tags":["monitoring","portal"]}},"/api/account/monitoring/domains/{id}/resume":{"post":{"operationId":"MonitoringController_resume","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"cookie":[]}],"tags":["monitoring","portal"]}},"/api/account/monitoring/domains/{id}/run":{"post":{"operationId":"MonitoringController_run","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"cookie":[]}],"tags":["monitoring","portal"]}},"/api/account/monitoring/domains/{id}/checks":{"get":{"operationId":"MonitoringController_history","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"cookie":[]}],"tags":["monitoring","portal"]}},"/api/account/monitoring/domains/{id}/latest":{"get":{"operationId":"MonitoringController_latest","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"cookie":[]}],"tags":["monitoring","portal"]}},"/api/account/monitoring/settings":{"get":{"operationId":"MonitoringController_getSettings","parameters":[],"responses":{"200":{"description":""}},"security":[{"cookie":[]}],"tags":["monitoring","portal"]},"patch":{"operationId":"MonitoringController_updateSettings","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSettingsDto"}}}},"responses":{"200":{"description":""}},"security":[{"cookie":[]}],"tags":["monitoring","portal"]}},"/api/auth/register":{"post":{"operationId":"AuthController_register","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterDto"}}}},"responses":{"202":{"description":""}},"security":[{"cookie":[]}],"tags":["auth","portal"]}},"/api/auth/verify":{"get":{"operationId":"AuthController_verify","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"cookie":[]}],"tags":["auth","portal"]}},"/api/auth/resend-verification":{"post":{"operationId":"AuthController_resend","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendDto"}}}},"responses":{"202":{"description":""}},"security":[{"cookie":[]}],"tags":["auth","portal"]}},"/api/auth/login":{"post":{"operationId":"AuthController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"200":{"description":""}},"security":[{"cookie":[]}],"tags":["auth","portal"]}},"/api/auth/logout":{"post":{"operationId":"AuthController_logout","parameters":[],"responses":{"200":{"description":""}},"security":[{"cookie":[]}],"tags":["auth","portal"]}},"/api/auth/me":{"get":{"operationId":"AuthController_me","parameters":[],"responses":{"200":{"description":""}},"security":[{"cookie":[]}],"tags":["auth","portal"]}},"/api/auth/email-access":{"post":{"operationId":"EmailAccessController_request","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAccessDto"}}}},"responses":{"202":{"description":""}},"tags":["auth","portal"]}},"/api/auth/email-access/consume":{"post":{"operationId":"EmailAccessController_consume","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsumeAccessDto"}}}},"responses":{"200":{"description":""}},"tags":["auth","portal"]}},"/api/admin/stats":{"get":{"operationId":"AdminController_stats","parameters":[],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/slack/installations":{"get":{"operationId":"AdminController_slackInstallations","parameters":[],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"summary":"List Slack installations (workspaces)","tags":["admin"]}},"/api/admin/deliverability/config":{"get":{"operationId":"AdminController_getDeliverabilityConfig","parameters":[],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"summary":"Get deliverability control config","tags":["admin"]},"put":{"operationId":"AdminController_updateDeliverabilityConfig","parameters":[{"name":"x-admin-actor","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeliverabilityConfigDto"}}}},"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"summary":"Update deliverability control config","tags":["admin"]}},"/api/admin/seeds":{"get":{"operationId":"AdminController_listSeeds","parameters":[{"name":"status","required":false,"in":"query","schema":{"type":"string"}},{"name":"provider","required":false,"in":"query","schema":{"type":"string"}},{"name":"health","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]},"post":{"operationId":"AdminController_addSeed","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddSeedDto"}}}},"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/seeds/{id}/archive":{"post":{"operationId":"AdminController_archiveSeed","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-admin-actor","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArchiveSeedDto"}}}},"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/seeds/{id}/restore":{"post":{"operationId":"AdminController_restoreSeed","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-admin-actor","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/audit-log":{"get":{"operationId":"AdminController_listAuditLog","parameters":[{"name":"entityType","required":false,"in":"query","schema":{"type":"string"}},{"name":"entityId","required":false,"in":"query","schema":{"type":"string"}},{"name":"action","required":false,"in":"query","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"summary":"List admin audit log entries","tags":["admin"]}},"/api/admin/seed-health":{"get":{"operationId":"AdminController_seedHealth","parameters":[],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/seeds/bulk":{"post":{"operationId":"AdminController_bulkAddSeeds","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkSeedsDto"}}}},"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"summary":"Bulk-upload custom seed accounts","tags":["admin"]}},"/api/admin/seeds/{id}":{"patch":{"operationId":"AdminController_patchSeed","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchSeedDto"}}}},"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/seeds/sync-ldm":{"post":{"operationId":"AdminController_syncSeedsFromLdm","parameters":[],"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/ldm/control-accounts":{"get":{"operationId":"AdminController_listLdmControlAccounts","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/seeds/import-from-ldm":{"post":{"operationId":"AdminController_importFromLdm","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportFromLdmDto"}}}},"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/seeds/import-oauth-combo":{"post":{"operationId":"AdminController_importOauthCombo","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportOauthComboDto"}}}},"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"summary":"Import Outlook combo (public-client) seeds via IMAP XOAUTH2","tags":["admin"]}},"/api/admin/seeds/{id}/probe":{"post":{"operationId":"AdminController_probeSeed","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/providers":{"get":{"operationId":"ProvidersAdminController_list","parameters":[],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin","providers"]},"post":{"operationId":"ProvidersAdminController_create","parameters":[],"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin","providers"]}},"/api/admin/providers/{id}":{"get":{"operationId":"AdminController_getProvider","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]},"patch":{"operationId":"ProvidersAdminController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin","providers"]},"delete":{"operationId":"ProvidersAdminController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin","providers"]}},"/api/admin/providers/{id}/delivery-blocks":{"get":{"operationId":"AdminController_listDeliveryBlocks","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]},"post":{"operationId":"AdminController_addDeliveryBlock","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDeliveryBlockDto"}}}},"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/providers/{id}/delivery-blocks/{blockId}":{"delete":{"operationId":"AdminController_removeDeliveryBlock","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"blockId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/seeds/{id}/stats":{"get":{"operationId":"AdminController_seedStats","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"recent","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/providers/{id}/stats":{"get":{"operationId":"AdminController_providerStats","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/seeds/health-check":{"post":{"operationId":"AdminController_runSeedHealthCheck","parameters":[{"name":"includeInactive","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/cleanup/imap":{"post":{"operationId":"AdminController_triggerImapCleanup","parameters":[],"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/bounces/process-now":{"post":{"operationId":"AdminController_triggerBounceProcess","parameters":[],"responses":{"201":{"description":""}},"security":[{"adminKey":[]}],"tags":["admin"]}},"/api/admin/tests":{"get":{"operationId":"AdminController_listTests","parameters":[{"name":"limit","required":false,"in":"query","schema":{"type":"string"}},{"name":"offset","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string"}},{"name":"q","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"adminKey":

# --- truncated at 32 KB (71 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/live-direct-marketing-online/refs/heads/main/openapi/live-direct-marketing-online-inbox-check-openapi.json