Skip to main content

Python SDK for HTTPayer

Project description

HTTPayer – Python SDK

HTTPayer is a lightweight Python SDK for accessing APIs protected by 402 Payment Required responses using the emerging x402 protocol.

It integrates with the HTTPayer Router to automatically fulfill off-chain payments (e.g. USDC / stablecoins via EIP-3009), enabling pay-per-use APIs and metered endpoints.


Features

  • Auto-handles 402 payment flows through the hosted HTTPayer router
  • Supports response_mode="text" (default) or "json" for structured proxy results
  • Built-in polling for asynchronous payment completions (202 + webhook)
  • Optional dry-run simulation (simulate=True or simulate_invoice)
  • API key + router configuration via environment or arguments
  • Compatible with Base Sepolia, Avalanche Fuji, and other EVM testnets
  • Flask X402Gate decorator for securing your own 402-protected endpoints

Installation

pip install httpayer

or with demo dependencies (Flask, CCIP examples):

pip install httpayer[demo]

Environment Setup

Copy .env.sample.env and configure your API key and network:

HTTPAYER_API_KEY=your-api-key

For testing the X402Gate decorator or local demos:

NETWORK=base
FACILITATOR_URL=https://x402.org
RPC_GATEWAY=https://your-gateway.example
PAY_TO_ADDRESS=0xYourReceivingAddress

Usage

1. Programmatic Client

from httpayer import HTTPayerClient

client = HTTPayerClient(response_mode="json")

# auto-handles 402 Payment Required
resp = client.request("GET", "https://x402.org/protected")

print(resp.status_code)   # 200
print(resp.json())        # resource data

Manual Payment or Simulation

# simulate required payment (dry-run)
sim = client.simulate_invoice("GET", "https://x402.org/protected")

# pay actual invoice via router
paid = client.pay_invoice("GET", "https://x402.org/protected")

If the router returns 202 Accepted, the client will automatically poll the provided webhook_url until completion.


2. Flask Authorization – X402Gate

Protect your own Web2 endpoints with tokenized payment headers:

from httpayer.gate import X402Gate
from flask import Flask, jsonify, make_response

gate = X402Gate(
    pay_to="0xYourReceivingAddress",
    network="base-sepolia",
    asset_address="0xTokenAddress",
    max_amount=1000,
    asset_name="USD Coin",
    asset_version="2",
    facilitator_url="https://x402.org",
)

app = Flask(__name__)

@app.route("/weather")
@gate.gate
def weather():
    return make_response(jsonify({"weather": "sunny", "temp": 75}))

Each route can define its own X402Gate instance with unique token or chain parameters.


Examples

File Description
tests/test1.py Programmatic 402 requests using HTTPayerClient
tests/test2.py Flask Weather API protected with X402Gate
tests/test3.py Explicit simulate_invoice / pay_invoice usage
tests/test4.py Raw JSON return (response_mode='json')

Run with:

python tests/test1.py

Local endpoints cannot be paid through the hosted router — for local testing, use the Coinbase x402 SDKs.


Project Layout

httpayer/
├── client.py        # HTTPayerClient – main SDK client
├── gate.py          # X402Gate – Flask decorator & helpers
tests/
├── test1.py         # Programmatic example
├── test2.py         # Flask demo server
├── test3.py         # Explicit pay/simulate example
├── test4.py         # Raw JSON example
.env.sample          # Environment template

Author

HTTPayer Team


License

This SDK is proprietary and licensed under the HTTPayer SDK License.
Cloning, redistribution, or republishing is strictly prohibited.
See the LICENSE.md file for details.

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

httpayer-0.2.1.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

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

httpayer-0.2.1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file httpayer-0.2.1.tar.gz.

File metadata

  • Download URL: httpayer-0.2.1.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for httpayer-0.2.1.tar.gz
Algorithm Hash digest
SHA256 accc28dd792d67914ad85c8a959fe5267aaee9997ab10f0d2e0a4fe99039dbdc
MD5 fd2f4766dc1adde244b99c6a226d1ba4
BLAKE2b-256 fd30a79000e94406e3ddb0fd3e4833fa152781a6cdebb6a5620a1d02c53dd931

See more details on using hashes here.

File details

Details for the file httpayer-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: httpayer-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for httpayer-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 751112f637ee0d61b483019a587d99d3e5b435097ac7379b70b0f0a2f29b5e96
MD5 b147e9144acf328a7674ac1911ecdea0
BLAKE2b-256 3d1800acdc5a46b99fa95da113bdb48e46b93370445573fc9bdf09eb4fb560ec

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