x402: jak agent AI płaci za API bez zakładania konta

Każde API w internecie sprzedaje się przez formularz.

Wchodzisz na stronę z cennikiem, wpisujesz e-mail, potwierdzasz go ze skrzynki, wklejasz kartę, kopiujesz klucz i chowasz go do zmiennej środowiskowej. Cztery minuty i działa świetnie — bo jesteś człowiekiem, a ludzie mają skrzynkę pocztową, kartę i cierpliwość.

A teraz wyobraź sobie agenta AI w połowie pętli badawczej. Potrzebuje jednej strony przekonwertowanej na Markdown, natychmiast, żeby dokończyć powierzone mu zadanie. Nie odbierze maila potwierdzającego. Nie ma karty. Nie może czekać, aż człowiek się obudzi i wklei mu klucz.

Więc robi jedyne, co mu zostaje: rezygnuje i używa czegoś innego.

Dokładnie tę lukę zamyka x402 — a od dziś API Minibase odpowiada na nią produkcyjnie.

HTTP miał na to plan już w 1997 roku

Kod statusu 402 Payment Required jest w specyfikacji HTTP od samego początku, z adnotacją „zarezerwowany do przyszłego użytku”. Przez blisko trzydzieści lat pozostawał żartem RFC: kodem, którego nikt nie potrafił wdrożyć, bo sieć nie miała sposobu na przesyłanie drobnych kwot wewnątrz żądania.

x402 to protokół, który wreszcie go używa. Cała rzecz mieści się w trzech krokach:

  1. Klient woła twój endpoint bez żadnych danych uwierzytelniających.
  2. Zamiast 401 Unauthorized serwer odpowiada 402 Payment Required i dołącza warunki płatności czytelne dla maszyny: ile, w jakim aktywie, w jakiej sieci, na jaki adres.
  3. Klient płaci i powtarza żądanie z dowodem płatności. Serwer weryfikuje, rozlicza i zwraca odpowiedź.

Bez konta. Bez klucza. Bez panelu. Całe negocjowanie mieści się w dwóch wymianach HTTP, w formacie, który potrafi odczytać inny program.

Jak to wygląda na działającym endpoincie

Zawołaj nasz endpoint konwersji bez niczego:

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

Dostajesz 402, a warunki wracają zakodowane w base64 w nagłówku payment-required:

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

Jest tam wszystko, czego potrzebuje autonomiczny klient. network to identyfikator CAIP-2eip155:8453 to Base mainnet. asset to kontrakt USDC. amount podano w jednostkach atomowych: USDC ma sześć miejsc po przecinku, więc 10000 to jeden cent. payTo to adres, na który trafiają pieniądze.

Klient podpisuje przelew USDC, powtarza żądanie z dołączoną płatnością i odbiera swój Markdown. Udział człowieka: zerowy.

Część, o której nikt nie mówi: nie musisz trzymać kryptowalut

Oczywisty zarzut wobec każdego hasła „przyjmuj stablecoiny” brzmi: teraz prowadzisz portfel. Klucze prywatne. Przechowywanie. Saldo w czymś, czego twoja księgowa nigdy nie widziała, wycenione po kursie, który zmienił się w nocy.

Nic z tego nie robimy i ty też nie musisz. Adres depozytowy z powyższego payloadu został wystawiony przez Stripe. Płatności rozliczają się on-chain na ten adres, Stripe zapisuje każdą z nich jako zwykły PaymentIntent i wypłaca w euro w normalnym cyklu.

Praktyczna konsekwencja: pieniądze pojawiają się w tym samym panelu co każda płatność kartą, w tej samej wypłacie, w tych samych księgach. Żadnego portfela do zabezpieczenia, żadnej wyceny waluty przy każdym potwierdzeniu, żadnej równoległej ewidencji do uzgodnienia na koniec roku. Część stablecoinowa jest jak najbardziej realna — i zarazem zupełnie niewidoczna od strony księgowej.

Dwie rzeczy, które kosztowały nas czas

Jeśli wdrażasz to samodzielnie, oto dwie pułapki, za które zapłaciliśmy.

Handshake z facilitatorem nie jest opcjonalny. Serwer zasobów musi zapytać facilitatora, jakie pary schemat/sieć faktycznie rozlicza, zanim w ogóle poda cenę. Pomiń ten krok, a dosłownie każde wywołanie umrze na Facilitator does not support exact on eip155:8453 — komunikacie, który wygląda jak błąd konfiguracji, a jest brakującym zapytaniem sieciowym. W mainnecie tym facilitatorem jest ten od Coinbase; publiczny testnetowy nie rozlicza prawdziwych pieniędzy.

Cena poniżej centa po cichu psuje księgowość. Nasz koszt to około 0,002 $ za stronę, więc wycena drzwi x402 na 0,002 $ wydawała się oczywista. Nie jest: PaymentIntenty są wyrażone w pełnych centach, więc wszystko poniżej centa rozlicza się on-chain, a potem nie da się tego w ogóle zaksięgować. Pieniądze przychodzą i nie trafiają do żadnej księgi. Dlatego drzwi bez klucza kosztują u nas 0,01 $ za wywołanie — pięciokrotność naszej stawki wolumenowej, co płatność za wywołanie bez konta i bez zobowiązania spokojnie udźwignie.

Czy warto to dodać?

Bądźmy szczerzy co do skali: x402 nie zastąpi twoich przychodów abonamentowych w tym kwartale. Płatności inicjowane przez agentów są wczesne, narzędzia po stronie klienta młode, a większość twoich klientów to wciąż ludzie z kartą.

Ale asymetria jest nietypowa. Zbudowanie drzwi kosztowało nas kilkaset linii i uruchamiają się wyłącznie dla wywołujących bez żadnych danych uwierzytelniających — każdy posiadacz klucza spada prosto na ścieżkę, którą miał wcześniej, z tym samym limitem i tym samym planem. Nic z tego, co już sprzedajesz, nie jest zagrożone.

A tryb awarii braku tych drzwi jest niewidoczny. Wywołujący bez klucza, który dostaje 401, nie zostawia śladu: żadnej rejestracji, żadnego zgłoszenia, ani jednej linijki w statystykach. Nigdy się nie dowiesz, że tam był. Teraz mierzymy to celowo — każde wywołanie bez poświadczeń jest logowane wraz z informacją, czy wywołujący już mówi w tym protokole — bo „czy ktokolwiek puka?” to jedyne pytanie, które rozstrzyga, czy to wszystko miało sens.

Jeśli agenci mają kupować rzeczy w otwartej sieci, potrzebują sposobu płacenia, który nie prowadzi przez formularz rejestracyjny. Ten sposób już istnieje, drzemie w specyfikacji HTTP od 1997 roku i podłącza się go w jedno popołudnie.


Wypróbuj: zawołaj POST https://api.minibase.md/v1/convert bez poświadczeń i odczytaj nagłówek payment-required. Wolisz klucz? Darmowy plan to 1000 stron miesięcznie, bez karty. Pełna specyfikacja dla agentów: minibase.md/api.md.

Continue reading

Gotowy, aby zapisywać mądrzej?

Konwertuj dowolną stronę internetową na Markdown jednym kliknięciem.

Dodaj do Chrome