{"name":"BookProof API","version":"v1","base_url":"https://bookproof.bedvibe.studio","description":"Document-grounded verification and retrieval-evaluation. Send a document and claims/questions; BookProof scores how well each is grounded in the document. Deterministic local retrieval only — no external model APIs.","auth":{"header":"X-BookProof-Token","required_for":["POST /api/bookproof/v1/verify"]},"endpoints":{"GET /api/bookproof/health":"Public health check.","GET /api/bookproof/v1/spec":"This document (public).","POST /api/bookproof/v1/verify":"Verify claims/questions against a document (token required).","GET /api/bookproof/report/{run_id}":"Markdown report for a run."},"verify_request_schema":{"title":"string (optional) — document title","text":"string (required) — the source document text","claims":"array (required) — each item is EITHER a string (claim/question) OR a claim object (see claim_object_schema). The two forms may be mixed in one request.","claim_object_schema":{"claim":"string (required) — claim or question text","gold_answer":"string (optional) — expected answer; enables answer-term coverage scoring","evidence_terms":"string[] (optional) — terms expected in supporting evidence; enables context precision/recall scoring","expected_chapters":"string[] (optional) — expected chapter/section names (carried into results)"},"method":"string (optional, default 'flat_chunk_rag'); one of ['chapter_summary_chain', 'flat_chunk_rag', 'hierarchical_book_rag', 'naive_first_context', 'naive_last_context']","top_k":"integer (optional, default 5, clamped 1-20)"},"limits":{"max_text_chars":3000000,"max_claims":200,"concurrency":"one active run at a time; returns HTTP 429 when busy"},"constraints":["No external model API calls (no OpenAI / Claude / Gemini).","No URL fetching — send text directly.","Deterministic embeddings (hashing_numpy)."],"example_curl":"curl -s -X POST https://bookproof.bedvibe.studio/api/bookproof/v1/verify -H 'X-BookProof-Token: <token>' -H 'Content-Type: application/json' -d '{\"title\":\"My doc\",\"text\":\"...document text...\",\"claims\":[\"a simple claim string\",{\"claim\":\"a richer claim\",\"gold_answer\":\"expected answer\",\"evidence_terms\":[\"term1\",\"term2\"],\"expected_chapters\":[\"ch01\"]}],\"method\":\"flat_chunk_rag\",\"top_k\":5}'"}