x402: AI 에이전트가 계정 없이 API에 결제하는 법

인터넷의 모든 API는 양식을 통해 팔립니다.

요금제 페이지에 들어가 이메일을 입력하고, 받은편지함에서 확인하고, 카드를 붙여넣고, 키를 복사해 환경 변수에 넣습니다. 4분이면 끝나고 아무 문제 없이 동작합니다. 당신이 사람이기 때문입니다. 사람에게는 받은편지함이 있고, 카드가 있고, 기다릴 인내심이 있습니다.

이제 조사 루프 한가운데 있는 AI 에이전트를 떠올려 보세요. 맡은 작업을 끝내려면 지금 당장 웹페이지 하나를 Markdown으로 바꿔야 합니다. 확인 메일을 받을 수 없습니다. 카드도 없습니다. 사람이 깨어나 키를 붙여줄 때까지 기다릴 수도 없습니다.

그래서 에이전트는 남은 유일한 선택을 합니다. 포기하고 다른 서비스를 씁니다.

바로 그 틈을 x402가 메웁니다. 그리고 오늘부터 Minibase API가 프로덕션에서 그 요청에 응답합니다.

HTTP는 1997년에 이미 대비해 두었다

상태 코드 402 Payment Required는 처음부터 HTTP 명세에 있었고, “향후 사용을 위해 예약됨”이라고 적혀 있었습니다. 거의 30년 동안 그것은 RFC 속 농담이었습니다. 아무도 구현할 수 없는 코드였죠. 웹에는 요청 안에서 소액을 옮길 방법이 없었으니까요.

x402는 마침내 그 코드를 쓰는 프로토콜입니다. 구조는 세 단계로 끝납니다.

  1. 클라이언트가 자격 증명을 전혀 붙이지 않고 엔드포인트를 호출한다.
  2. 서버는 401 Unauthorized 대신 402 Payment Required를 응답하고, 기계가 읽을 수 있는 결제 조건을 붙인다. 얼마를, 어떤 자산으로, 어떤 네트워크에서, 어느 주소로.
  3. 클라이언트가 결제하고 결제 증명을 붙여 요청을 다시 보낸다. 서버는 검증하고 정산한 뒤 응답을 내준다.

계정도, 키도, 대시보드도 없습니다. 협상 전체가 HTTP 두 번의 왕복 안에서, 다른 프로그램이 읽을 수 있는 형식으로 끝납니다.

실제 엔드포인트에서의 모습

아무것도 붙이지 않고 변환 엔드포인트를 호출해 보세요.

curl -i -X POST https://api.minibase.md/v1/convert \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/article"}'

402가 돌아오고, 조건은 payment-required 헤더에 base64로 담겨 옵니다.

{
  "x402Version": 2,
  "accepts": [{
    "scheme": "exact",
    "network": "eip155:8453",
    "amount": "10000",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "payTo": "0xfb8157a583e3050440301f418f5e890190222a5c",
    "maxTimeoutSeconds": 300
  }]
}

자율 클라이언트에 필요한 것이 전부 들어 있습니다. networkCAIP-2 식별자로, eip155:8453은 Base 메인넷입니다. asset은 USDC 컨트랙트. amount는 최소 단위이며 USDC는 소수점 6자리이므로 10000은 1센트입니다. payTo는 돈이 들어갈 주소입니다.

클라이언트는 USDC 전송에 서명하고, 결제를 붙여 요청을 다시 보내고, Markdown을 받습니다. 사람의 개입은 0입니다.

아무도 말하지 않는 부분: 암호화폐를 보유할 필요가 없다

“스테이블코인을 받으세요”라는 제안에 대한 당연한 반론은, 이제 지갑을 운영해야 한다는 것입니다. 개인 키. 보관. 회계 담당자가 본 적 없는 단위의 잔액이, 자는 사이 움직인 환율로 평가되는 상황.

우리는 그중 어떤 것도 하지 않고, 당신도 할 필요가 없습니다. 위 페이로드의 입금 주소는 Stripe가 발급한 것입니다. 결제는 그 주소로 온체인 정산되고, Stripe가 건건이 일반 PaymentIntent로 기록하며, 평소 일정대로 유로로 지급합니다.

