HTTP for money. Now on Injective.
The web returns ~1 billion HTTP 402s every day. Almost none of them settle. Here's what happens when they do — on a chain fast enough to feel free.
x402 is HTTP's "payment required" status code. With it, any API can charge a few cents per request — settled on-chain in under a second. No account, no API key, no monthly bill.
Think of it as a transit card for the internet — tap to pay per ride, no monthly pass, no signup at the gate.
Payments built for humans, retrofitted for the web.
Every API today assumes the customer is a person with a signup form, a credit card, and a month of patience. None of that works for an AI agent. x402 turns a single HTTP request into the unit of payment.
- Create an account with the API provider. Forms, emails, captchas.
- Add a payment method. KYC, approvals, hold periods.
- Buy credits or a subscription. Prepay; overpay or run out.
- Manage an API key. Store it. Rotate it. Hope it doesn't leak.
- Make the call. Get charged. Settle days later. Worry about chargebacks.
- The agent makes an HTTP request. No account, no key.
- The server replies HTTP 402: 1¢ in USDC. The agent pays.
- Access granted. Settled on-chain. Receipt is the only credential.
A request, a price tag, a receipt, the data.
Six steps. Three actors. About one second from start to finish.
- 01 AI agentAskRequest the dataGET /api/perpsThe AI agent makes an ordinary HTTP request — no signup, no key.
- 02 APIQuoteReply: 1¢ to unlockHTTP 402 · price: $0.01Instead of data, the API returns a price tag. This is what x402 adds to HTTP.
- 03 AI agentSignSign a USDC payment0.01 USDC → API's walletThe agent signs a one-cent USDC transfer with its own key. No human in the loop.
- 04 InjectiveSettleSettle on Injective~842 ms · finalisedInjective confirms the payment on-chain. The agent gets a cryptographic receipt.
- 05 AI agentRetryRetry with receiptGET + X-Payment: 0x9a47…Same URL, this time with proof the cent was paid.
- 06 APIDeliverReturn the data200 OK · live perpsThe API verifies the receipt on-chain and serves the response. Done.
One request. One payment. One unlocked API response.
Single-block finality
10000 atomic units
0.0003 INJ
Agent wallet, signed in-flight
The internet learns to charge AI — by the cent.
Today every API needs a signup form, a key, a subscription, a credit card. None of that works when an AI agent is the customer. x402 makes a single request the unit of payment.
Ask your assistant for live perps prices, funding rates, or open interest. It pays the API a fraction of a cent and answers. You never see a paywall, never enter a card.
Stop pre-negotiating API contracts. Your agent buys what it needs, when it needs it — search, compute, data, tool calls. Hundreds of micro-payments inside one user request.
Wrap any endpoint with the x402 boundary. Get paid for every successful call — from anyone, no signup required. Built for agents that don't have human accounts.
It's the internet's payment standard.
We're bringing it to sub-second, sub-cent on-chain settlement.
x402 is governed by the Linux Foundation. Founding members include Coinbase, Stripe, Cloudflare, AWS, Google, Visa, Mastercard, Circle, and Shopify. Injective is the chain making 1¢ payments actually feel like 1¢.
"Open protocols built the internet. Payments should be one of them."
"Sending value online should be as simple as sending an email."
"Secure, frictionless payments are foundational for AI agents, not optional."
Build it
Make any API payable per request.
Wrap an endpoint with the x402 boundary. An unpaid request returns a price. A paid retry unlocks the response through the same server-side adapter this demo uses.
npm install @injectivelabs/x402import express from "express";
import { injectivePaymentMiddleware } from "@injectivelabs/x402/middleware";
const app = express();
app.use(injectivePaymentMiddleware({ "GET /perps": { accepts: [{ network: "eip155:1776", asset: "0xa00C59fF5a080D2b954d0c75e46E22a0c371235a", amount: "10000" }] } }, { facilitatorUrl: process.env.X402_FACILITATOR_URL! }));
app.get("/perps", (_req, res) => res.json({ markets: [] }));