Prove what a URL returned.
Signed, timestamped, portable.

Attest402 captures a public web or API response and returns a cryptographically signed, RFC-3161-timestamped evidence package that verifies fully offline. Pay per call with x402 — no account, no API key. Built for AI agents.

0.20 USDC per attestation x402 · Base Ed25519 + RFC-3161 Verification always free
Quickstart API Reference

Why

Audit trails for agents

Your agent made a decision based on an API response. Prove what that response actually was — attach the evidence package to the audit log.

Dispute-ready snapshots

Prices, terms, availability, published statements: capture the exact bytes served at a moment in time, with an independent timestamp.

Verifiable, not trusted

Anyone can verify the Ed25519 signature and hashes offline with ~30 lines of code. You don't have to trust Attest402 after the fact.

Quickstart

Call the endpoint

POST a public HTTPS URL to /v1/attest. The response is HTTP 402 with x402 payment requirements.

Pay 0.20 USDC

Any x402 client (x402-fetch, Python SDK, MCP) signs the payment automatically. Settlement only happens after a successful capture.

Store the evidence

Download the evidence package (zip) and keep it — it verifies offline forever against the published public keys.

# any x402-enabled HTTP client — payment handled automatically
POST https://attest402.com/v1/attest
{
  "url": "https://api.example.com/prices/btc",
  "externalReference": "agent-job-18492",
  "includeTrustedTimestamp": true
}

# → 200 OK
{
  "attestationId": "attest_9f8a1b2c3d4e",
  "observedAt": "2026-08-01T19:50:00.123Z",
  "httpStatus": 200,
  "bodyHash": "sha256:e3b0c442...",
  "attestation": { "algorithm": "Ed25519", "signature": "base64:..." },
  "trustedTimestamp": { "type": "RFC3161", "status": "VALID" },
  "evidencePackageUrl": "https://attest402.com/v1/evidence/attest_9f8a1b2c3d4e"
}

API

EndpointMethodPriceFunction
/v1/attestPOST0.20 USDCCreate a signed evidence package
/v1/verifyPOSTfreeVerify an attestation (+ optional body)
/v1/verify/{id}GETfreeAttestation metadata
/v1/evidence/{id}GETfreeDownload evidence package (24 h)
/.well-known/attest-keys.jsonGETfreeEd25519 public keys (old keys stay available)
/llms.txtGETfreeAgent-readable service description

Limits: GET only · public HTTPS only · max 3 redirects · max 2 MB · 10 s timeout · no logins, cookies, JS rendering or screenshots. Evidence packages are retained 24 hours, metadata 90 days — store the package yourself for long-term custody.

What's in an evidence package

attestation.json               # canonical signed record + signature + public key
response-body.bin              # the exact bytes received
response-headers.json          # captured response headers
redirect-chain.json            # every redirect hop
timestamp-token.tsr            # independent RFC-3161 timestamp token (DER)
verification-instructions.txt  # step-by-step offline verification

Pipeline: Canonical JSON → SHA-256 → Ed25519 signature → RFC-3161 timestamp. Verify offline with any Ed25519 implementation — no call to attest402.com needed.

Scope of the evidence. Attest402 provides cryptographically signed evidence of a public HTTP response observed by the service at a stated time. The evidence confirms the integrity of the captured data and Attest402's observation. It does not certify the truth, legality or authorship of the captured content, and it is not a legally certified notarization.