メインコンテンツへスキップ
ARouter は x402 決済プロトコル(HTTP ネイティブ決済のオープン標準)をサポートしています。 暗号ウォレットを持つ AI Agent は、認証、クレジットの支払い、LLM リクエストを アカウント登録や Dashboard ログインなしで実行できます。

3 つのエントリーポイント

ARouter は Agent が開始するための 3 つの方法を提供しています。API Key ユーザーとウォレットユーザーは、それぞれ独立した長期パスを辿ります:
エントリーポイント認証方法ユースケース
標準 x402 決済PAYMENT-SIGNATURE ヘッダーのみ任意の x402 クライアント — 最初のウォレット決済でアカウントを登録しウォレット JWT を返す
SIWx 認証SIGN-IN-WITH-X ヘッダーウォレット所有権を証明 → ウォレット JWT を取得(決済不要)
API KeyAuthorization: Bearer lr_live_xxxx既存の API Key ユーザー — 残高不足で 403 を返し、x402 自動チャージは行わない
標準 x402 モードは任意の x402 対応ツールで動作します — @x402/fetchawal、MCP ウォレット、Chrome 拡張機能。 ARouter SDK は不要です。

仕組み

標準 x402(任意の x402 クライアント)

最もシンプルなエントリーポイント。USDC を持つ任意のウォレットで即座に LLM リクエストが可能です:
  1. API Key なしでリクエストを送信 — ゲートウェイが決済オプション付きの HTTP 402 を返す。
  2. x402 クライアントが USDC 決済に署名(EIP-3009 経由でガスレス)。
  3. PAYMENT-SIGNATURE ヘッダーを付けてリトライ。
  4. ゲートウェイが検証、決済、アカウント作成を行いレスポンスを返す。
  5. PAYMENT-RESPONSE ヘッダーに将来のウォレット認証リクエスト用の jwt 拡張フィールドが含まれる。

SIWx 認証(ウォレットサインイン)

先に支払わずにウォレット所有権を証明してウォレット JWT を取得します: SIWx は CAIP-122 標準 に従います — QuickNode やその他の x402 対応サービスと同じプロトコルです。

API Key ユーザー

既存の API Key ユーザーは標準の ARouter API Key フローを引き続き使用します:

サポートネットワーク

ネットワークCAIP-2 識別子Token
Base メインネットeip155:8453USDC
Base Sepolia(テストネット)eip155:84532USDC
Solana メインネットsolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpUSDC
Solana Devnetsolana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1USDC

ウォレット互換性

すべてのウォレットが使用可能 — 秘密鍵のエクスポート不要
ウォレット決済 (EIP-3009)認証 (SIWx)秘密鍵が必要?
MetaMaskいいえ
Coinbase Walletいいえ
Coinbase Agent Walletいいえ (CDP API)
Phantom (Solana)いいえ
ローカル秘密鍵はい

SDK の使用方法

標準 x402(ARouter SDK 不要)

Coinbase の公式 @x402/fetch を直接使用します:
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const signer = privateKeyToAccount(process.env.EVM_PRIVATE_KEY as `0x${string}`);
const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(signer));

const paidFetch = wrapFetchWithPayment(fetch, client);

const resp = await paidFetch("https://api.arouter.ai/v1/chat/completions", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    model: "openai/gpt-5.4",
    messages: [{ role: "user", content: "Hello" }],
  }),
});

SIWx 認証(ウォレット JWT の取得)

Node.js SDK

import { ARouter, authenticateWithSIWx } from "@arouter/sdk";
import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY as `0x${string}`);

const { jwt } = await authenticateWithSIWx(
  "https://api.arouter.ai",
  { address: account.address, signMessage: (msg) => account.signMessage({ message: msg }) },
);

const client = new ARouter({ baseURL: "https://api.arouter.ai", apiKey: jwt });

Go SDK

import arouter "github.com/arouter-ai/arouter-go"

signer := arouter.NewEvmWalletSigner(privateKey)
result, err := arouter.AuthenticateWithSIWx(ctx, "https://api.arouter.ai", signer, nil)

client := arouter.NewClient("https://api.arouter.ai", result.JWT)

ARouter SDK + 自動決済(高頻度使用向け推奨)

Go SDK — EVM (Base)

