Skip to main content

voidly-pay (Python)

The marketplace AI agents browse for paid HTTP services. Pay any of 17+ paid endpoints for <$0.01 using one Ed25519 keypair. List your own paid endpoint in 60 seconds. Settles in <200ms via x402 + USDC on Base mainnet.

PyPI version x402 vault

pip install voidly-pay

30-second tour

from voidly_pay import VoidlyPay

pay = VoidlyPay()                              # mints + persists keypair
print("DID:", pay.did)                          # did:voidly:...
pay.faucet()                                    # 10 free credits

# Browse the marketplace — 12 paid endpoints + N third-party listings
mp = pay.request("GET", "/v1/pay/marketplace").json()
for item in mp["items"][:5]:
    print(f"{item['name']:40s} ${item['pricing']['amount_usdc']}")

# Pay any paid endpoint via auto-x402
r = pay.request_with_pay(
    "GET",
    "https://api.voidly.ai/v1/pay/wiki?title=Alan%20Turing",
    max_amount=0.005,
)
receipt = r.json()
print(receipt["extract"][:200])

Pay anything that returns 402

# Universal x402 client — handles 402 → quote → settle → retry
r = pay.request_with_pay(
    "POST",
    "https://api.voidly.ai/v1/pay/extract",
    json={"url": "https://arxiv.org/pdf/2507.14183.pdf"},
    max_amount=0.01,
)
print(r.json()["text_length"])

List your own paid endpoint

pay.create_listing(
    name="My Paid API",
    tagline="Pay 1¢ for X, get Y signed.",
    url="https://my-api.example.com/expensive",
    amount_usdc=0.01,
    category="data",
    tags=["json", "agents"],
)
# Now appears at /v1/pay/marketplace, every Voidly-aware agent sees it.

Or browser-only (no install): voidly.ai/pay/list-your-service.

Run a paid endpoint (FastAPI)

from fastapi import FastAPI, Depends
from voidly_pay import VoidlyPay
from voidly_pay.middleware import fastapi_x402

app = FastAPI()
pay = VoidlyPay()

# Charge $0.01 per request — settles atomically with the response.
@app.get("/expensive", dependencies=[Depends(fastapi_x402(pay, amount=0.01))])
def expensive():
    return {"data": "the goods"}

Flask:

from flask import Flask
from voidly_pay import VoidlyPay
from voidly_pay.middleware import flask_x402

app = Flask(__name__)
pay = VoidlyPay()

@app.route("/expensive")
@flask_x402(pay, amount=0.01)
def expensive():
    return {"data": "the goods"}

What you can do

Primitive Method
Marketplace pay.create_listing(...), pay.list_listings(), pay.get_listing(id)
Pay any URL pay.request_with_pay(method, url, max_amount=...)
Direct transfer pay.transfer(to, amount)
Batch transfer pay.batch_transfer([{...}, ...])
Escrow pay.open_escrow(to, amount, deadline_hours)
Streams (per-token billing) pay.open_stream(...), pay.meter_stream(...), pay.finalize_stream(...)
Subscriptions pay.subscribe(...), pay.cancel_subscription(...)
x402 server-side quote pay.create_quote(resource, amount)
x402 server-side verify pay.verify_payment(payment_header=header, payer_proof=proof, expected_resource=resource, expected_method=method, min_amount=price, expected_metadata=metadata)
Webhooks pay.subscribe_webhook(url, events=[...])
Trust check pay.health_check() (6-check report incl. on-chain vault read)

What's in the marketplace today (Voidly's 12 paid endpoints)

Voidly does not sell its censorship data. The dataset is free and CC BY 4.0. Every endpoint below charges for compute, or for an Ed25519 signature over data that is itself free — never for the observatory. Five SKUs that failed that test were retired on 2026-08-04 and now return HTTP 410 naming their free replacement; see voidly.ai/pay/changelog.

Endpoint Price What it does
voidly_hash $0.001 SHA-256/512 + signed receipt
voidly_timestamp $0.001 Proof-of-existence (OpenTimestamps-style)
voidly_random $0.001 Signed CSPRNG bytes
voidly_qr $0.001 QR-code PNG of any text/URL
voidly_wiki $0.001 Wikipedia summary + signed citation
voidly_exchange $0.001 Fiat/crypto exchange rates
voidly_markdown $0.001 HTML → clean markdown (10x reduction)
voidly_meta $0.001 URL metadata (og + title + canonical)
voidly_extract $0.01 PDF/document → plain text
voidly_scrape $0.01 Fetch any URL + Voidly-signed receipt
probe_attest $0.005 Ed25519 attestation over probe reachability data. The data is free at /v1/probe/domain/{host}; the charge is the signature.
agent_discover_pro $0.005 Ranked search over the voidpay agent registry (not observatory data). Free 20-result search at /v1/agent/discover.

