x402: cách AI trả tiền cho API mà không cần tài khoản

Mọi API trên internet đều được bán thông qua một biểu mẫu.

Bạn vào trang bảng giá, gõ email, xác nhận từ hộp thư, dán thẻ, sao chép khóa và cất nó vào một biến môi trường. Mất bốn phút và mọi thứ chạy tốt — bởi vì bạn là con người, mà con người thì có hộp thư, có thẻ và có kiên nhẫn.

Giờ hãy hình dung một AI agent đang ở giữa một vòng lặp nghiên cứu. Nó cần một trang web chuyển thành Markdown, ngay lúc này, để hoàn tất nhiệm vụ được giao. Nó không nhận được email xác nhận. Nó không có thẻ. Nó không thể chờ một con người thức dậy rồi dán khóa cho nó.

Thế là nó làm điều duy nhất còn lại: bỏ cuộc và dùng thứ khác.

Đó chính là khoảng trống mà x402 lấp đầy — và từ hôm nay, API của Minibase đã trả lời được nó trên môi trường production.

HTTP đã tính đến chuyện này từ năm 1997

Mã trạng thái 402 Payment Required đã nằm trong đặc tả HTTP ngay từ đầu, kèm ghi chú “dành riêng cho sử dụng trong tương lai”. Suốt gần ba mươi năm, nó là câu đùa của RFC: mã mà không ai triển khai được, vì web không có cách nào chuyển những khoản tiền nhỏ ngay bên trong một request.

x402 là giao thức cuối cùng đã dùng đến nó. Toàn bộ ý tưởng gói trong ba bước:

  1. Một client gọi endpoint của bạn không kèm bất kỳ thông tin xác thực nào.
  2. Thay vì 401 Unauthorized, máy chủ trả về 402 Payment Required và đính kèm điều khoản thanh toán mà máy đọc được: bao nhiêu, bằng tài sản gì, trên mạng nào, tới địa chỉ nào.
  3. Client trả tiền rồi lặp lại request kèm bằng chứng thanh toán. Máy chủ xác minh, quyết toán và trả kết quả.

Không tài khoản. Không khóa. Không bảng điều khiển. Toàn bộ cuộc thương lượng diễn ra trong hai lượt HTTP, ở định dạng mà một chương trình khác đọc được.

Trông nó thế nào trên một endpoint thật

Hãy gọi endpoint chuyển đổi của chúng tôi mà không kèm gì cả:

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

Bạn nhận về 402, và các điều khoản quay lại dưới dạng base64 trong header payment-required:

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

Mọi thứ một client tự hành cần đều nằm ở đó. network là định danh CAIP-2eip155:8453 là Base mainnet. asset là hợp đồng USDC. amount tính theo đơn vị nguyên tử: USDC có sáu chữ số thập phân, nên 10000 là một xu. payTo là nơi tiền chảy về.

Client ký một giao dịch chuyển USDC, lặp lại request kèm thanh toán, và nhận về Markdown của mình. Mức độ can thiệp của con người: bằng không.

Phần không ai nhắc tới: bạn không cần nắm giữ crypto

Phản bác hiển nhiên với mọi lời mời “hãy nhận stablecoin” là bây giờ bạn phải vận hành một ví. Khóa riêng tư. Lưu ký. Một số dư tính bằng thứ mà kế toán của bạn chưa từng thấy, định giá theo tỷ giá đã nhảy trong lúc bạn ngủ.

Chúng tôi không làm bất kỳ điều nào trong số đó, và bạn cũng không cần. Địa chỉ nhận tiền trong payload phía trên do Stripe phát hành. Thanh toán được quyết toán on-chain về địa chỉ đó, Stripe ghi nhận từng khoản như một PaymentIntent bình thường và chi trả bằng euro theo lịch thông thường.

