{"openapi":"3.1.0","info":{"title":"kenoodl verify","version":"1.0.0","description":"A self-audit verifies consistency, never completeness. kenoodl verify is the check that is not you: the independent gate before code is trusted with a consequence. Submit your code and the claim the consequence depends on, and execution returns the verdict against what the code actually does. HELD, or BROKE at the exact input; FINDINGS or DROP where a claim cannot be settled. BROKE fires only from a contract you provide. Handles deterministic code and math only. Paid per call over x402 on Base, 0.10 USDC, no account, nothing retained.","contact":{"name":"kenoodl","url":"https://kenoodl.com","email":"info@kenoodl.com"},"license":{"name":"Proprietary"}},"servers":[{"url":"https://kenoodl.com","description":"Production"}],"security":[],"paths":{"/api/verify":{"post":{"operationId":"verify","summary":"Submit code and a claim; get a verdict (pay per call over x402)","description":"The independent gate before code is trusted with a consequence: call it before a merge, a deploy, a payout, or a done-report, because the checks the code has passed were written inside the frame that produced it. First POST without payment returns 402 with the payment requirements (those are the terms). Pay 0.10 USDC on Base and retry with the PAYMENT-SIGNATURE header (a signed x402 v2 EIP-3009 authorization). Provide a contract for a BROKE-capable verdict, or send an assumption for a FINDINGS read. The verdict returns synchronously in the response body {verdict, detail, contract, proof, proofRuns, closer}; no jobId, no polling. Every delivered verdict is charged, HELD and DROP included; if no verdict is produced (422/503) the payment authorization is cancelled and you are not charged.","security":[],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"},"description":"The base64 x402 v2 payment payload, sent on the retry after the 402."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["code"],"properties":{"code":{"type":"string","maxLength":16000,"description":"The function source under test. JavaScript (Node) or Python 3 only."},"contract":{"type":"object","description":"Provide a {fn, examples:[{call, expected}]} contract for a BROKE-capable verdict."},"assumption":{"type":"string","maxLength":4000,"description":"A claim in plain words for a FINDINGS read (never BROKE)."}}}}}},"responses":{"200":{"description":"Verdict returned in the body {verdict, detail, contract, proof, proofRuns, closer}: HELD, BROKE, FINDINGS, or DROP"},"400":{"description":"Missing code or invalid payment"},"402":{"description":"Payment required; x402 instructions returned"},"422":{"description":"No verdict produced; payment cancelled (not charged)"},"429":{"description":"Rate limited: x402 authorization reuse (sign a fresh authorization per call) or per-IP flood. Payment cancelled (not charged)."},"503":{"description":"Verify engine unavailable; payment cancelled (not charged)"}}}}}}