エージェント開発者向け
リクエスト単位で支払う。
アカウントもキーも不要。
x402 は HTTP ステータス 402 Payment Required の上に構築されたオープンな支払いプロトコルです。有料エンドポイントはキーなしのリクエストに機械可読な支払いチャレンジで応答し、クライアントは提示額の USDC 送金許可に署名して再送。決済はオンチェーンで確定し、データが返ります。1 リクエスト = 1 マイクロペイメント — サインアップも API キーもサブスクも不要。この API の有料エンドポイントはすべて x402 をネイティブに話します。
Bazaar でのエンドポイント発見
全エンドポイントを Coinbase x402 Bazaar(facilitator のディスカバリカタログ)に掲載しています。エージェントは意図で検索し、リソース URL・価格・入力スキーマを取得できます。同じ情報は 402 レスポンス自体にも載っています — PAYMENT-REQUIRED ヘッダーの extensions.bazaar ブロックに、具体的な入力例・JSON スキーマ・出力例が入っているため、URL を知っているエージェントに別チャネルは不要です。
支払い付きリクエストの流れ
キーを付けずにリクエストを送ると、支払いチャレンジが返ります:
リクエスト(キーなし — 課金は発生しません)
curl -i "https://api.kakerapetit.dev/v2/companies/jp/7203"
レスポンス — 402 + 支払いチャレンジ
HTTP/2 402
content-type: application/json
payment-required: eyJ4NDAyVmVyc2lvbiI6MiwiYWNjZXB0cyI6W3sic2NoZW1lIjoiZXhhY3QiLC4uLg==
{"error":"payment_required","message":"This endpoint is paid via the x402 protocol. ..."}PAYMENT-REQUIRED を base64 デコード(抜粋)
{
"x402Version": 2,
"accepts": [
{
"scheme": "exact",
"network": "base",
"amount": "5000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x...(seller wallet)",
"resource": "https://api.kakerapetit.dev/v2/companies/jp/7203",
"description": "Company profile and latest fundamentals for a Japanese listed company in an EDGAR-style unified schema."
}
],
"extensions": {
"bazaar": "...(input example + JSON schema + output example)"
}
}amount はトークンの最小単位です — USDC は小数 6 桁なので 5000 = $0.005。この額の USDC 送金許可(EIP-3009)に署名し、署名済みペイロードを X-PAYMENT ヘッダーに載せて同じリクエストを再送すると、オンチェーン決済の結果が PAYMENT-RESPONSE ヘッダー付きで返ります。クライアントライブラリはこの一連を自動化します:
クライアントライブラリ
支払い可能なウォレットで fetch をラップすると、キーなしの呼び出しが可能になります — ラッパーが 402 を捕捉し、署名・再送・決済確認まで行います:
npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.WALLET_KEY); // holds USDC on Base
const client = new x402Client().register("eip155:8453", new ExactEvmScheme(account));
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://api.kakerapetit.dev/v2/companies/jp/7203");
console.log(await res.json()); // paid, settled, doneリクエスト単位の価格
エンドポイントごと・リクエストごとに課金されます。402 チャレンジが提示する価格は、常にこの表と同じです。
| エンドポイント | 価格 / コール |
|---|---|
| GET /v2/companies/:market/:code | $0.005 |
| GET /v2/companies/:market/:code/financials | $0.01 |
| GET /v2/companies/:market/:code/governance | $0.01 |
| GET /v2/screener | $0.02 |
| GET /v2/rankings | $0.01 |
| GET /v2/calendar | $0.002 |
MCP で使う場合
注意事項
- 支払いは Base メインネット上の本物の USDC(
eip155:8453)で、Coinbase facilitator を通じて決済されます。テストネットの支払いは受け付けません。 - 価格は上記のとおりエンドポイントごと・リクエストごとです — 最低額もサブスクもありません。キーなしのリクエスト自体には課金されず、署名済み支払いを再送するまで何も決済されません。
- 同じルートは
X-API-Keyのサブスク(無料・定額)でも呼べます。x402 と API キーは、同じエンドポイントに対する 2 通りの利用方法です。詳しくは料金セクションへ。 - Bazaar に掲載中の
/v1エンドポイントも、掲載価格で x402 チャレンジに応答します。