{"service":"pay.bsv.cx — pay-per-call (HTTP 402)","network":"main","enabled":true,"pricing":[{"resource":"hello","priceSats":10,"calls":100,"perCallSats":0.1,"anchorsOnChain":false,"description":"demo endpoint — no marginal cost","available":true},{"resource":"time","priceSats":10,"calls":100,"perCallSats":0.1,"anchorsOnChain":false,"description":"demo endpoint — no marginal cost","available":true},{"resource":"fetch","priceSats":4000,"calls":10,"perCallSats":400,"anchorsOnChain":true,"description":"verifiable fetch — headless render + on-chain receipt per call","available":true},{"resource":"shot","priceSats":4000,"calls":10,"perCallSats":400,"anchorsOnChain":true,"description":"notarized capture — PNG or PDF of a page with the exact bytes anchored on-chain","available":true},{"resource":"batch","priceSats":3000,"calls":10,"perCallSats":300,"anchorsOnChain":true,"description":"batched timestamps — one Merkle root anchored on-chain for up to 3000 hashes","available":true}],"metering":{"quantumMs":5000,"maxCallsPerRender":12,"leafQuantum":300,"note":"render resources cost ceil(renderMs / 5000) calls (min 1, max 12); batch resources cost ceil(leaves / 300) calls (min 1). The actual charge is returned in X-Pay-Calls-Charged"},"load":{"inFlight":0,"capacity":4,"perTokenLimit":2,"avgRenderMs":4000,"admitted":0,"rejected":0,"busy":false},"trial":{"open":true,"callsPerCaller":10,"remainingPool":1964,"grantUrl":"https://bsv.cx/pay/trial","note":"10 free calls per caller per resource, once each. 'open' and 'remainingPool' are the shared pool across all callers, not a personal guarantee — if you have already used yours, pay per call."},"flow":["Two shapes — see /.well-known/x402 for each resource's exact method + path.","Demo resources (hello, time): GET /pay/:resource -> 402; pay the invoice, then re-request with header 'X-Pay-Token: <token>' (Authorization: Bearer <token> is also accepted) -> resource.","Paid endpoints (fetch=POST /f, shot=POST /shot, batch=POST /n/batch) take a JSON body and are NOT GET /pay/:resource: POST the resource -> 402; then either resubmit the SAME request with a 'PAYMENT-SIGNATURE' header (the x402 path, one round trip) OR POST {rawtx} to the challenge's submitUrl for a token and resend with header 'X-Pay-Token: <token>'."],"x402":{"version":2,"scheme":"exact","network":"bip122:000000000019d6689c085ae165831e93","discovery":"https://bsv.cx/.well-known/x402","flow":["request the resource -> 402 with a base64 PAYMENT-REQUIRED header","resubmit the SAME request with PAYMENT-SIGNATURE: base64({accepted,payload:{invoiceId,rawtx}})","-> 200 with the resource, a PAYMENT-RESPONSE header and X-Pay-Token for the remaining calls"]}}