# x402 Hub > Discover and call paid APIs — no API keys, no accounts, pay per request via the x402 protocol. > Dashboard: https://x402-hub.secondstate.io/ > Source: https://github.com/second-state/x402-hub ## How it works x402 Hub is a marketplace for pay-per-call APIs using the x402 payment protocol. API providers register their endpoints; callers pay in USDC on Base Sepolia per request. No registration, no API keys, no rate limits — just send a standard HTTP request and settle payment onchain via an EIP-3009 signature. ## Skills Install the Claude Code / agent skills to discover and call x402 services: $ npx skills add second-state/x402 ## Discovery API List all services: GET https://x402-hub.secondstate.io/api/listings Get a single service by ID: GET https://x402-hub.secondstate.io/api/listings/{id} Get usage documentation (markdown) for a service: GET https://x402-hub.secondstate.io/api/listings/{id}/usage ## Listing response shape ```json [ { "id": "abc1234", "title": "Weather API", "description": "Hourly weather data", "price": "$0.01", "pay_to": "0xabc...def", "created_at": "2026-04-28T14:30:00+00:00", "paid_url": "https://x402-hub.secondstate.io/paid/abc1234" } ] ``` ## Calling a paid endpoint Each listing has a `paid_url`. The payment flow is: 1. Send a request to the `paid_url` (GET or POST). 2. The hub returns `402 Payment Required` with a `PAYMENT-REQUIRED` header containing accepted payment schemes, price, payTo address, and network. 3. Your agent signs an EIP-3009 USDC transfer and retries with a `PAYMENT-SIGNATURE` header. 4. The hub verifies the signature, forwards the request to the upstream API, settles payment, and returns the upstream response. Query parameters, request body, and headers are forwarded to the upstream API. ## Registering a new service Providers can register their API at: POST https://x402-hub.secondstate.io/new Required fields: title, description, upstream_url, price, pay_to (EVM address), and usage_markdown (documentation in markdown). ## Health check GET https://x402-hub.secondstate.io/health → {"status": "ok"}