Hệ quả thực tế là tiền hiện ra trong đúng bảng điều khiển với mọi khoản thanh toán bằng thẻ, trong cùng đợt chi trả, trong cùng sổ sách. Không có ví nào phải bảo vệ, không phải định giá ngoại tệ theo từng biên lai, không có sổ song song nào phải đối chiếu cuối năm. Phần stablecoin là thật, mà đồng thời hoàn toàn vô hình từ phía kế toán.

Hai thứ đã ngốn thời gian của chúng tôi

Nếu bạn tự triển khai, đây là hai cái bẫy chúng tôi đã trả giá.

Bắt tay với facilitator không phải tùy chọn. Resource server buộc phải hỏi facilitator xem nó thực sự quyết toán những cặp scheme/network nào, trước khi có thể báo giá bất cứ thứ gì. Bỏ qua bước đó thì đúng từng lời gọi một sẽ chết với Facilitator does not support exact on eip155:8453 — một thông báo trông như lỗi cấu hình, nhưng thực chất là một lượt gọi mạng còn thiếu. Trên mainnet, facilitator đó là của Coinbase; bản công khai dành cho testnet không quyết toán tiền thật.

Định giá dưới một xu phá sổ sách của bạn trong im lặng. Chi phí của chúng tôi khoảng 0,002 $ mỗi trang, nên đặt giá cửa x402 ở 0,002 $ trông có vẻ hiển nhiên. Không phải vậy: PaymentIntent được tính bằng số xu nguyên, nên bất cứ mức nào dưới một xu sẽ được quyết toán on-chain rồi sau đó không thể ghi nhận được nữa. Tiền về mà không vào sổ nào cả. Vì thế cửa không khóa của chúng tôi có giá 0,01 $ mỗi lời gọi — gấp năm lần đơn giá theo khối lượng, mức mà thanh toán theo lượt gọi, không tài khoản, không cam kết, gánh được thoải mái.

Có nên thêm không?

Hãy thành thật về quy mô: x402 sẽ không thay thế doanh thu thuê bao của bạn trong quý này. Thanh toán do agent khởi tạo còn rất sớm, công cụ phía client còn non, và phần lớn khách hàng của bạn vẫn là con người có thẻ.

Nhưng sự bất đối xứng thì khác thường. Dựng cái cửa này tốn của chúng tôi vài trăm dòng, và nó chỉ kích hoạt với những lời gọi không hề có thông tin xác thực — mọi người đang giữ khóa đều rơi thẳng vào con đường họ vẫn có, cùng hạn mức, cùng gói cước. Không thứ gì bạn đang bán bị đặt vào rủi ro.

Còn kiểu hỏng của việc không có nó thì vô hình. Một lời gọi không khóa đâm vào 401 chẳng để lại dấu vết: không đăng ký, không phiếu hỗ trợ, không một dòng nào trong số liệu. Bạn sẽ không bao giờ biết nó từng ghé qua. Giờ chúng tôi đo đúng điều đó — mọi lời gọi không kèm xác thực đều được ghi log, kèm thông tin liệu bên gọi đã nói được giao thức hay chưa — bởi “có ai đang gõ cửa không?” là câu hỏi duy nhất quyết định tất cả những thứ này có đáng làm hay không.

Nếu các agent sẽ mua sắm trên web mở, chúng cần một cách trả tiền không đi qua biểu mẫu đăng ký. Cách đó đã tồn tại, nằm im trong đặc tả HTTP từ năm 1997, và đấu nối xong trong một buổi chiều.


Thử ngay: gọi POST https://api.minibase.md/v1/convert không kèm xác thực và đọc header payment-required. Thích dùng khóa hơn? Gói miễn phí cho 1.000 trang mỗi tháng, không cần thẻ. Đặc tả đầy đủ cho agent: minibase.md/api.md.

Continue reading

Sẵn sàng lưu thông minh hơn chưa?

Chuyển đổi bất kỳ trang web nào thành Markdown chỉ với một cú nhấp.

Thêm vào Chrome