Skip to main content

x402 Protocol

ShadowFeed implements x402 v2 — the HTTP-native payment protocol for machine-to-machine commerce.

What is x402?

x402 is based on the HTTP 402 Payment Required status code. It enables:

  • No API keys — Payment itself is the authentication
  • Pay-per-use — No subscriptions, pay only for what you consume
  • Machine-native — Designed for autonomous AI agents
  • On-chain — All payments are verifiable blockchain transactions

Protocol Flow

1. Initial Request (No Payment)

GET /feeds/whale-alerts HTTP/1.1
Host: api.shadowfeed.app

2. Server Returns 402

HTTP/1.1 402 Payment Required
payment-required: eyJ4NDAyVmVyc2lvbiI6Miwi... (base64)
Content-Type: application/json

{
"x402Version": 2,
"resource": {
"url": "https://api.shadowfeed.app/feeds/whale-alerts",
"description": "Whale movements data",
"mimeType": "application/json"
},
"accepts": [{
"scheme": "exact",
"network": "stacks:1",
"amount": "5000",
"asset": "STX",
"payTo": "SP1DV3T4ST2A89ZZ07M73B2N4AR5XFMDCNPGKK6CS",
"maxTimeoutSeconds": 300
}]
}

Key fields:

  • amount: Price in microSTX (5000 = 0.005 STX)
  • payTo: Provider's Stacks address
  • network: stacks:1 (mainnet) or stacks:2147483648 (testnet)

3. Agent Signs and Retries

The SDK:

  1. Parses the payment-required header (base64 → JSON)
  2. Creates a STX transfer transaction for the exact amount
  3. Signs it with the agent's private key
  4. Encodes the signed TX as base64
  5. Retries the request:
GET /feeds/whale-alerts HTTP/1.1
Host: api.shadowfeed.app
payment-signature: eyJwYXlsb2FkIjp7InRyYW5z... (base64)

4. Server Verifies and Settles

The API worker:

  1. Decodes the payment-signature header
  2. Sends to facilitator: POST /verify (validates amount, recipient, signature)
  3. Sends to facilitator: POST /settle (broadcasts TX to Stacks via Hiro API)
  4. Waits for TX confirmation
  5. Returns the data with payment-response header

5. Response with Data

HTTP/1.1 200 OK
payment-response: eyJzdWNjZXNzIjp0cnVl... (base64)
Content-Type: application/json

{
"alerts": [...],
"summary": {...},
"btc_price_usd": 104928
}

Headers Reference

HeaderDirectionEncodingPurpose
payment-requiredResponse (402)Base64 JSONPayment requirements
payment-signatureRequestBase64 JSONSigned payment
payment-responseResponse (200)Base64 JSONSettlement confirmation

x402-stacks SDK

ShadowFeed uses x402-stacks v2 which provides:

  • paymentMiddleware — Server-side middleware for Express/Hono
  • wrapAxiosWithPayment — Client-side axios interceptor
  • privateKeyToAccount — Wallet derivation from private key
  • STXtoMicroSTX — Price conversion utility