x402-native · HTTP 402 · no auth

CentStream

Pay-per-call microservices for AI agents and their developers. Every endpoint costs $0.05 USDC on base, settled on-chain by the public x402 facilitator. No accounts, no API keys, no subscriptions — one signed payment per call. Your first call is free — try any endpoint right now, no wallet needed for the sample.

$0.05per API call (USDC)
18endpoints in v1
0 keysheld by the server
stale-safecache with fallback

Endpoints

EndpointWhat you getExample
/v1/crypto/price Crypto prices (CoinGecko, Binance fallback). Cache 60s. /v1/crypto/price?symbols=btc,eth
/v1/gas Current gas price via public RPCs (two sources, auto-fallback). Cache 15s. /v1/gas?chain=base
/v1/fiat/rates Fiat FX rates, ECB reference rates via frankfurter.app. Cache 1h. /v1/fiat/rates?base=eur
/v1/weather Current weather by coordinates (open-meteo, no key). Cache 10min. /v1/weather?lat=52.52&lon=13.41
/v1/ipinfo Geolocation of the caller's IP from Cloudflare request data. Zero upstream calls. /v1/ipinfo
/v1/qr QR code as SVG, generated in-worker (pure JS, no external service). /v1/qr?text=https://example.com&size=256
/v1/meta OpenGraph / meta tags of a web page (fetch + parse). Cache 5min. /v1/meta?url=https://blog.cloudflare.com
/v1/dns DNS records via DoH (Cloudflare primary, Google fallback). Cache 60s. /v1/dns?name=example.com&type=MX
/v1/wiki Wikipedia article summary, 300+ languages (REST, action-API fallback). Cache 1h. /v1/wiki?lang=en&q=Cloudflare
/v1/dict English dictionary entry: definitions, examples, synonyms. Cache 24h. /v1/dict?q=serendipity
/v1/holidays Public holidays by country and year (110+ countries). Cache 24h. /v1/holidays?country=US&year=2026
/v1/news News via RSS: bbc, guardian, npr, techcrunch, theverge — or any custom https feed. Cache 5min. /v1/news?feed=bbc&limit=5
/v1/rand Cryptographic randomness in-worker: uuid v4, hex tokens, PINs, random ints. /v1/rand?type=token&len=64&n=2
/v1/convert Unit conversion in-worker: length, mass, data, speed, temperature. /v1/convert?value=26.2&from=mi&to=km
/v1/time Current time in any IANA timezone (Intl in-worker): ISO, offset, weekday. /v1/time?tz=Europe/Moscow
/v1/hash Hash of text in-worker: SHA-1/256/384/512, hex or base64. /v1/hash?text=hello&algo=sha-256
POST /v1/batch/s5 $0.25 Batch: up to 5 lookups in ONE paid call ($0.25 total) — one signature, one round trip. POST /v1/batch/s5 {"requests":[{"path":"/v1/hash","params":{"text":"hi"}}]}
POST /v1/batch/s20 $1.00 Batch: up to 20 lookups in ONE paid call ($1.00 total) — best value for agents. POST /v1/batch/s20 {"requests":[{"path":"/v1/time"},{"path":"/v1/gas","params":{"chain":"base"}}]}

All paid endpoints return JSON with ok / data / meta (meta includes source, cached, stale, ageSeconds). Free status page: /health.

How payment works (x402)

1 · RequestCall any endpoint with a plain GET.
2 · 402Server answers 402 Payment Required with signed payment details (asset, amount, payTo).
3 · SignYour client signs a USDC payment payload (EIP-3009) — no gas, no token approvals.
4 · Paid 200Retry with X-PAYMENT; facilitator verifies & settles on-chain; you get data + settlement proof.

Quick start (JavaScript agent / Node 20+)

npm install x402-fetch viem

import { wrapFetchWithPayment } from "x402-fetch";
import { privateKeyToAccount } from "viem/accounts";

const account  = privateKeyToAccount("0xyour-key");   // your wallet, not ours
const paidGet  = wrapFetchWithPayment(fetch, account);

const res = await paidGet("https://your-worker.workers.dev/v1/crypto/price?symbols=btc,eth");
console.log(res.status, await res.json());   // 200 + data, USDC settled automatically

Python / LangChain / other stacks: any x402 client library works — the API speaks x402 v1, scheme exact, asset USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bda02913 on Base.

Reliability: every data endpoint is cache-first (KV) with stale-while-error — if an upstream provider dies, you still get the last known data flagged stale: true. Crypto prices, gas, FX and DNS have a second upstream source with automatic failover. Identical concurrent requests are deduplicated (single-flight). Rate limit: 30 req/min per IP. Free sample: one free call per IP (header x-centstream-free-sample: true).