DEV Community

I built 53 pay-per-call APIs that AI agents can pay for autonomously (x402 + USDC on Base)

Problem and Solution

AI agents are getting good at deciding what data they need. What they're bad at is the human paperwork around getting it: creating accounts, clicking email confirmations, pasting API keys, entering a credit card. Every one of those is a wall an autonomous agent can't climb on its own.

x402 removes that wall. It's an open payment protocol: the server answers 402 Payment Required, the client pays a few cents in USDC on-chain, and the request goes through - no account, no key, no human.

The API Farm

So I built a farm of APIs designed to be consumed exactly that way.

Base URL: https://api.x-402.online/ - the root returns a machine-readable JSON catalog, and there's an /openapi.json + /llms.txt for agents.

53 endpoints, all pay-per-call in USDC (from $0.005), settled on Base (also accepts Polygon & Arbitrum):

  • Web tooling - clean-markdown extraction, JS-rendered HTML, screenshots, PDF, link/meta extraction
  • French business & open data - company lookup (SIREN/SIRET), full KYB dossiers, financial scores, real-estate AVM & investment scorecards, BODACC, cadastre, DVF sale prices, geocoding, weather, holidays, IBAN validation…
  • UK company data - Companies House profiles, officers, PSC/beneficial owners, one-call KYB verdict
  • US public companies - SEC EDGAR profiles, annual financials, filings, one-call financial snapshot

The friction is the value: these wrap sources that need signup, keys, or heavy parsing (XBRL, registries) and expose them as one clean, payable call.

How an Agent Uses It

import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount(process.env.AGENT_KEY);
const fetchPaid = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }],
});

// The wrapper handles the 402 -> sign -> retry automatically.
const res = await fetchPaid("https://api.x-402.online/v1/us/snapshot?ticker=AAPL");
console.log(await res.json());

The agent's wallet just needs USDC on Base. No gas needed on the client side - the facilitator settles.

Live and Settling

Real on-chain payments are going through today (verifiable on BaseScan).

If you're building agents that need company data, web extraction, or open-data lookups without the account/key dance, point them at https://api.x-402.online/ and let them pay their own way.

Feedback welcome - happy to add endpoints agents actually ask for.

Comments

No comments yet. Start the discussion.