Skip to main content

Secure x402 client SDK with agentic payments for buyers and sellers

Project description

x402-secure

Open-source x402 client SDKs for buyers and sellers that integrate with a unified gateway for risk session/trace and a seller proxy for verify/settle.

  • Buyer SDK: create risk session/trace via AGENT_GATEWAY_URL, build X-PAYMENT-SECURE from OpenTelemetry context.
  • Seller SDK: call proxy /x402/verify and /x402/settle with a simple verify_then_settle(...) wrapper.

Fail-fast principles:

  • Non-200 responses raise immediately (HTTPStatusError).
  • Invalid or missing traceparent context raises.
  • Header size limit enforced (X-PAYMENT-SECURE ≤ 4096 bytes).

Install

pip install x402-secure

Quickstart

import os, asyncio
from x402_secure_client import BuyerConfig, BuyerClient, RiskClient
from x402_secure_client import build_payment_secure_header, start_client_span

async def main():
    buyer = BuyerClient(BuyerConfig(
        seller_base_url=os.getenv("SELLER_BASE_URL", "http://localhost:8010"),
        agent_gateway_url=os.getenv("AGENT_GATEWAY_URL", "http://localhost:8000"),
        network=os.getenv("NETWORK", "base-sepolia"),
        buyer_private_key=os.getenv("BUYER_PRIVATE_KEY"),
    ))

    # Create risk session + trace
    rc = RiskClient(os.getenv("AGENT_GATEWAY_URL", "http://localhost:8000"))
    # agent_did: currently wallet address, future: EIP-8004 DID (did:eip8004:chain:contract:tokenId)
    sid = (await rc.create_session(agent_did=buyer.address, app_id=None, device={"ua": "oss-example"}))['sid']
    tid = (await rc.create_trace(sid=sid, agent_trace={"task": "buy", "parameters": {"symbol": "BTC/USD"}}))['tid']

    # Build secure header from OTEL context
    with start_client_span("buyer.payment"):
        xps = build_payment_secure_header(agent_trace_context={"tid": tid})
        res = await buyer.execute_paid_request(
            endpoint="/api/market-data",
            task="Buy BTC price",
            params={"symbol": "BTC/USD"},
            risk_sid=sid,
            extra_headers=xps,
        )
    print(res)

asyncio.run(main())

See examples/ for runnable scripts.

License

Apache-2.0

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_secure-0.1.2.tar.gz (161.4 kB view details)

Uploaded Source

Built Distribution

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

x402_secure-0.1.2-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file x402_secure-0.1.2.tar.gz.

File metadata

  • Download URL: x402_secure-0.1.2.tar.gz
  • Upload date:
  • Size: 161.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.9

File hashes

Hashes for x402_secure-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3b9f7b4303c4829c0323ee7f4f2866cb6459b0e9275971085ee3ef2afe690c5a
MD5 da17c7dadeaf08daad79a556f358ece3
BLAKE2b-256 6a7e0c9911693a109632d38cfc9e43329c37acc46dea5cfaf8f8aca2d0f54e32

See more details on using hashes here.

File details

Details for the file x402_secure-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: x402_secure-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.9

File hashes

Hashes for x402_secure-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cf3ebd4b90ab89c06401311e2803b638432d80e2ac541f1f76a0088d5c671fa9
MD5 498949def5a3a74c5231ded28cb28b60
BLAKE2b-256 53e4c629d282c3420228e9fac476835593e69ce062294317c19f385a998bb656

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