#!/usr/bin/env python3 # Use ScanPay as an OpenAI-compatible, pay-per-call LLM gateway (x402, no API key). # pip install requests eth-account x402 import base64, json, os, requests from eth_account import Account from x402.http.x402_http_client_base import encode_payment_signature_header from x402.mechanisms.evm.exact.client import ExactEvmScheme from x402.schemas import PaymentPayload, PaymentRequirements BASE = "{base}" URL = BASE + "/v1/chat/completions" acct = Account.from_key(os.environ["PRIVATE_KEY"]) # any funded Base wallet body = {{"model": "deepseek-chat", "messages": [{{"role": "user", "content": "Say OK"}}], "max_tokens": 16}} r = requests.post(URL, json=body, timeout=60) if r.status_code == 402: quote = json.loads(base64.b64decode(r.headers["PAYMENT-REQUIRED"])) accept = next(a for a in quote["accepts"] if a["network"] == "eip155:8453") req = PaymentRequirements(scheme=accept["scheme"], network=accept["network"], asset=accept["asset"], amount=accept["amount"], pay_to=accept["payTo"], max_timeout_seconds=accept.get("maxTimeoutSeconds", 300), extra=accept.get("extra")) inner = ExactEvmScheme(acct).create_payment_payload(req) payload = PaymentPayload(x402_version=2, payload=inner, accepted=req) r = requests.post(URL, json=body, headers={{"PAYMENT-SIGNATURE": encode_payment_signature_header(payload)}}, timeout=60) print(r.status_code, r.json()) print("delivery receipt:", r.headers.get("X-Delivery-Receipt"))