Fetching the catalog
Filtering by provider
To fetch only one provider’s routes:tokens, tokensapi, tokens-api.
An unknown value returns 400 with supportedProviders listed in the body.
Route entry shape
Each item inroutes[] is a CatalogRouteEntry:
| Field | Type | Notes |
|---|---|---|
path | string | Fully-qualified route path (supports :param templating). |
httpMethod | "GET" | "POST" | "HEAD" | Canonical HTTP method for the route. |
cluster | "mainnet" | "devnet" (optional) | Only present for Solana routes. |
provider | "alchemy" | "helius" | "tokens" | Upstream provider identifier. |
surface | "rpc" | "das" | "tokens" | Logical surface. |
method | string | Canonical method name (getBalance, search, …). |
description | string | Human-readable route description. |
accessMode | "exact" | "siwx" | Payment vs. auth-only. See Access modes. |
paymentRequired | boolean | true for paid routes, false for SIWX. |
priceUsd | string (optional) | Decimal USD price, present for paid routes. |
authNetworks | string[] (optional) | SIWX networks, present for SIWX routes. |
paymentNetwork | string (optional) | CAIP-2 of the settlement network (paid routes only). |
paymentAsset | { symbol, mint, decimals } (optional) | Asset descriptor (paid routes only). |
enabled | boolean | Always true for routes returned here. |
inputSchema | object | JSON Schema for the request input. |
outputSchema | object | JSON Schema for the response body. |
pathParamsSchema | object (optional) | JSON Schema for :param path segments. |
Catalog envelope
The top-levelcatalog object reports:
| Field | Meaning |
|---|---|
catalog.totalRoutes | Total number of routes across every provider. |
catalog.returnedRoutes | Number of routes returned given the current filter. |
catalog.filters.provider | The active provider filter (null if unfiltered). |
routes continue to work unchanged. The additional envelope fields are additive.
Using the catalog
Typical client flow:- Fetch
GET /v1/catalogonce on startup (or per reload). - Render routes grouped by
categories.providers. - For each user action, look up the matching
CatalogRouteEntry, build the request according toinputSchema, and fire it. - If
paymentRequired: true, let your x402 client library handle theexactflow using the price from the402challenge. - If
paymentRequired: falseandaccessMode: "siwx", let your client handle SIWX using theauthNetworksfrom the402challenge.

