API reference

April 18, 2026 · View on GitHub

The bazaar is the public directory of sellers registered with this Facilitator. Agents use it to find paywalled resources; humans use the analytics endpoints to understand traffic.

Rate limits vary by endpoint: GET /bazaar (100/min), the /bazaar/* analytics endpoints (200/min each), GET /discovery/resources (no limit). See the rate limits table.

GET /discovery/resources

List paywalled resources registered in the bazaar. This is the main discovery endpoint — agents call it to find services matching a query.

Query parameters

ParamTypeDefaultDescription
qstringSubstring to match against the resource URL.
networkstringFilter by CAIP-2.
sortstringusesuses or volume.
limitstring20Clamped to [1, 100].
offsetstring0Pagination offset.

Response 200 OK

FieldTypeDescription
resourcesarrayOne entry per resource.
totalnumberTotal matching resources.
limitnumberEchoed.
offsetnumberEchoed.

Each resources[] entry:

FieldTypeDescription
resourcestringURL of the paywalled endpoint.
typestringAlways "http" for now.
descriptionstring | nullSeller-supplied description.
acceptsarray{ scheme, network, payTo, amount } per accepted method.
useCountnumberAll-time use count.
totalVolumestringAll-time volume in base units.
lastUpdatedstring | nullISO-8601.

GET /bazaar/stats

Aggregate statistics for a time window.

Query parameters

ParamDefaultValues
window7d1d, 7d, 30d

Response 200 OK

FieldTypeDescription
windowstringEchoed.
chainsActivenumberChains with at least one tx in the window.
chainsSupportednumberChains enabled on the relay.
uniqueRoutesnumberDistinct buyer/seller network pairs.
crossChainRoutesnumberOf those, how many cross chains.
sameChainRoutesnumberAnd how many stay on-chain.
totalVolumestringGross volume in base units.
txCountnumberSettled transactions.
protocolSplitobject{ "x402": n, "mpp": m, … }.
typeSplitobject{ same_chain: n, cross_chain: m }.

Cached for 60 s per window.

GET /bazaar/routes

All buyer → seller network pairs with their stats.

Query parameters

ParamDefaultValues
window7d1d, 7d, 30d

Response 200 OK

{
  "window": "7d",
  "routes": [
    {
      "buyerNetwork": "eip155:8453",
      "sellerNetwork": "stellar:pubnet",
      "txCount": 128,
      "volume": "128000000",
      "isCrossChain": true
    }
  ]
}

Cached for 60 s.

GET /bazaar/resources

Ranked resources with windowed and all-time counters. Use this instead of /discovery/resources when you need window-scoped rankings.

Query parameters

ParamDefaultDescription
window7d1d, 7d, 30d.
rankusesuses or volume.
networkCAIP-2 filter.
qURL substring.
limit20[1, 100].
offset0

Response 200 OK

FieldTypeDescription
windowstring
itemsarrayRanked resources.
totalnumber

Each items[] entry adds to the shape of /discovery/resources two more fields:

FieldTypeDescription
windowedUseCountnumberUse count inside window.
windowedVolumestringVolume inside window.

Cached for 60 s per query.

GET /bazaar/sellers

Ranked sellers (merchants) — useful for a public leaderboard.

Query parameters

ParamDefaultDescription
window7d1d, 7d, 30d.
rankvolumevolume or tx_count.
networkCAIP-2 filter on the seller's primary network.
limit20[1, 100].
offset0

Response 200 OK

{
  "window": "7d",
  "items": [
    {
      "merchantId": "hb-a1b2c3",
      "primaryNetwork": "stellar:pubnet",
      "txCount": 42,
      "volume": "42000000",
      "resourceCount": 3,
      "firstSeenAt": "2026-03-14T12:00:00.000Z"
    }
  ],
  "total": 1
}

Cached for 60 s.

GET /bazaar/transactions

Filterable transaction log. Useful for a seller-facing dashboard that wants to show recent settlements.

Query parameters

ParamDescription
window1d, 7d, 30d
merchantIdFilter by seller.
buyerNetworkCAIP-2.
sellerNetworkCAIP-2.
statuse.g. settled, pending.
protocole.g. x402, mpp.
typesame_chain or cross_chain.
limitdefault 20, max 100.
offsetdefault 0.

Response 200 OK

FieldTypeDescription
itemsarrayTransactions.
totalnumber
limitnumber
offsetnumber

Each item:

FieldType
idstring
type"same_chain" | "cross_chain"
protocolstring | null
statusstring
buyerNetworkstring
sellerNetworkstring
merchantIdstring | null
grossAmountstring
netAmountstring | null
gasAllowancestring | null
pullTxHashstring | null
burnTxHashstring | null
mintTxHashstring | null
createdAtISO-8601 | null
settledAtISO-8601 | null

Cached for 60 s per query.

GET /bazaar/cost-comparison

Compares the Facilitator's flat gas allowance to a percentage-based pricing model on a given route. Intended for marketing / positioning, not for runtime fee calculation — use GET /bridge/fees for that.

Query parameters

ParamRequiredDescription
buyerNetworkyesCAIP-2.
sellerNetworkyesCAIP-2.

Response 200 OK

{
  "buyerNetwork": "eip155:8453",
  "sellerNetwork": "stellar:pubnet",
  "tiers": [
    {
      "amount": "100000000000",
      "cctpAllowance": "500",
      "percentAlternative": "1000000100",
      "savingsVsPercent": "999999600"
    }
  ],
  "notes": {
    "cctpSource": "gas-schedule.ts",
    "percentAssumption": "1% + \$0.10 market-maker spread baseline"
  }
}

Errors

StatuserrorCause
400validationMissing buyerNetwork or sellerNetwork.
404ROUTE_NOT_CONFIGUREDNo gas schedule for this pair.
429RATE_LIMIT