Most x402 examples point at a throwaway echo server. This one calls a real endpoint that returns a real US weather forecast — and you can run it in under a minute.
You can verify the endpoint returns real data with zero setup — no wallet, no payment — using a trial call (one free real call per endpoint per hour):
# Free trial call — real data, no payment, no signup (1/endpoint/hour): curl "https://2s.io/api/weather/zip?zip=94103&trial=1"
A paid x402 call is a probe that returns 402, then a signed retry. First, see the 402 envelope:
# 1. Probe with no auth → HTTP 402 + the x402 PaymentRequirements envelope:
curl -i "https://2s.io/api/weather/zip?zip=94103"
# → 402 Payment Required
# → body: { "x402Version": 2, "accepts": [ { ...payTo, maxAmountRequired, network... } ], "error": "..." }The SDKs handle the whole probe → sign → retry loop. Fund any EVM wallet with a little USDC on Base and call the endpoint directly:
// npm i @2sio/sdk
import { TwoS } from '@2sio/sdk'
// Fund any EVM wallet with a little USDC on Base. No signup, no API key.
const client = new TwoS({ privateKey: process.env.EVM_PRIVATE_KEY as `0x${string}` })
const res = await client.weather.zip({ zip: '94103' })
console.log(res.data) // real National Weather Service forecast
console.log(res.costUsd) // what this call cost, in USDC
console.log(res.settlement?.txHash) // on-chain settlement txThe same call in Python:
# pip install 2sio
import os
from twosio import TwoS
client = TwoS(private_key=os.environ["EVM_PRIVATE_KEY"])
res = client.weather.zip(zip="94103")
print(res.data) # real forecast
print(res.cost_usd) # USDC charged
print((res.settlement or {}).get("tx_hash"))Call a live x402 API right now — no signup.
Browse the full endpoint directory, grab the quickstart, or read the llms.txt manifest. Every endpoint is keyless and pay-per-call.