Skip to main content

Pay for x402 APIs with 3 lines of Python — no wallet needed

Project description

x402-pay

Call any x402 API with one line of Python. No wallet needed.

import x402_pay

resp = x402_pay.get("https://weather.hugen.tokyo/weather/current?city=Tokyo")
print(resp.json())

Auto-provisions an API key with $0.05 trial credit on first use. Routes requests through a broker that handles on-chain payment on your behalf.

Install

pip install x402-pay

Usage

One-liner (sync)

import x402_pay

resp = x402_pay.get("https://weather.hugen.tokyo/weather/current?city=Tokyo")
print(resp.json())

resp = x402_pay.post("https://defi.hugen.tokyo/defi/simulate", json={
    "chain_id": "1", "from": "0xABC...", "to": "0xDEF...",
})

Async client

from x402_pay import PayClient

async with PayClient() as client:
    resp = await client.get("https://weather.hugen.tokyo/weather/current?city=Tokyo")
    print(resp.json())
    print(f"Balance: ${await client.balance():.2f}")

Explicit API key

from x402_pay import PayClient

async with PayClient(api_key="gw_YOUR_KEY") as client:
    resp = await client.get("https://defi.hugen.tokyo/defi/token?chain=ethereum&address=0x...")

Wallet mode (power users)

pip install x402-pay[wallet]
from x402_pay import DirectClient

async with DirectClient(private_key="0x...") as client:
    resp = await client.get("https://weather.hugen.tokyo/weather/current?city=Tokyo")

API Key Lifecycle

  1. First call auto-creates a key with $0.05 trial balance (10 calls at $0.005)
  2. Key saved to ~/.x402-pay/config.json
  3. After trial: top up at the URL from await client.topup_url() ($1.00 x402 payment)
  4. Or bring your own key: PayClient(api_key="gw_...")

Configuration

Variable Default Description
X402_API_KEY auto-created API key for broker mode
X402_BROKER_URL https://discovery.hugen.tokyo Broker endpoint
X402_PAY_CONFIG_DIR ~/.x402-pay Config directory

API Reference

Module-level (sync)

  • x402_pay.get(url, **kwargs) -- sync GET through broker
  • x402_pay.post(url, **kwargs) -- sync POST through broker
  • x402_pay.balance(api_key="") -- check balance

PayClient (async)

  • PayClient(api_key="", broker_url="", timeout=60.0)
  • await client.get(url, **kwargs) -- GET through broker
  • await client.post(url, **kwargs) -- POST through broker
  • await client.balance() -- balance in USD
  • await client.topup_url() -- URL to top up key balance

DirectClient (async, requires [wallet])

  • DirectClient(private_key="0x...")
  • await client.get(url) / await client.post(url) -- direct x402 payment

Exceptions

  • PayError -- base exception
  • InsufficientBalance -- key balance too low (.balance, .needed, .topup_url)
  • NotInCatalog -- URL not in x402 catalog (.url)
  • BrokerError -- upstream call failed (.refunded)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

x402_pay-0.3.0.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

x402_pay-0.3.0-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file x402_pay-0.3.0.tar.gz.

File metadata

  • Download URL: x402_pay-0.3.0.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for x402_pay-0.3.0.tar.gz
Algorithm Hash digest
SHA256 b6eaf07cdbb38ef84d7912c5bc3045ff42110cac58075e78e24832ee00340d30
MD5 3ae0c74562a2c3e4d266c5122be7c076
BLAKE2b-256 6ab37f8cadc30e3cdd443fbe5f9da8fa8007c50b7dca9f3b02187cd928c8c9c5

See more details on using hashes here.

File details

Details for the file x402_pay-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: x402_pay-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for x402_pay-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 42f8e770c2139fa10f2c0c1f0bb25c57f7a5743273382431ee5258b7bbc378dc
MD5 3e365c9b9034fd599a070c188ef760c8
BLAKE2b-256 0b3ea5521331bd3e1cd6b3376a949be4a8a19aaa1edc1e189653533e0da41038

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page