Guides

Get listed as a merchant

Get a priced endpoint into the public x402 catalog and onto the Roundhouse directory.

Getting listed is not an application; there is nobody to ask. The directory is built from the public x402 catalog and enriched with what the index has observed on-chain, so listing means making three technical facts about your endpoint true.

Note

There are two independent routes in, and they show you differently. Publishing to the catalog gets you a listing — a name, a price, a description. Being paid gets you a settlement record — evidence. You want both, and buyers weigh the second one far more heavily.

Route 1 — the catalog listing#

1. Price a resource behind 402#

Your endpoint must answer an unpaid request with a 402 carrying standard payment requirements. The easiest way is to put x402 middleware in front of it and point it at a facilitator — see charge for your API.

The requirements must be honest and stable: the payTo you quote is the address the index will join your settlements on, and the resource URL is what distinguishes your service fee from any value passing through it.

2. Publish to the x402 discovery catalog#

The directory is fed by the public x402 discovery catalog. In practice the reliable way in is to settle through a facilitator that publishes to it — Coinbase's CDP facilitator does this for the endpoints it serves, which is how the great majority of currently-listed services got there. The x402 documentation is authoritative on the current publishing mechanism; treat it as the source rather than this page, because it changes faster than we do.

3. Wait about forty minutes#

Roundhouse crawls the catalog continuously and a full cycle takes roughly forty minutes. Then it enriches your entry, from the outside:

EnrichmentWhat it doesWhat a buyer sees
Liveness probeFetches your endpointis_live, http_status
Favicon + descriptionReads your page metadataAn icon and a summary in the directory
Host geolocationResolves and locates your endpoint's IP"Serves from", with a flag
Settlement joinMatches your payTo in the ledgerl30_total_calls, l30_unique_payers, onchain_volume_usdc

Confirm you landed:

bash
curl -sL "https://www.roundhouse.studio/api/v0/endpoints?q=<your-service>" | jq \
  '.endpoints[] | {service_name, resource, price_usdc, pay_to, is_live, http_status, l30_unique_payers}'

Note

"Serves from" is the nearest serving location of your endpoint's IP — for anything behind a CDN that is an edge PoP, not where you are. It is labelled that way on your merchant page for exactly that reason, and it is not presented as your address.

Route 2 — the settlement record#

You do not need a listing to appear in the ledger. Any settlement to your payTo is indexed, because it happened on a public chain. If someone pays you, you have a merchant page at /merchant/<your-payTo> whether or not anyone published a listing.

bash
curl -sL "https://www.roundhouse.studio/api/v0/merchants/<your-payTo>" | jq

This route is slower to start and much stronger once running, because a listing costs nothing to create and a paying customer does not.

Make the listing worth reading#

Everything below is free and takes minutes. Each one removes a reason not to pay you.

  • Keep the endpoint up. is_live: false is the first thing a buyer sees. The probe runs from outside your network, so it reflects real availability.
  • Make the listed price match your 402. Buyers compare the two, and a gap past roughly 25% on three or more settlements is flagged on your merchant page.
  • Write a real description. It is what appears in the directory and in search. "API" is not a description.
  • Serve a favicon and page metadata. The enrichment pass reads them; without them your row is a blank square in a list of logos.
  • Register an ERC-8004 identity. Free. It turns a hex string into a name on /explore and every profile page.
  • Get your first settlement. Even one distinct payer moves you out of the "nobody has ever paid this" bucket that vetting agents filter on.

What you cannot do#

Being straight about this, because it is the shape of a neutral data layer:

  • You cannot pay for placement. There is no promoted tier and no ranking to buy into.
  • You cannot remove your settlement history. It is a public chain. The index reflects it.
  • You cannot suppress the observed columns. If your listing claims a price nobody pays, the directory shows both numbers.
  • You cannot get listed by asking us. There is no submission form, deliberately — the catalog is someone else's public list, and we index it rather than curate it.

What you can do is correct your own inputs: a live endpoint, an honest price, a real description, an identity.

Known limitation: stale rows#

The catalog only ever grows — the index currently holds substantially more rows than are listed upstream, because entries the upstream dropped are not yet pruned. last_indexed_at is the "still seen upstream" marker, and a full crawl cycle is about forty minutes, so a row much older than that is probably gone from the source. Filtering or labelling those is open work. If your own row looks stale, check last_indexed_at before assuming your listing was removed.

Hand it to an agent#

Agent prompt
Get my x402 endpoint listed and check how it looks to a buyer.

My endpoint: <https://…>
My payTo: <0x…>

1. Fetch my endpoint unpaid and confirm it returns a standard 402 with a valid
   accepts array. Show me the decoded body and flag anything non-standard.
2. Confirm the payTo in that 402 matches the address above.
3. Check whether I am in the directory:
   GET /api/v0/endpoints?q=<my service>. Report is_live, http_status,
   price_usdc, last_indexed_at, and l30_unique_payers.
4. Check my settlement record: GET /api/v0/merchants/<payTo>.
5. Tell me, as a buyer would see it, the three weakest things about my listing
   and exactly what to change.

Next steps#