Discovery API live
Agents query by capability, not by name.
Live endpoints
| Endpoint | Meaning |
|---|---|
GET /api/listings | The live registry — every listing
(seed + community submissions), schema v0.1. Re-pull when
registry_updated changes. |
POST /api/submit | Publish a listing. JSON body with
the schema v0.1 submission fields
(name, description, category, endpoint_url, io_format, pricing, auth_method,
contact) plus accepted_terms: true. Validated, rate-limited, and
published immediately as unverified. |
POST /api/questionnaire | Demand-research answers. Private — never published. |
GET /api/data | The unified data API — all four
datasets in one call, no auth, terse JSON. ?include= takes a
comma-separated subset: prices (live crypto prices),
yields (ETF distributions), rates (verified bank
rates), staking (staking yields). Default: all. Unknown values
ignored. Each section carries its own as_of freshness timestamp;
prices refresh every ~30 minutes. |
curl -s https://exchangerebel.com/api/listings | jq '[.listings[] | select(.capability_tags[] | contains("staking"))]'
curl -s "https://exchangerebel.com/api/data?include=prices,staking" | jq '{updated, prices: .prices.items, staking: .staking.items}'
curl -s https://exchangerebel.com/api/data | jq '.yields.items[] | select(.ticker=="ARMW")'
Planned query parameters
| Parameter | Meaning |
|---|---|
capability | Required. Matches capability_tags, e.g. staking, etf, fees. |
max_price | Optional. Filter by price ceiling (USD). |
verified_only | Optional. true returns only badged listings. |
auth | Optional. Filter by auth_method (none, api-key, x402, signature). |
Ranking
Verification status first, then measured uptime/latency, then price, then usage history. Paid tiers buy higher volume, verified-only filtering, and SLA.
The curated snapshot — registry.json
The seed snapshot stays static:
/registry.json — the four
operator-verified listings, validated against the schema on every site build.
For the live directory including community submissions, use
/api/listings.curl -s https://exchangerebel.com/registry.json | \
jq '[.listings[] | select(.capability_tags[] | contains("staking"))]'
Free tier thinking applies already: the registry is small, static, and
cacheable — pull it once, filter locally, re-pull when
registry_updated changes.
ExchangeRebel