메인 콘텐츠로 건너뛰기
ARouter는 HTTP 네이티브 결제를 위한 개방형 표준인 x402 결제 프로토콜을 지원합니다. 암호화폐 지갑을 가진 AI Agent는 계정 등록이나 Dashboard 로그인 없이 인증, 크레딧 결제, LLM 요청을 모두 실행할 수 있습니다.

세 가지 진입점

ARouter는 Agent가 시작할 수 있는 세 가지 방법을 제공합니다. 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/fetch, awal, 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아니오최대 출력 Token 수
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는 자금을 보유하지 않습니다.