실무적으로는, 그 돈이 카드 결제와 똑같은 대시보드에, 똑같은 지급 건에, 똑같은 장부에 나타난다는 뜻입니다. 지켜야 할 지갑도, 영수증마다 하는 외화 평가도, 결산 때 맞춰야 할 별도 장부도 없습니다. 스테이블코인 부분은 분명히 실재하면서, 회계 쪽에서는 완전히 보이지 않습니다.

우리 시간을 잡아먹은 두 가지

직접 구현한다면, 우리가 수업료를 낸 함정 두 가지는 이렇습니다.

퍼실리테이터와의 핸드셰이크는 선택 사항이 아닙니다. 리소스 서버는 가격을 제시하기 전에, 퍼실리테이터가 실제로 어떤 스킴/네트워크 조합을 정산하는지 물어봐야 합니다. 이 단계를 건너뛰면 예외 없이 모든 호출이 Facilitator does not support exact on eip155:8453으로 죽습니다. 설정 오류처럼 보이지만, 실제로는 빠진 네트워크 왕복입니다. 메인넷에서 그 퍼실리테이터는 Coinbase의 것이고, 공개 테스트넷용은 진짜 돈을 정산하지 않습니다.

1센트 미만 가격은 회계를 조용히 망가뜨립니다. 우리 원가는 페이지당 약 0.002달러라 x402 출입구도 0.002달러로 잡는 게 당연해 보였습니다. 그렇지 않습니다. PaymentIntent는 정수 센트 단위라, 1센트 미만은 온체인 정산은 되지만 그 뒤로 아예 기록할 수 없습니다. 돈은 들어오는데 어느 장부에도 들어가지 않습니다. 그래서 키 없는 출입구는 호출당 0.01달러로 책정했습니다. 물량 요금의 다섯 배지만, 계정도 약정도 없는 건당 결제라면 충분히 감당되는 수준입니다.

도입할 만한가

규모에 대해서는 솔직해집시다. x402가 이번 분기에 구독 매출을 대체하지는 않습니다. 에이전트가 시작하는 결제는 아직 초기이고, 클라이언트 도구도 어리며, 고객 대부분은 여전히 카드를 가진 사람입니다.

그럼에도 이 비대칭성은 흔치 않습니다. 출입구를 만드는 데 수백 줄이 들었고, 자격 증명이 전혀 없는 호출에만 작동합니다. 기존 키 보유자는 원래 쓰던 경로로 그대로 흘러갑니다. 같은 할당량, 같은 요금제로요. 이미 팔고 있는 것 중 위험해지는 건 하나도 없습니다.

그리고 이것이 없을 때의 실패 방식은 눈에 보이지 않습니다. 키 없는 호출이 401에 부딪혀도 흔적이 남지 않습니다. 가입도, 문의도, 분석 화면의 한 줄도 없습니다. 다녀갔다는 사실조차 알 수 없습니다. 그래서 지금은 그것을 따로 계측합니다. 자격 증명 없는 호출을, 상대가 이미 프로토콜을 말할 줄 아는지까지 함께 기록합니다. “애초에 누가 문을 두드리기는 하는가?”가 이 모든 게 가치 있었는지를 가르는 유일한 질문이기 때문입니다.

에이전트가 열린 웹에서 물건을 사게 된다면, 가입 양식을 거치지 않는 결제 수단이 필요합니다. 그 수단은 이미 존재하고, 1997년부터 HTTP 명세 안에서 잠자고 있었으며, 연결하는 데는 하루 오후면 충분합니다.


해보기: 자격 증명 없이 POST https://api.minibase.md/v1/convert를 호출하고 payment-required 헤더를 읽어보세요. 키가 편하다면 무료 플랜은 월 1,000페이지, 카드 불필요입니다. 에이전트용 전체 명세: minibase.md/api.md.

Continue reading

더 스마트하게 저장할 준비가 되셨나요?

클릭 한 번으로 모든 웹페이지를 Markdown으로 변환하세요.

Chrome에 추가