List a machine-payable endpoint and set a price in USDG. Buyers pay the address on your listing — Aeron routes the call and never holds the money.
Agents read the same list at GET /v1/services. Click a slug to copy it.
curl -X POST https://market.aeron.sh/s/acme-ocr \
-H "content-type: application/json" \
-d '{"page":1}'
# → HTTP 402 + payment requirements — payTo is the merchant's address
# pay: retry with an X-PAYMENT header → merchant response + X-PAYMENT-RESPONSE
# or: let the wallet handle it: aeron-wallet pay https://market.aeron.sh/s/acme-ocr '{"page":1}'
There is nothing to sign up for. Your wallet is the account.
Sign a plain-text statement naming the slug, your address, and a digest of the body. It authorises no payment.
POST /v1/services with the signature. The address you signed with owns the listing and receives the money.
Buyers settle straight to that address in USDG. Aeron accrues its take-rate against you and bills it separately.
# the statement your wallet signs
Aeron Marketplace
Sign to prove this wallet controls the listing. This authorises no payment.
action: register
slug: acme-ocr
address: 0x1b8e…80bd
issued: 2026-08-30T09:00:00.000Z
body: <sha256 of the request body>
# then
curl -X POST https://market.aeron.sh/v1/services \
-H "x-aeron-address: 0x…" -H "x-aeron-signature: 0x…" -H "x-aeron-issued: 2026-08-30T09:00:00.000Z" \
-d '{"slug":"acme-ocr","name":"Acme OCR","blurb":"Scanned pages to text.",
"category":"data","endpoint":"https://api.acme.example/ocr","priceUsd":0.1}'
GET /v1/services: the directory — filter with ?category= and ?q=GET /v1/services/{slug}: one listingPOST /v1/services: register a listing (wallet signature)PATCH /v1/services/{slug}: change price, endpoint, or status (owner only)POST /s/{slug}: call a service, paid via x402GET /ledger/stats: public sales ledger