{"openapi":"3.1.0","info":{"title":"Second Opinion","version":"0.1.0","description":"Adversarial verification for AI agents, paid per verdict via the x402 protocol (USDC on Algorand, Base, Polygon, Solana). No accounts or API keys: pay per request. Machine docs: /v1/schema and /llms.txt."},"servers":[{"url":"https://secondopinionx402.com"}],"paths":{"/v1/try":{"post":{"summary":"Free trial: the quick check with no payment (3/day per caller)","description":"The identical quick-tier engine, free: no wallet, no account, no x402. Rate limited per caller per day plus a global daily cap; claim max 500 chars. Trial verdicts are unsigned — paid verdicts carry an Ed25519 receipt.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["claim"],"properties":{"claim":{"type":"string","minLength":8,"maxLength":500},"context":{"type":"string","maxLength":1000}}}}}},"responses":{"200":{"description":"Unsigned trial verdict with remaining-allowance info.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"mode":{"type":"string","enum":["quick","single","panel"]},"verdict":{"type":"string","enum":["refuted","supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"summary":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"point":{"type":"string"},"direction":{"type":"string","enum":["against_claim","for_claim","neutral"]},"source_url":{"type":"string"}}}},"citations":{"type":"array","items":{"type":"string"}},"panel":{"type":"array","items":{"type":"object"}},"checked_at":{"type":"string","format":"date-time"},"engine":{"type":"object"},"disclaimer":{"type":"string"}}}}}},"400":{"description":"Invalid request."},"429":{"description":"Free-trial allowance or global daily capacity exhausted (resets at UTC midnight)."}}}},"/v1/verify/quick":{"post":{"summary":"Reasoning-only check, no web research ($0.02 via x402)","description":"x402-paid endpoint: an unpaid request returns HTTP 402 with a PAYMENT-REQUIRED header (base64 JSON payment requirements). Pay with any x402 client and retry with the X-PAYMENT header. Response is delivered synchronously; you are never charged for failed requests.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["claim"],"properties":{"claim":{"type":"string","minLength":8,"maxLength":2000,"description":"The claim you are about to act on."},"context":{"type":"string","maxLength":4000,"description":"Why it matters / where it came from."},"claimed_sources":{"type":"array","items":{"type":"string","format":"uri"},"maxItems":5,"description":"URLs you relied on; they will be scrutinised, not trusted."}}}}}},"responses":{"200":{"description":"Verdict.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"mode":{"type":"string","enum":["quick","single","panel"]},"verdict":{"type":"string","enum":["refuted","supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"summary":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"point":{"type":"string"},"direction":{"type":"string","enum":["against_claim","for_claim","neutral"]},"source_url":{"type":"string"}}}},"citations":{"type":"array","items":{"type":"string"}},"panel":{"type":"array","items":{"type":"object"}},"checked_at":{"type":"string","format":"date-time"},"engine":{"type":"object"},"disclaimer":{"type":"string"}}}}}},"400":{"description":"Invalid request; not charged."},"402":{"description":"Payment required (see PAYMENT-REQUIRED response header)."}}}},"/v1/verify":{"post":{"summary":"One skeptic with live web research ($0.20 via x402)","description":"x402-paid endpoint: an unpaid request returns HTTP 402 with a PAYMENT-REQUIRED header (base64 JSON payment requirements). Pay with any x402 client and retry with the X-PAYMENT header. Response is delivered synchronously; you are never charged for failed requests.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["claim"],"properties":{"claim":{"type":"string","minLength":8,"maxLength":2000,"description":"The claim you are about to act on."},"context":{"type":"string","maxLength":4000,"description":"Why it matters / where it came from."},"claimed_sources":{"type":"array","items":{"type":"string","format":"uri"},"maxItems":5,"description":"URLs you relied on; they will be scrutinised, not trusted."}}}}}},"responses":{"200":{"description":"Verdict.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"mode":{"type":"string","enum":["quick","single","panel"]},"verdict":{"type":"string","enum":["refuted","supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"summary":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"point":{"type":"string"},"direction":{"type":"string","enum":["against_claim","for_claim","neutral"]},"source_url":{"type":"string"}}}},"citations":{"type":"array","items":{"type":"string"}},"panel":{"type":"array","items":{"type":"object"}},"checked_at":{"type":"string","format":"date-time"},"engine":{"type":"object"},"disclaimer":{"type":"string"}}}}}},"400":{"description":"Invalid request; not charged."},"402":{"description":"Payment required (see PAYMENT-REQUIRED response header)."}}}},"/v1/verify/panel":{"post":{"summary":"Three-skeptic panel, majority verdict ($0.75 via x402)","description":"x402-paid endpoint: an unpaid request returns HTTP 402 with a PAYMENT-REQUIRED header (base64 JSON payment requirements). Pay with any x402 client and retry with the X-PAYMENT header. Response is delivered synchronously; you are never charged for failed requests.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["claim"],"properties":{"claim":{"type":"string","minLength":8,"maxLength":2000,"description":"The claim you are about to act on."},"context":{"type":"string","maxLength":4000,"description":"Why it matters / where it came from."},"claimed_sources":{"type":"array","items":{"type":"string","format":"uri"},"maxItems":5,"description":"URLs you relied on; they will be scrutinised, not trusted."}}}}}},"responses":{"200":{"description":"Verdict.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"mode":{"type":"string","enum":["quick","single","panel"]},"verdict":{"type":"string","enum":["refuted","supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"summary":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"point":{"type":"string"},"direction":{"type":"string","enum":["against_claim","for_claim","neutral"]},"source_url":{"type":"string"}}}},"citations":{"type":"array","items":{"type":"string"}},"panel":{"type":"array","items":{"type":"object"}},"checked_at":{"type":"string","format":"date-time"},"engine":{"type":"object"},"disclaimer":{"type":"string"}}}}}},"400":{"description":"Invalid request; not charged."},"402":{"description":"Payment required (see PAYMENT-REQUIRED response header)."}}}},"/v1/verify/quick/async":{"post":{"summary":"Quick check as polled job ($0.02 via x402)","description":"x402-paid endpoint: an unpaid request returns HTTP 402 with a PAYMENT-REQUIRED header (base64 JSON payment requirements). Pay with any x402 client and retry with the X-PAYMENT header. Responds 202 immediately; poll the free result_url for the verdict. Required route family for Solana payers.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["claim"],"properties":{"claim":{"type":"string","minLength":8,"maxLength":2000,"description":"The claim you are about to act on."},"context":{"type":"string","maxLength":4000,"description":"Why it matters / where it came from."},"claimed_sources":{"type":"array","items":{"type":"string","format":"uri"},"maxItems":5,"description":"URLs you relied on; they will be scrutinised, not trusted."}}}}}},"responses":{"202":{"description":"Job accepted; settlement completes on this response.","content":{"application/json":{"schema":{"type":"object","properties":{"job_id":{"type":"string"},"status":{"type":"string","enum":["queued","running","done","failed"]},"mode":{"type":"string","enum":["quick","single","panel"]},"result_url":{"type":"string","format":"uri"},"estimated_seconds":{"type":"number"},"verdict":{"type":"object","properties":{"id":{"type":"string"},"mode":{"type":"string","enum":["quick","single","panel"]},"verdict":{"type":"string","enum":["refuted","supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"summary":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"point":{"type":"string"},"direction":{"type":"string","enum":["against_claim","for_claim","neutral"]},"source_url":{"type":"string"}}}},"citations":{"type":"array","items":{"type":"string"}},"panel":{"type":"array","items":{"type":"object"}},"checked_at":{"type":"string","format":"date-time"},"engine":{"type":"object"},"disclaimer":{"type":"string"}}}}}}}},"400":{"description":"Invalid request; not charged."},"402":{"description":"Payment required (see PAYMENT-REQUIRED response header)."}}}},"/v1/verify/async":{"post":{"summary":"Researched verdict as polled job ($0.20 via x402)","description":"x402-paid endpoint: an unpaid request returns HTTP 402 with a PAYMENT-REQUIRED header (base64 JSON payment requirements). Pay with any x402 client and retry with the X-PAYMENT header. Responds 202 immediately; poll the free result_url for the verdict. Required route family for Solana payers.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["claim"],"properties":{"claim":{"type":"string","minLength":8,"maxLength":2000,"description":"The claim you are about to act on."},"context":{"type":"string","maxLength":4000,"description":"Why it matters / where it came from."},"claimed_sources":{"type":"array","items":{"type":"string","format":"uri"},"maxItems":5,"description":"URLs you relied on; they will be scrutinised, not trusted."}}}}}},"responses":{"202":{"description":"Job accepted; settlement completes on this response.","content":{"application/json":{"schema":{"type":"object","properties":{"job_id":{"type":"string"},"status":{"type":"string","enum":["queued","running","done","failed"]},"mode":{"type":"string","enum":["quick","single","panel"]},"result_url":{"type":"string","format":"uri"},"estimated_seconds":{"type":"number"},"verdict":{"type":"object","properties":{"id":{"type":"string"},"mode":{"type":"string","enum":["quick","single","panel"]},"verdict":{"type":"string","enum":["refuted","supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"summary":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"point":{"type":"string"},"direction":{"type":"string","enum":["against_claim","for_claim","neutral"]},"source_url":{"type":"string"}}}},"citations":{"type":"array","items":{"type":"string"}},"panel":{"type":"array","items":{"type":"object"}},"checked_at":{"type":"string","format":"date-time"},"engine":{"type":"object"},"disclaimer":{"type":"string"}}}}}}}},"400":{"description":"Invalid request; not charged."},"402":{"description":"Payment required (see PAYMENT-REQUIRED response header)."}}}},"/v1/verify/panel/async":{"post":{"summary":"Panel as polled job ($0.75 via x402)","description":"x402-paid endpoint: an unpaid request returns HTTP 402 with a PAYMENT-REQUIRED header (base64 JSON payment requirements). Pay with any x402 client and retry with the X-PAYMENT header. Responds 202 immediately; poll the free result_url for the verdict. Required route family for Solana payers.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["claim"],"properties":{"claim":{"type":"string","minLength":8,"maxLength":2000,"description":"The claim you are about to act on."},"context":{"type":"string","maxLength":4000,"description":"Why it matters / where it came from."},"claimed_sources":{"type":"array","items":{"type":"string","format":"uri"},"maxItems":5,"description":"URLs you relied on; they will be scrutinised, not trusted."}}}}}},"responses":{"202":{"description":"Job accepted; settlement completes on this response.","content":{"application/json":{"schema":{"type":"object","properties":{"job_id":{"type":"string"},"status":{"type":"string","enum":["queued","running","done","failed"]},"mode":{"type":"string","enum":["quick","single","panel"]},"result_url":{"type":"string","format":"uri"},"estimated_seconds":{"type":"number"},"verdict":{"type":"object","properties":{"id":{"type":"string"},"mode":{"type":"string","enum":["quick","single","panel"]},"verdict":{"type":"string","enum":["refuted","supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"summary":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"point":{"type":"string"},"direction":{"type":"string","enum":["against_claim","for_claim","neutral"]},"source_url":{"type":"string"}}}},"citations":{"type":"array","items":{"type":"string"}},"panel":{"type":"array","items":{"type":"object"}},"checked_at":{"type":"string","format":"date-time"},"engine":{"type":"object"},"disclaimer":{"type":"string"}}}}}}}},"400":{"description":"Invalid request; not charged."},"402":{"description":"Payment required (see PAYMENT-REQUIRED response header)."}}}},"/v1/jobs/{job_id}":{"get":{"summary":"Job status and verdict when done (free)","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Job view.","content":{"application/json":{"schema":{"type":"object","properties":{"job_id":{"type":"string"},"status":{"type":"string","enum":["queued","running","done","failed"]},"mode":{"type":"string","enum":["quick","single","panel"]},"result_url":{"type":"string","format":"uri"},"estimated_seconds":{"type":"number"},"verdict":{"type":"object","properties":{"id":{"type":"string"},"mode":{"type":"string","enum":["quick","single","panel"]},"verdict":{"type":"string","enum":["refuted","supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"summary":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"point":{"type":"string"},"direction":{"type":"string","enum":["against_claim","for_claim","neutral"]},"source_url":{"type":"string"}}}},"citations":{"type":"array","items":{"type":"string"}},"panel":{"type":"array","items":{"type":"object"}},"checked_at":{"type":"string","format":"date-time"},"engine":{"type":"object"},"disclaimer":{"type":"string"}}}}}}}},"404":{"description":"Unknown or expired job id."}}}},"/v1/jobs/{job_id}/retry":{"post":{"summary":"Free retry for a failed job","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Retry queued."},"404":{"description":"Unknown job."},"409":{"description":"Job not failed or retries exhausted."}}}},"/v1/schema":{"get":{"summary":"Full machine-readable service description (free)","responses":{"200":{"description":"Service description."}}}}}}