01Self-describing pricing — no hidden costs
Claim: every route and its exact price is machine-readable and always current; GET / is the source of truth.
curl -s https://x402-api-production-266e.up.railway.app/ | jq '.endpoints'
You get every route with its price, plus the live payment parameters (network, asset, payTo). Nothing is hardcoded in docs — clients re-read this, so integrations never go stale.
Transparent, self-updating pricing you can machine-read before spending a cent.
02Pay-per-call, no accounts — see the 402
Claim: no API keys, no signup — a wallet just pays per call, on Base or Solana, and errors are never charged.
# Request without paying — inspect the exact payment challenge:
curl -s -i https://x402-api-production-266e.up.railway.app/v1/whales/latest?limit=1 \
| grep -i '^payment-required:' | cut -d' ' -f2 | base64 -d | jq .
The 402 spells out price, asset, payTo, and both accepts (Base + Solana) up front. No account was created; nothing was charged. Pay with any x402 client (@x402/fetch, npx x402-proxy) only when you choose to.
Zero-onboarding, exact-price-up-front, dual-network pay-per-call — verifiable without paying.
03Signed outcomes — verify a signature offline
Claim: /v1/attest returns each resolved outcome as an ed25519 signature you verify offline against a published key — the portable proof no raw feed offers.
# The public verification key is published on the canonical origin:
curl -s https://data.predge.io/.well-known/predge-attest.json | jq .
The key 13fa3d18…52d9 is the anchor. Paste any signed /v1/attest response into the offline verifier (in-browser WebCrypto, no server) — a valid one shows VALID, a non-Predge key is flagged, and flipping a single byte turns it INVALID. The verification recipe (Node + PyNaCl) is at attest-verification.md.
The signature is real and portable — you can prove an outcome to a third party or a contract without trusting Predge or reading a chain.
04Honest data — it degrades, it doesn't fabricate
Claim: thin data returns insufficient_data with a reason — never a made-up number. Win rates count RESOLVED markets only.
curl -s https://x402-api-production-266e.up.railway.app/openapi.json \
| jq '.info["x-guidance"]'
The spec states the honesty rules plainly: aggregates return {"insufficient_data": true, "reason": …} while a dataset is young; win rates are computed on resolved markets only; unknown wallets/markets 404 (not charged); prices from trade prints are labelled as such. No unrealized-PnL flattery.
The product tells you when it doesn't know — the opposite of a feed that always answers confidently.