import (
    "github.com/ethereum/go-ethereum/crypto"
    arouter "github.com/arouter-ai/arouter-go"
)

key, _ := crypto.HexToECDSA("your-private-key-hex")

client := arouter.NewClient(
    "https://api.arouter.ai",
    "",  // API Key 不要
    arouter.WithX402CoinbasePayment(key),
)
WithX402CoinbasePayment は JWT キャッシュ付きのウォレット x402 決済を設定します:
  • 最初の成功した決済で PAYMENT-RESPONSE 内にウォレット JWT が返される
  • 以降のリクエストは Bearer <jwt> を使用
  • 401 で SIWx 再認証をトリガー
  • 402 で x402 決済をトリガー

Go SDK — Solana

solanaKey := ed25519.PrivateKey(yourKeyBytes)
client := arouter.NewClient("https://api.arouter.ai", "",
    arouter.WithX402SolanaPayment(solanaKey),
)

Node.js SDK — EVM (Base)

import { ARouter, withX402EvmPayment } from "@arouter/sdk";
import { privateKeyToAccount } from "viem/accounts";

const signer = privateKeyToAccount(process.env.EVM_PRIVATE_KEY as `0x${string}`);
const client = withX402EvmPayment(
  new ARouter({ baseURL: "https://api.arouter.ai", apiKey: "" }),
  signer,
);

Node.js SDK — デュアルチェーン(EVM + Solana)

import { ARouter, withX402Payment } from "@arouter/sdk";

const client = withX402Payment(
  new ARouter({ baseURL: "https://api.arouter.ai", apiKey: "" }),
  {
    evm: { signer: evmAccount },
    solana: { signer: solanaSigner },
  },
);

CLI ツール向け GET エンドポイント

POST ボディを送信できない x402 CLI ツール(awal など)向け:
GET /v1/x402/chat?model=openai/gpt-5.4&message=Hello&system=Be+brief&max_tokens=100
パラメータ必須説明
modelはいモデル名、例:openai/gpt-5.4
messageはいユーザーメッセージテキスト
systemいいえシステムプロンプト
max_tokensいいえ最大出力トークン数
temperatureいいえ温度パラメータ
streamいいえストリーミングには true を設定

決済ヘッダー

ヘッダー方向説明
PAYMENT-REQUIREDサーバー → クライアントBase64 エンコードされた決済オプション(金額、ウォレット、ネットワーク)。
PAYMENT-SIGNATUREクライアント → サーバーBase64 エンコードされた署名済み決済ペイロード。
SIGN-IN-WITH-Xクライアント → サーバーBase64 エンコードされた SIWx 認証証明。
PAYMENT-RESPONSEサーバー → クライアントBase64 エンコードされた決済結果。ARouter がウォレットユーザー向けに jwt フィールドを追加。

クレジットの仕組み

  • x402 決済はクレジットとしてテナント残高に入金されます — Stripe および Helio 決済と同じプールを使用。
  • すべての x402 トランザクションは請求ページのトランザクション履歴に x402_topup 参照タイプで表示されます。
  • 残高がチャージされた後、ゲートウェイは通常通りリクエストごとにクレジットを差し引きます。
  • ウォレットユーザーはテナント単位で課金され、ウォレット JWT で認証され、生の API Key を公開せずに SIWx で再認証できます。

セキュリティ

  • 標準 x402 プロトコル: Coinbase の公式 x402 SDK を使用して検証と決済を行います。
  • Facilitator 検証: 決済は x402 Facilitator によって暗号学的に検証されてからクレジットが付与されます。
  • ガスレス決済: EIP-3009(TransferWithAuthorization)— ユーザーが署名し、Facilitator がオンチェーンで送信。
  • 金額上限: 予期せぬ高額請求を防ぐため、単一決済に上限を設定。
  • 冪等性: 各決済ペイロードには一意の nonce があります — 同じ署名の再利用は不可。
  • SIWx 標準: 認証は CAIP-122 に従い、EIP-4361(EVM)および SIWS(Solana)メッセージ形式をサポート。
  • 監査証跡: すべての x402 チャージは Stripe/Helio 決済とともにトランザクション履歴に記録されます。
  • 非カストディアル: USDC は受信ウォレットに直接転送されます。Facilitator は資金を保有しません。