x402 — HTTP決済プロトコル
x402とは?
x402は、HTTP 402「Payment Required」ステータスコードを実際の決済プロトコルに変えるものです。エージェントが有料エンドポイントにアクセスすると、サーバーは構造化された決済指示を含む Payment-Required ヘッダー付きの402レスポンスを返します。エージェント(またはそのウォレット)はヘッダーを検査し、価格が許容範囲かを判断し、オンチェーンで支払い、レシートを再試行に添付してレスポンスを受け取ります。
概念的には、x402は1996年以来HTTP仕様で使われずに残っていたHTTP 402ステータスコードをついに完成させます — 仕様はこのコードを「Payment Required」のために予約していましたが、クライアントがどのように支払うべきかは指定していませんでした。x402はその仕組みを規定します:Base上のUSDC、署名された支払い意図、ファシリテーターを介した決済、そしてエージェントが呼び出す前に有料エンドポイントを見つけられる発見フォーマットです。
なぜx402が重要か
従来のAPI収益化は人間向けに作られています:サインアップ、APIキーの生成、クレジットカードの管理、月次請求書の受領。すべてのステップにUI、アカウント、APIプロバイダーと開発者の間のアウトオブバンドの関係が必要です。
自律エージェントにはそれらがありません。有料APIを初めて呼び出すエージェントは以下が必要です:
- コミットする前に価格を発見する
- 人間の承認なしにプログラム的に支払う
- 数日ではなく数秒でトランザクションを決済する
- APIプロバイダーが検証できるレシートを受け取る
x402は単一の仕組みで4つすべてに対処します。価格は402ヘッダーにあります。支払いはBase上の署名済みトランザクションです。決済はサブセカンドです。レシートはオンチェーンの確認です。
これによりx402はエージェントウェブの基礎となる決済プリミティブになります — 商用ウェブにとってのTLS、または委任認可にとってのOAuthに類似しています:以前は人間が仲介していたものを、機械がエンドツーエンドで交渉できるものに変えるプロトコルです。
仕組み
- エージェントが有料エンドポイントにリクエストを送信
- サーバーがbase64エンコードされた
Payment-Requiredヘッダー付きでHTTP 402を返却 - ヘッダーには金額、資産(USDC)、ネットワーク(Base)、受取ウォレット、ファシリテーターが含まれる
- エージェントがファシリテーター(例:Coinbase)経由で支払う
- エージェントがレシートを含む
Paymentヘッダー付きでリクエストを再試行 - サーバーがファシリテーター経由で支払いを検証し、レスポンスを提供
全体のフローはエンドツーエンドで数秒です。APIキーなし。サブスクリプションなし。人間がループにいない。
x402 vs 従来のAPI収益化
| 観点 | APIキー + サブスクリプション | x402 |
|---|---|---|
| サインアップ | アカウント作成が必要 | なし |
| 認証 | アカウントごとのAPIキー | リクエストごとの支払い |
| 課金モデル | 月次サブスクリプション | リクエスト単位の従量課金 |
| 発見 | アウトオブバンド(ドキュメント、営業) | プロトコル内(402ヘッダー) |
| 決済 | 請求サイクル(約30日) | サブセカンド(オンチェーン) |
| 失敗モード | クォータ超過 → 429 | 支払い不足 → 402 |
| エージェント互換性 | 困難(アカウント管理) | ネイティブ |
| 地理的制約 | 一般的(Stripeの制限) | 最小限(オンチェーン) |
重要な転換:x402は価格をプロトコル自体に組み込み、どのエージェントでも読み取れるようにします。APIキーでは、価格は人間同士で交渉された契約の中だけに存在します。x402では、価格はステータスコードと同じようにHTTPレスポンスに含まれます — 紙の事務処理ではなく、ファーストクラスのトランスポートメタデータです。
主要概念
- ファシリテーター:支払いを検証し決済するサービス。Base mainnetでCoinbaseのファシリテーターを使うにはx402.jsonに
"facilitator": "coinbase"を設定します。 - Envelope v2:現在のヘッダーフォーマット。構造化されたサービスカタログ、Bazaar発見、より豊富な決済オプションを追加します。常にv2を使用してください。
- ネットワーク:支払いはBase(
eip155:8453)でUSDCを使って行われます。BaseのUSDCコントラクトは0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913です。 - リクエスト単位の価格設定:各API呼び出しに独自の価格 — サブスクリプションなし、階層プランなし、APIキーなし。
- 発見可能なサービス:x402 Bazaarに表示するには
"discoverable": trueでサービスをマークします — エージェントが閲覧する有料エンドポイントのカタログです。
x402を使っているのは誰か
x402エコシステムは2つのアンカーを中心に形成されています:
- Coinbase Developer Platform — プロトコルの発案者。TypeScript、Go、Pythonの公式SDKを提供し、Base mainnetでカノニカルなファシリテーターを運営しています。
- Tempo MPP — ParadigmとStripeが支援する決済プロキシ。Tempoは
*.mpp.tempo.xyzプロキシを運営し、ネイティブにx402を実装していないサイトのためにx402と従来の決済レール間を変換します。
これらのアンカー以外にも、個別のAPIプロバイダー、エージェントランタイム、MCPサーバーオペレーターが、有料MCPツール、計測データAPI、AI推論エンドポイント、エージェントマーケットプレイスのリクエスト単位課金のためにx402を統合しています。
x402をサービスに追加する方法
1. SDKをインストール
npm install @coinbase/x402-express
2. Expressアプリにミドルウェアを追加
import { paymentMiddleware } from '@coinbase/x402-express';
app.use('/api/paid-endpoint', paymentMiddleware({
payTo: '0xYourWalletAddress',
amount: '100000', // 0.10 USDC(最小単位)
network: 'base',
facilitator: 'coinbase',
}));
3. 発見ファイルを公開
エージェントが有料エンドポイントを見つけられるよう /.well-known/x402.json を提供します:
{
"x402Version": 2,
"name": "あなたのサービス",
"network": "base",
"facilitator": "coinbase",
"payTo": "0xYourWalletAddress",
"services": [{
"method": "POST",
"path": "/api/paid-endpoint",
"amount": "100000",
"discoverable": true
}]
}
4. フローをテスト
curl -i https://your-domain.com/api/paid-endpoint
# 期待: HTTP/1.1 402 Payment Required
# 期待: Payment-Required: <base64エンコードされた決済指示>
Payment-Required ヘッダー(base64 → JSON)をデコードし、金額、資産、受取人、ファシリテーターがミドルウェアの設定と一致することを確認します。
よくあるエラーとデバッグ
- Payment-Requiredヘッダーなしの402:ミドルウェアが設定されていません。
payToとamountが設定されていることを確認してください。 - Paymentヘッダーが拒否された:レシートが間違った金額、間違った資産、または期限切れです。ほとんどのファシリテーターは数分以上前のレシートを拒否します。
- ウォレットアドレスの不一致:ミドルウェアの
payToがレシートの受取人と一致しません。完全に一致する必要があります。 - ネットワークの不一致:レシートが宣言されたものと異なるチェーン上にあります。ミドルウェアとx402.jsonの両方で
networkがbaseであることを確認してください。 - ファシリテーターに到達不能:ファシリテーターサービスがダウンしています。フォールバックファシリテーターを使うか、障害時はフェイルオープンします。
AgentGradeのスキャナーはこれらを直接プローブします — そのx402チェックはライブの402レスポンスが正しくパースされ、発見ファイルがエンドポイントが実際に返すものと一致することを検証します。
よくある質問
x402はブロックチェーンプロトコルですか、HTTPプロトコルですか?
両方です。トランスポートはHTTPです(構造化ヘッダー付きの402ステータス)。決済はオンチェーンです(Base上のUSDC)。x402は橋渡しです — HTTPサーバーとHTTPクライアントがブロックチェーンで決済される支払いを交渉できるようにするプロトコルです。
x402支払いを受け入れるには暗号ウォレットが必要ですか?
はい。USDCを受け取るためにBaseウォレットが必要です。CoinbaseのCDPは暗号にネイティブでないチームでも管理可能にします — API経由でカストディされたウォレットをプロビジョニングでき、鍵に触れる必要はありません。
x402とStripeの違いは何ですか?
Stripeは支配的な従来のレールです:アカウントごとのAPIキー、月次サブスクリプション、人間の購入者で訓練された不正検出。x402はリクエスト単位、エージェントネイティブ、オンチェーン決済です。これらは補完的です — Stripeは人間のチェックアウト用、x402はエージェントの計測アクセス用。Tempo MPPは両方を望むサイトのために間を橋渡しします。
x402は本番環境で使用できますか?
はい。x402 v2はTypeScript、Go、Pythonの公式SDKでCoinbaseによってサポートされています。カノニカルなファシリテーターは本番環境で動作しており、有料サービスのエコシステムは成長しています。
エージェントはAPIプロバイダーだけでなく、互いにx402で支払えますか?
はい。x402は「サーバー」が人間が運営するAPIか、エージェントか、MCPツールかを気にしません。HTTPレスポンダーは402を返すことができ、HTTPリクエスターは支払うことができます。エージェント間の計測作業は最も活発なユースケースの1つです。
なぜETHではなくUSDCですか?
安定しているからです。価格が予測可能です。ほとんどのAPIプロバイダーはドルで価格設定し、決済にはドル安定資産を望みます;ボラタイルな資産は会計上の摩擦を生み、リクエスト単位モデルを台無しにします。
エージェントに資金がない場合はどうなりますか?
ウォレットが資金不足を返し、呼び出しは失敗します。プロトコル自体には再試行-クレジット購入のフローはありません — 資金調達はウォレットの責任であり、APIの責任ではありません。
x402エンドポイントはどれくらい発見可能ですか?
x402.jsonで "discoverable": true とマークされたエンドポイントは、x402 Bazaar — 有料サービスの公開カタログに表示されます。エージェントは開発者がnpmを閲覧するのと同じようにBazaarを閲覧します。
仕様の成熟度
本番環境対応。 x402 v2は現在のenvelopeで、TypeScript、Go、Pythonの公式SDKでCoinbaseによってサポートされています。プロトコルは安定しており、カノニカルなファシリテーターは本番環境で動作し、エコシステムはMCPツールプロバイダー、データAPI、エージェントマーケットプレイス全体に広がっています。
さらに学ぶ
- x402.org — プロトコル仕様
- Coinbase x402ドキュメント — SDKと統合ガイド
- x402 npmパッケージ — Expressミドルウェア
- エージェント準備度 — x402が広範なエージェント準備度の風景にどう収まるか