OPERATIONAL serving on mainnet · payments accepted no issues in 18h 43m report a problem

💳 Pay-per-call

Machine-payable API access over BSV. No account, no signup, no subscription, no card. You pay a few hundred satoshis, you get the call. One payment, one call — no token to hold, nothing to leak. That is the entire relationship.

Verification is always free — checking any proof needs no payment and no account — and the hello/time demo endpoints let you exercise the payment flow itself. The paid work (fetch, capture, batch) is priced per call, sub-cent, and settles in one round trip.

Why this exists

Every API on the web assumes a human with an email address and a credit card sits behind the client. Software agents increasingly do not: an agent that needs one page from one service cannot sign up, verify an email, accept terms and enter card details. It needs to pay, get the thing, and move on.

Sub-cent payments make that possible. A card network cannot settle 400 satoshis (a small fraction of a cent) — the fees are orders of magnitude larger than the payment. BSV can.

What's for sale (main)

hello1 sat per call
demo endpoint — no marginal cost
time1 sat per call
demo endpoint — no marginal cost
fetch400 sat per call ⛓ anchors
verifiable fetch — headless render + on-chain receipt per call
shot400 sat per call ⛓ anchors
notarized capture — PNG or PDF of a page with the exact bytes anchored on-chain
batch300 sat per call (sized by leaf count) ⛓ anchors
batched timestamps — one Merkle root anchored on-chain for up to 3000 hashes
proofpack6000 sat per call
proof pack — a freshly SPV-verified BEEF + BUMP + tip attestation for a txid, in one call

This table is generated from the running configuration, so it is always the real price. Machine-readable version: curl https://bsv.cx/pay

Need portable inclusion evidence, not a new anchor? Proofpack takes any confirmed txid and returns a freshly verified BEEF, BUMP and self-synced header-tip attestation in one paid call.

Prefer to pay in USD? (MNEE)

Don't hold BSV? You can settle an offered bundle in MNEE — a native-BSV USD stablecoin — so an agent that never touches a volatile coin can still pay. It costs materially more than the native-BSV path above (paying in BSV is always cheapest here); that gap is the convenience. Verification stays free either way.

fetch$0.01 for 1 call in MNEE
shot$0.01 for 1 call in MNEE
proofpack$0.0025 for 1 call in MNEE

Pay the per-call price in MNEE to 1HRfvX63pDZEtUbJcA9Su9hvAbGpkQrU8A, then attach the txid as an X-MNEE-Txid header on your request — one payment, one call. We verify it on-chain ourselves. You can also POST it first to confirm it is a valid, unspent payment before you spend it:

curl -X POST https://bsv.cx/pay/mnee \
  -H 'content-type: application/json' \
  -d '{"resource":"fetch","txid":"<your MNEE txid>"}'

{ "ok": true, "verified": true, "mneeUsd": … }

# then spend it on one call:
curl -X POST https://bsv.cx/f -H 'X-MNEE-Txid: <your MNEE txid>' \
  -H 'content-type: application/json' -d '{"url":"https://example.com"}'

Generated from config, so it is always the real MNEE price. Machine-readable: the mnee block in curl https://bsv.cx/.well-known/x402.

How to engage — pay per call

1. askRequest the resource with no payment. You get HTTP 402 Payment Required and an invoice: an address, an amount, and an id — for this one call.
2. payBuild a BSV transaction paying that address, and POST the signed raw transaction back. We verify it, broadcast it, and serve the call. The receipt is the settlement txid — no credential is minted.
3. againThe next call is a new invoice and a new payment. There is no token to reuse — and so nothing a third party could steal to spend your balance.

Step 1 — get a quote

curl -i -X POST https://bsv.cx/f \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com"}'

HTTP/1.1 402 Payment Required
{
  "invoiceId": "…", "payTo": "1…",
  "amountSats": 400,
  "perCallSats": 400, "submitUrl": "https://bsv.cx/pay/<invoiceId>/submit"
}

One invoice buys one call. Each invoice gets its own freshly derived address, so your payment settles exactly one invoice and can never be confused with someone else's.

Step 2 — pay it, and you are served

curl -X POST https://bsv.cx/pay/<invoiceId>/submit \
  -H 'content-type: application/json' \
  -d '{"rawtx":"0100000001…"}'

{ "ok": true, "txid": "…" }

You send us the signed transaction and we broadcast it. That means no waiting for a block: the network arbitrates, and you are served immediately on mempool acceptance. Then re-request the resource with the same payment attached (see the x402 one-round-trip below, which folds these two steps into one). The curls in this section are a complete working client — no bsv.cx-specific library required.

Or just speak x402 — one round trip

The three steps above are our own dialect and they are not going anywhere. But if your client already speaks x402 (the emerging standard for HTTP 402 agent payments), you do not need any of it: make the request, read the PAYMENT-REQUIRED header, and make the same request again with the payment attached. No invoice endpoint, no session, no bsv.cx-specific code.

refusal402 + PAYMENT-REQUIRED: base64 of an x402 v2 PaymentRequired — price, address, and a bazaar descriptor telling you how to call the endpoint
paymentretry with PAYMENT-SIGNATURE: base64 of {accepted, payload:{lockingScriptHex, transaction}}
result200 with the resource and a PAYMENT-RESPONSE header carrying the settlement txid — your receipt. Each further call is its own payment; there is no reusable token.
schemeexact — you sign a whole Bitcoin transaction, because that is what a UTXO payment is; we verify and broadcast it ourselves

