{"openapi":"3.1.0","info":{"title":"InboxPolicy","version":"1.0.0","description":"Send-decision email verification API. One call returns an action — send, send_with_caution, review, retry_later, or avoid — with confidence and SMTP/DNS evidence, instead of a raw status field.","contact":{"name":"InboxPolicy","email":"hello@inboxpolicy.com","url":"https://inboxpolicy.com"},"x-guidance":"POST /v1/decide with {\"email\"} to get a send decision for one address (standard rate $0.01 in USDC on Base via x402, no account). Repeat wallets may send X-InboxPolicy-Payer before payment for rolling 30-day rates: 20% off after 1,000 settled units, 40% off after 10,000. POST /v1/batches/verify with {\"emails\":[...]} for bulk — one payment covers up to 5,000 emails, priced per email; the 402 challenge quotes the total. Poll batch results with the returned access_token. Catch-all and unknown addresses resolve to 'review', never a guess."},"servers":[{"url":"https://api.inboxpolicy.com"}],"paths":{"/v1/decide":{"post":{"operationId":"decide","summary":"Send decision for one email address","tags":["Verification"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}],"usageDiscounts":{"windowDays":30,"tiers":[{"minimumSettledUnits":1000,"discountPercent":20},{"minimumSettledUnits":10000,"discountPercent":40}]}},"parameters":[{"name":"X-InboxPolicy-Payer","in":"header","required":false,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"description":"Optional EVM wallet address for a rolling 30-day usage-rate quote. The eventual x402 authorization.from must match. The signed client automatically echoes the short-lived quote extension."}],"security":[{"x402":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","minLength":3,"description":"Address to evaluate."},"strictness":{"type":"string","enum":["aggressive","default","strict"],"default":"default"},"force_refresh":{"type":"boolean","default":false,"description":"Bypass the 72h verification cache."}},"required":["email"]}}}},"responses":{"200":{"description":"Send decision","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","example":"vrf_..."},"action":{"type":"string","enum":["send","send_with_caution","review","retry_later","avoid"]},"reason":{"type":"string"},"confidence":{"type":"integer","minimum":0,"maximum":100},"status":{"type":"string","enum":["valid","invalid","unknown","temporary_unavailable","syntax_error"]},"signals":{"type":"object","properties":{"catch_all":{"type":"boolean"},"disposable":{"type":"boolean"},"free":{"type":"boolean"},"role_account":{"type":"boolean"}}},"from_cache":{"type":"boolean"},"cost":{"type":"object","properties":{"credits":{"type":"integer"},"billable":{"type":"boolean"}}}},"required":["action","confidence","status"]}}}},"402":{"description":"Payment Required"}}}},"/v1/verify":{"post":{"operationId":"verify","summary":"Full verification detail plus send-decision fields for one email","tags":["Verification"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}],"usageDiscounts":{"windowDays":30,"tiers":[{"minimumSettledUnits":1000,"discountPercent":20},{"minimumSettledUnits":10000,"discountPercent":40}]}},"parameters":[{"name":"X-InboxPolicy-Payer","in":"header","required":false,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"description":"Optional EVM wallet address for a rolling 30-day usage-rate quote. The eventual x402 authorization.from must match. The signed client automatically echoes the short-lived quote extension."}],"security":[{"x402":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","minLength":3,"description":"Address to evaluate."},"strictness":{"type":"string","enum":["aggressive","default","strict"],"default":"default"},"force_refresh":{"type":"boolean","default":false,"description":"Bypass the 72h verification cache."}},"required":["email"]}}}},"responses":{"200":{"description":"Verification result","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","example":"vrf_..."},"action":{"type":"string","enum":["send","send_with_caution","review","retry_later","avoid"]},"reason":{"type":"string"},"confidence":{"type":"integer","minimum":0,"maximum":100},"status":{"type":"string","enum":["valid","invalid","unknown","temporary_unavailable","syntax_error"]},"signals":{"type":"object","properties":{"catch_all":{"type":"boolean"},"disposable":{"type":"boolean"},"free":{"type":"boolean"},"role_account":{"type":"boolean"}}},"from_cache":{"type":"boolean"},"cost":{"type":"object","properties":{"credits":{"type":"integer"},"billable":{"type":"boolean"}}}},"required":["action","confidence","status"]}}}},"402":{"description":"Payment Required"}}}},"/v1/batches/verify":{"post":{"operationId":"createVerifyBatch","summary":"Bulk verification — one payment per batch (up to 5,000 emails)","tags":["Verification"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.010000","max":"50.000000"},"protocols":[{"x402":{}}],"usageDiscounts":{"windowDays":30,"tiers":[{"minimumSettledUnits":1000,"discountPercent":20},{"minimumSettledUnits":10000,"discountPercent":40}]}},"parameters":[{"name":"X-InboxPolicy-Payer","in":"header","required":false,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"description":"Optional EVM wallet address for a rolling 30-day usage-rate quote. The eventual x402 authorization.from must match. The signed client automatically echoes the short-lived quote extension."}],"security":[{"x402":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":5000,"description":"Up to 5000 addresses; total price is count x the per-email rate."},"strictness":{"type":"string","enum":["aggressive","default","strict"],"default":"default"},"webhook_url":{"type":"string","format":"uri","description":"Optional signed completion webhook."}},"required":["emails"]}}}},"responses":{"202":{"description":"Batch queued","content":{"application/json":{"schema":{"type":"object","properties":{"batch_id":{"type":"string","example":"bat_..."},"status":{"type":"string","example":"queued"},"total_items":{"type":"integer"},"amount_usd":{"type":"number"},"access_token":{"type":"string","description":"Keyless polling credential; send as x-batch-access-token."}},"required":["batch_id","status","total_items","access_token"]}}}},"402":{"description":"Payment Required"}}}}},"components":{"securitySchemes":{"x402":{"type":"apiKey","in":"header","name":"PAYMENT-SIGNATURE","description":"x402 v2 payment signature header for paid operations."}}}}