{"service":"Provenonce Beats — Work Proof","description":"Stateless public utility. Validates N sequential SHA-256 beats at difficulty D, anchored to a recent global beat. Returns a signed receipt. Policy-free: no cost formulas, no identity. The caller decides what N means for their use case.","stateless":true,"auth_required":false,"endpoint":"POST /api/v1/beat/work-proof","receipt_type":"work_proof","signing_context":"provenonce:beats:work-proof:v1","public_caps":{"min_difficulty":100,"max_difficulty":5000,"min_spot_checks":3,"max_spot_checks":25,"spot_check_density":1000,"anchor_grace_window":5},"spot_check_rules":{"genesis_binding":"spot_checks[0].prev MUST equal from_hash — proves chain starts at the stated origin","terminal_binding":"spot_checks sorted by index; last entry MUST have hash===to_hash and index===beats_computed","density":"required = max(min_spot_checks, min(ceil(beats_computed/spot_check_density), max_spot_checks))","ordering":"spot_checks are sorted server-side; submit in any order","note":"SHA-256 is not a true VDF. Intermediate prev values between spot checks are unverified. Genesis and terminal binding prove endpoints; density sampling provides probabilistic interior coverage."},"reason_codes":{"spot_check_failed":"One or more spot checks failed hash recomputation","stale_anchor":"anchor_index is too old relative to the current global anchor","insufficient_difficulty":"difficulty is below the minimum required","count_mismatch":"last spot check index does not equal beats_computed","insufficient_spot_checks":"not enough spot checks for the stated beats_computed (density requirement)","genesis_not_bound":"first spot check prev does not equal from_hash","terminal_not_bound":"last spot check hash does not equal to_hash","invalid_input":"malformed request body"},"receipt_format":{"type":"work_proof","beats_verified":"integer — server-derived from verified terminal spot check index (equals beats_computed when terminal binding holds)","difficulty":"integer","anchor_index":"integer","anchor_hash":"string | null","from_hash":"string — caller-provided start hash","to_hash":"string — caller-provided end hash","utc":"string — ISO 8601 server timestamp","signature":"string — base64 Ed25519 over canonical JSON of fields above"},"_note":"Verify the receipt signature using the work_proof key from GET /api/v1/beat/key."}