ChainVerdict
ChainVerdict

Free live check · no wallet needed

See what an API returns before you pay.

Enter a public API address. We make one unpaid request and explain whether it answered, asked for payment, or returned something else.

Check an API now

Example: our own block-data API. No payment or wallet connection. Use public URLs only; do not include passwords, tokens or personal information. Your request is sent to Pulse and the target service.

Your result will appear here.

This checks the response to one GET request. It does not buy the service, verify paid delivery or certify that a provider is trustworthy. POST-only APIs may reject a GET even when working normally.

When does history help? Explore 12 clearly labelled, invented examples.

Current checks and historical proof are different.

Live checks work independently of archive verification. We still have historical observations. A storage replay bug caused saved totals for 56 days (7 August–1 October) to disagree with their original daily fingerprints, so those days cannot be used as verified historical evidence.

The bug was repaired on 2 October. That was a transition day. A separate collector compatibility fault affected 3 October, which is also excluded from verified-use examples. The next candidate full day is 4 October, checkable after it closes on 5 October UTC and its timestamp proof is ready. We preserve the old records and disclose the mismatch rather than claim the history is verified.

Current public status · How we collect data · Detailed integrity report

For developers: inspect the historical verification failure

A saved example of rejected historical evidence

These are public observations captured on 2 October with an authenticated publisher signature and an intact commitment chain. The observation records still fail; this is not a simulated success. Choose our own endpoint or another observed service. The browser displays the saved checker result; it does not perform Bitcoin verification.


Select “Show the evidence” to load the dated result.

Saved checker result · Original public sample · External Bitcoin headers

What the archive checker checks

  • Publisher signature against the public key pinned in the checker.
  • Record structure, counts and fingerprints.
  • Agreement with the original daily commitment.
  • Timestamp proof and proof of work against supplied Bitcoin headers.
  • Missing days, age, commitments over 72 hours late, incomplete days and damaged history.
  • Whether your exact endpoint is in the checked records.

What it cannot tell you

  • Whether a seller is honest or its paid response is useful.
  • What happened between our probes.
  • Whether our single observer recorded the truth.
  • Whether an x401 credential requirement will be satisfied.
  • Whether a Bitcoin header belongs to the best chain: that is an explicit external trust input. A mined minimum-difficulty header can pass the work check.

Integrate without connecting a wallet

Download and inspect the reference checker and pinned requirements. The dependencies are the official OpenTimestamps Python library and its Bitcoin/cryptography dependencies. They are not installed on the production service.

python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt

# Free fixed-origin downloads; preserve this new directory.
python verify_archive.py capture evidence-2026-10-02

# Offline: no request to ChainVerdict, no payment.
python verify_archive.py verify evidence-2026-10-02/bundle.json \
  --headers evidence-2026-10-02/bitcoin-headers.json \
  --as-of 2026-10-02

Use a fresh directory and the actual UTC date when you run this. Capture never overwrites earlier evidence. Exit 0 means all requested days passed these limited checks; 2 means insufficient evidence; 1 means an input or operational error. A pending timestamp will not pass yet.

Use the bundled example instead of a live capture

Download the three files above and run:

python verify_archive.py verify bundle.json \
  --headers bitcoin-headers.json --as-of 2026-10-02

Expected exit: 2, zero usable days. For an exact endpoint/window add --endpoint URL --from YYYY-MM-DD --to YYYY-MM-DD. Never interpret an absent endpoint as healthy.

Use verified counts in an integration review

Your application can require a complete, recent window and usable evidence for every requested day before considering this data. Otherwise, return insufficient_evidence. Even a passing result is only an observation input: preserve your own merchant allowlist, spending limits, approval rules and separate paid-delivery checks.

For a small integration, download the observation-summary adapter beside the checker. It rechecks the original bundle using the pinned publisher key and actual UTC date, requires an explicit endpoint and window, and excludes self-observations. It reports counts, never a payment recommendation. Endpoint matching is exact, including case and trailing slash. An empty findings list is not a positive verdict.

python summarize_observations.py bundle.json \
  --headers bitcoin-headers.json --endpoint https://example.test/api \
  --from 2026-10-04 --to 2026-10-04

The URL above is a placeholder, not a tracked endpoint. Select a real endpoint and completed window from your capture. As of 3 October there is no passing production example. Exit 0 means observations are available under the checker’s limited trust model; 2 means insufficient, excluded or refused evidence; 1 means input or execution failure. Counts are withheld when any requested day fails.

Canonical format and trust model · Synthetic cross-language test vector · Reference checker source

Where x401 fits

Building an integration? Try ChainVerdict Inspector. Free, local checks for proof headers, browser access and caching, with before/after comparisons. No upload or wallet. It checks deployment details, not credential validity.

x402 asks for payment. x401’s draft asks for proof. The draft uses PROOF-REQUEST, PROOF-RESPONSE and PROOF-RESULT headers. An ordinary HTTP 401 is not, by itself, x401.

The current Pulse archive has no credential evidence. The free /v1/status?url=… check now reports passive PROOF-REQUEST envelope recognition from the existing probe, independently of HTTP status. This anonymous check does not add observations to the archive. Scheduled probes retain only a small allowlisted summary in recent records, never the raw proof header, credential contents or nonce. This is not part of the timestamped daily archive. A recognised envelope is not proof of a valid credential request or enforced access. HTML-body carriers and versions other than draft 0.2.0 are not covered. Do not use it to infer that proof-gated access will work. If a service requests proof, handle that requirement separately with a compatible credential client before relying on paid access. We link to the draft specification and existing SDK; this checker is not an x401 implementation or certification.

Build with us

We are testing whether independently checkable observation history helps real agent workflows. If your wallet, router or marketplace needs a particular observation that existing tools miss, tell us about that workflow.

One operator, including the ChainVerdict endpoints marked as self-observations. No paid testing is performed by this example.