POST /api/v1/invoices → QR (EIP-681/Solana Pay) → worker 15sCredits
GET /api/v1/credits · poll 15s · worker credits on confirmedPricing: seedinfer/nemotron-lightning-1m — $0.02 / 1M input · $0.05 / 1M output · 1M ctx · 2M KV · cache 60s free / 5min max. Future Stripe Checkout at /billing/checkout.
Crypto payments
live · 7 chainsPay-as-you-go $0.02/1M input · $0.05/1M output · EVM + Solana · single watch-only wallet per chain
GET /api/v1/billing or /api/v1/credits. Worker updates credits atomically on confirmation.amount_usd_cents: 1000 (default 1000 = $10) · credits credited after confirmations.
Dynamic via listAllowedSymbols / isTokenAllowed from lib/payments/tokens.ts · Default USDC where available → currently USDC
POST /api/v1/invoices {chain, token, amount_usd_cents} with JWT from cookie (seedinfer_session via document.cookie + Authorization: Bearer) — unauth fallback tries without JWT.
$0.00 mock) requires live fetch from GET /api/v1/credits or /api/v1/billing with valid JWT. After invoice confirmed, worker atomically credits balance_usd_cents. Until wired, shows placeholder.7 chains via lib/payments/chains.ts CHAIN_CONFIG · tokens via lib/payments/tokens.ts · QR via lib/payments/qr.ts (EIP-681 + Solana Pay) · Worker verifies every 15s with tolerance 50 BPS · TTL 30min.
POST /v1/billing → credits.Stripe — Coming soon
card → credits → metered
Stripe publishable key: pk_test_… (placeholder)