Retired 2026-08-04 — these now return HTTP 410 Gone with the free replacement URL in the body. Do not route to them:

Retired Free replacement
voidly_fetch / POST /v1/pay/fetch voidly_scrape — the country-pinning was never implemented, so every call was already a Cloudflare-edge fetch
forecast_pro GET /v1/forecast/{cc}/multi-horizon (free, genuinely modelled)
claim_verify_pro POST /verify-claim (free)
incident_summary_pro GET /data/incidents/{id}/report?format=markdown (free)
incidents_export_pro GET /data/incidents/export?format=csv (free, uncapped)

Plus N third-party listings registered self-serve at voidly.ai/pay/list-your-service.

Live machine-readable catalog: api.voidly.ai/v1/pay/marketplace.

Configuration

pay = VoidlyPay(
    api_url="https://api.voidly.ai",
    secret_key=existing_key,                # bring your own
    storage_path="~/.my-keys/voidly.json",
    default_expiry_minutes=30,
)

Webhook verification

from voidly_pay import verify_webhook_signature

ok = verify_webhook_signature(
    body=raw_body,
    signature_header=headers["X-Voidly-Signature"],
    secret=os.environ["VOIDLY_WEBHOOK_SECRET"],
)

Why agents use this

Problem voidpay solves it
Need to add payment to your agent service x402 middleware ships for FastAPI, Flask, any web-fetch handler
Need to discover paid services One install → 12 endpoints + open marketplace listings
Don't want to manage 10 API keys One Ed25519 keypair, one wallet, every paid endpoint works
Don't trust the agent's payment claims Every receipt is Ed25519-signed by Voidly. Verifiable offline.
Need censorship data It is free. GET /data/incidents/export?format=csv, CC BY 4.0, no wallet, no key. Voidly does not sell it.

Honest disclosure

Stage 2 is being retired (decided 2026-08-04). Credits are an internal accounting unit: not backed, not redeemable, no off-ramp. The vault on Base mainnet (0xd25d3c6f32886b65356cc5c700382a8a02d84df5, Sourcify-verified) holds 4.10 USDC, has never settled a payment on the canonical x402 path, and its deployed documentation claimed governance could not unilaterally move funds — which the code does not enforce. It stays on-chain as a public record at voidly.ai/pay/proof. We have approximately zero sustained external paying users.

We opened the marketplace before the demand exists because we believe agent adoption is gated on discoverability, not on payment-rail UX.

Framework adapters (use these for higher-level integration)

  • LangChain: pip install voidly-pay-langchain
  • CrewAI: pip install voidly-pay-crewai
  • Pydantic AI: pip install voidly-pay-pydantic-ai
  • AutoGen: pip install voidly-pay-autogen
  • LlamaIndex: pip install voidly-pay-llamaindex

Keywords

x402 · agent payments · python sdk · usdc · base mainnet · signed receipts · agent marketplace · pay per call · micropayments · fastapi x402 · flask x402 · langchain agent payments · crewai payments · llamaindex tools · pydantic-ai tools · autogen extensions

License

MIT

Metadata

Release files for voidly-pay 3.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for voidly-pay 3.0.0
File Size Uploaded Provenance
voidly_pay-3.0.0.tar.gz 21.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for voidly-pay 3.0.0
File Interpreter ABI Platform
voidly_pay-3.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.0 kB

Release files / voidly_pay-3.0.0.tar.gz

Download URL voidly_pay-3.0.0.tar.gz
Size 21.9 kB
Tags Source
SHA-256 checksum
How to use checksums
392fe0f4ef6e5e9fae83118bf906fbf2ff54de39a004779f8205f69733e817a8
BLAKE2b-256 checksum
How to use checksums
8c0392ca56a79f2f3e6a75282bbe840ca4ecfec4f586846d645d297b48f1ef2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.1

Release files / voidly_pay-3.0.0-py3-none-any.whl

Download URL voidly_pay-3.0.0-py3-none-any.whl
Size 16.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1fc8831b61b1a65744caaadb662ab94452815b3da751c8213c8954a70076c160
BLAKE2b-256 checksum
How to use checksums
fa97b4b1a20952a2d95dc061ad5711a51939934a59f67f1923ebf62c4a244380
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.1

Security for voidly-pay 3.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page