{"openapi":"3.0.3","info":{"title":"FinePrint","version":"1.0.0","description":"The fine-print firewall for humans and agents. Scan any contract, ToS, or lease before you (or your agent) agree. Every finding quotes the source verbatim — unverifiable findings are dropped (zero-hallucination guarantee).","license":{"name":"MIT"}},"paths":{"/scan":{"post":{"summary":"Scan a document for traps, obligations, money, and deadlines (free tier)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Raw document text (min 100, max 120k chars)"},"url":{"type":"string","description":"Public https URL of a terms/contract page (alternative to text)"},"title":{"type":"string"}}}}}},"responses":{"200":{"description":"ScanResult: gotchaScore 0-100, verdict SIGN/CAUTION/WALK_AWAY, verified findings, obligations, moneyMap, deadlines, sha256 receipt"},"400":{"description":"Bad input"},"429":{"description":"Rate limited"}}}},"/scan/{id}":{"get":{"summary":"Retrieve a scan by id (24h TTL)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ScanResult"},"404":{"description":"Not found"}}}},"/scan/{id}/calendar.ics":{"get":{"summary":"Download cancellation-deadline reminders as an iCalendar file","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"renewalDate","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"Known renewal date (YYYY-MM-DD); defaults to +1 year assumption"}],"responses":{"200":{"description":"text/calendar"}}}},"/diff":{"post":{"summary":"Diff two versions of a document — what changed, what got worse","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["before","after"],"properties":{"before":{"type":"string"},"after":{"type":"string"}}}}}},"responses":{"200":{"description":"DiffResult with added traps and verdict BETTER/WORSE/MIXED/UNCHANGED"}}}},"/x402/scan":{"post":{"summary":"Paid deep scan (x402 v2, X Layer). Without X-PAYMENT returns a 402 challenge.","responses":{"200":{"description":"ScanResult"},"402":{"description":"x402 payment requirements"}}}},"/x402/diff":{"post":{"summary":"Paid ToS diff (x402 v2, X Layer). Without X-PAYMENT returns a 402 challenge.","responses":{"200":{"description":"DiffResult"},"402":{"description":"x402 payment requirements"}}}},"/judge/examples":{"get":{"summary":"List golden examples for one-click Judge Mode","responses":{"200":{"description":"Example list"}}}},"/judge/run/{slug}":{"post":{"summary":"Run a golden example (served from cache — burns no LLM quota)","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ScanResult + example text"}}}},"/stats":{"get":{"summary":"Live public scoreboard: scans, traps caught, hallucinations blocked, x402 revenue","responses":{"200":{"description":"Stats"}}}},"/health":{"get":{"summary":"Health probe","responses":{"200":{"description":"ok"}}}}}}