{"name":"OAKMONT Public API","version":"v1","base_url":"/api/v1","auth":{"type":"api_key","scheme":"Bearer","header":"Authorization: Bearer oak_live_...","alt_header":"X-API-Key: oak_live_...","obtain":"Create a key in the client portal (Portal -> Developer API)."},"rate_limit":{"model":"monthly_quota","quotas":{"api_free":100,"api_basic":5000,"api_pro":50000},"response_headers":["X-RateLimit-Limit","X-RateLimit-Remaining","X-RateLimit-Reset"],"exhausted":{"status":429,"retry_after_header":"Retry-After (seconds until the quota window resets at the start of next month)"}},"errors":[{"status":400,"meaning":"Invalid request body (for example a malformed URL)."},{"status":401,"meaning":"Missing, malformed, or revoked API key."},{"status":404,"meaning":"Referenced resource not found (for example an unknown plan_key)."},{"status":429,"meaning":"Monthly API quota reached; see the Retry-After and X-RateLimit-* headers."}],"error_body":{"detail":"string, a human-readable message"},"endpoints":[{"method":"GET","path":"/api/v1","summary":"This machine-readable index of the public API.","auth":false,"example_request":null,"example_response":{"name":"OAKMONT Public API","version":"v1","endpoints":["..."]}},{"method":"POST","path":"/api/v1/scan","summary":"Scan a public URL for common WCAG 2.1 AA / Section 508 failures.","auth":true,"example_request":{"url":"https://example.gov/about"},"example_response":{"id":"9f3c...","url":"https://example.gov/about","score":82,"grade":"B","totals":{"critical":1,"serious":2,"moderate":1},"issues":[{"impact":"critical","wcag":"1.1.1","title":"Images missing alt text (3)","help":"Every image needs an alt attribute.","count":3}],"error":null}},{"method":"POST","path":"/api/v1/quote","summary":"Price a remediation job from the live rate card.","auth":true,"example_request":{"plan_key":"page_508","chars":12000,"design":"basic","backend":"static","complexity":1},"example_response":{"plan_key":"page_508","price_cents":12000,"min_cents":2900,"min_applied":false,"lines":[{"label":"12,000 characters x $0.01","amount_cents":12000}]}},{"method":"POST","path":"/api/v1/eval","summary":"Deterministic LLM regression grading: your assertion suite, your model's answers, a score out of 100 with a reason per failure. No model runs, so the number never drifts.","auth":true,"example_request":{"cases":[{"key":"refund","assertions":[{"kind":"contains","value":"30 days"}]}],"answers":{"refund":"You have 30 days to return it."}},"example_response":{"cases":1,"passed":1,"failed":0,"score":100,"results":["..."]}},{"method":"POST","path":"/api/v1/ai-scan","summary":"AI Act transparency scan: which AI chat widgets a page runs and whether visitors are told (Article 50).","auth":true,"example_request":{"url":"https://example.com"},"example_response":{"url":"https://example.com","verdict":"action","widgets":[{"key":"chatbase","name":"Chatbase","role":"ai"}],"disclosure_found":false,"obligations":["..."]}},{"method":"POST","path":"/api/v1/privacy-scan","summary":"Tracker and consent-platform read of a page's source, with a measured verdict.","auth":true,"example_request":{"url":"https://example.com"},"example_response":{"url":"https://example.com","verdict":"review","cmp":["Cookiebot"],"tracking":[{"host":"google-analytics.com","name":"Google Analytics"}]}},{"method":"POST","path":"/api/v1/email-check","summary":"Deliverability records for a domain: MX, SPF, DMARC, DKIM across common selectors.","auth":true,"example_request":{"domain":"example.com"},"example_response":{"domain":"example.com","verdict":"ok","spf":{"present":true,"qualifier":"-all"},"dmarc":{"present":true,"policy":"reject"}}},{"method":"POST","path":"/api/v1/ksef-check","summary":"Structure check of one Polish FA invoice XML: NIP checksums, required fields, sum consistency.","auth":true,"example_request":{"xml":"<Faktura>...</Faktura>"},"example_response":{"ok":false,"problems":["NIP 1234567890 fails the checksum."]}},{"method":"POST","path":"/api/v1/notary/receipt","summary":"Sign a dated, publicly checkable receipt over a hash you computed yourself. The file never leaves your side.","auth":true,"example_request":{"sha256":"e3b0c44298fc1c149afbf4c8996fb924e3b0c44298fc1c149afbf4c8996fb924","filename":"msa-2026.pdf","reference":"CTR-4417"},"example_response":{"id":"9f3c...","verify_url":"https://.../verify/9f3c...","issued_at":"2026-08-24T09:00:00+00:00","receipt":{"...":"..."}}},{"method":"GET","path":"/api/v1/notary/receipts","summary":"Your receipts, newest first.","auth":true,"example_request":null,"example_response":{"receipts":[{"id":"9f3c...","subject":"msa-2026.pdf","revoked":false}]}},{"method":"POST","path":"/api/v1/notary/verify","summary":"Check a receipt somebody handed you, including whether it was withdrawn.","auth":true,"example_request":{"claim":{"...":"..."},"signature":"base64..."},"example_response":{"valid":true,"known_to_us":true,"revoked":false}}]}