Every product we sell, with prices, input schemas and output examples, in one document: curl https://bsv.cx/.well-known/x402. A working client learns the request shape from the 402 itself and pays for a call — no bsv.cx-specific code.

How it actually works — read the spec, not our word for it. The payment scheme is a published open specification, BRC-166 — so you can check exactly how a payment is formed, verified and settled, and hold this service to it rather than trusting a black box: BRC-166: P2PKH Payments for HTTP 402, under review as bsv-blockchain/BRCs#231. It is a companion to x402#2890 (the BRC-29/42 mode); the x402-side binding lives at x402-bsv-p2pkh. Permissionless, self-verifying, pay-per-call payments any holder of BSV can make with no wallet ecosystem required.

Proof the paid path settles — check it yourself

Everything above is a claim. Here is one real payment that actually happened on mainnet, with every field you need to verify it without spending anything and without trusting us.

paid to1Dy8XGHcuyjsfSs2QpyEiP1w4cVNQaXHYn
locking script76a9148e3f1506db9e226b5850554953829d536299312588ac
amount10 sat — the price of one hello quote
settled in8beeaead43c578de5b22c0bd30ac6342ecd1855d7ad31dfa223482e920d12bbc

Check it on explorers that are not us — the payment either exists on the public ledger or it does not, and neither of these takes our word for anything: WhatsOnChain · Bitails. Look for an output of 10 satoshis whose script is the hex above. That is the whole verification: the locking script in the challenge is the one the chain was paid.

Being straight about what this is: we made this payment ourselves, to capture a worked example. It proves the rail settles end to end — challenge, signed transaction, broadcast, receipt. It is not evidence that anyone else has used the service, and we are not going to dress up our own test transaction as customer traffic.

What a call actually costs

One payment buys one call, at a flat per-call price. Rendering work (fetch, capture) varies in cost — a 2-second page and a 30-second page are not the same to run — but under pay-per-call we absorb that variance rather than meter it: you pay the published per-call price and we eat the tail on a slow page, bounded by the render timeout. Batched timestamps are the one exception — their price is known up front from the number of hashes, so that invoice is sized by leaf count at quote time (a bigger batch is cheaper per document).

pricethe per-call amountSats in the 402 — flat for render work; sized by leaf count for a batch
if we failwe produce the result before broadcasting your payment, so a failed request is never broadcast and never charged — you keep your coins
receiptthe settlement txid, in the PAYMENT-RESPONSE header and an X-Pay-Txid header

Capacity & fairness

statusaccepting work — 0/4 slots in use
typical render~4.0s
per-caller limit2 concurrent — so one client cannot monopolise the queue

If we are at capacity you get 503 with a Retry-After derived from real observed render times, and your call is not consumed. We would rather tell you to come back in four seconds than silently park your request until it times out.

The interesting one: verifiable fetch

/f returns clean markdown of a live page and an on-chain receipt committing to exactly those bytes at that moment. Anyone can later verify what you were served — without trusting us, and even if this service disappears. Scraping is a commodity; a third-party-checkable record of what the web said is not.

check 1sha256(content) = the manifest's contentSha256
check 2sha256(manifest) = the receipt id
check 3that id appears in the transaction's OP_RETURN as bsv.cx / fet2 / <id>
what it provesbsv.cx fetched those exact bytes at that time, and cannot later change its story — the hash was published before anyone knew it would be disputed.
what it does not provethat the origin site served them. We are the witness. A receipt makes our account of what we saw non-repudiable; it does not remove us from the loop, and a dishonest operator could anchor anything. If that distinction matters to you, anchor your own capture and compare — the verification endpoints are free precisely so you never have to take our word for it.

Verification endpoints are free and public — a proof nobody can check is not a proof. See a real one: live receipt →

Do you need BSV at all?

Probably not. Notarizing, archiving and every verification endpoint are free — permanently, by design.

If you do want some

The amounts here are very small. One verifiable fetch costs 400 sat — 0.00000400 BSV. As an illustration only: at $50/BSV that is about $0.000200. We state the assumed price because it moves; the satoshi figures in the table above are the real ones.

Do not complete KYC at an exchange just to use this. The smallest practical exchange purchase is thousands of times more than you will ever spend here. That is a bad trade for you, and we would rather say so than sell you the trip.

If you still need a small amount, the realistic routes — listed in no order, with no endorsement — are a wallet with in-app purchase, an exchange that lists BSV, or a person who already holds some sending you a few thousand satoshis. Any BSV wallet works. We do not care which one you use.

no kickbacksWe take no referral fees and have no affiliation with any wallet or exchange. You can check that: no link on this site carries a tracking parameter.
no keysWe never ask for a private key, seed phrase or wallet login. The only thing you ever send us is an already-signed transaction. Anyone asking you for more is not us.
not vettedWe do not monitor third-party services and cannot vouch for any of them. Verify before sending money anywhere — including here.

You are buying postage, not an investment. Nothing on this page is advice about acquiring or holding BSV.

Honest caveats

betaThis is new. It works and it is on mainnet, but treat it as beta.
0-confWe serve on mempool acceptance, not on a confirmed block. Appropriate at these amounts; not settlement finality.
stored contentSnapshot bytes are best-effort and may be removed. The on-chain proof is permanent — keep your own copy of anything you care about.
invoices expireA quote is good for a short window — pay it reasonably soon or request a fresh one. There is no stored balance to lose: one payment is one call.

← bsv.cx · JSON price list · archiver