List pools
Answers the automated market makers on one chain: their two tokens, their fee tier, and what has moved through each.
GET /v1/market/pools
| Address | https://api.hanzo.ai/v1/market/pools |
| Method | GET |
| Operation | get_market_pools |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Answers the automated market makers on one chain: their two tokens, their fee tier, and what has moved through each.
The two price fields on a pool are the ratio its own reserves stand at, as the indexer computed them. They are not a price ON either token and not a mark: nothing here derives one, ranks the pools, or names a route through them.
A chain with no market maker deployed answers read with no pools. That is the
chain's real condition, and it is deliberately not the same answer as an indexer
that could not be asked.
Request
1 field.
| Field | In | Type | Required | Description |
|---|---|---|---|---|
chain | query | string | — | Chain is the chain's slug — cchain, zoo — as chains reports it. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | market.Pools | ok |
default | problem-details | refused |
200 body — 22 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
chain | body | string | — | |
pools | body | market.Pool[] | — | Pools is [] where the chain has none and null where the read failed. |
pools[].at | body | string | — | At is the pool contract's address, lowercase. |
pools[].count | body | integer (int64) | — | |
pools[].fee | body | integer (int64) | — | Fee is the pool's tier in hundredths of a basis point — 3000 is 0.3%. |
pools[].locked | body | string | — | |
pools[].token0 | body | market.Token | — | |
pools[].token0.at | body | string | — | At is the token's contract address, lowercase. |
pools[].token0.decimals | body | integer (int64) | — | |
pools[].token0.name | body | string | — | |
pools[].token0.symbol | body | string | — | |
pools[].token0Price | body | string | — | Token0Price is token1 per token0, and Token1Price its reciprocal, both as the indexer computed them. |
pools[].token1 | body | market.Token | — | |
pools[].token1.at | body | string | — | At is the token's contract address, lowercase. |
pools[].token1.decimals | body | integer (int64) | — | |
pools[].token1.name | body | string | — | |
pools[].token1.symbol | body | string | — | |
pools[].token1Price | body | string | — | |
pools[].volume | body | string | — | |
reach | body | market.Reach | — | |
reach.at | body | string | — | At is read, unconfigured, unreachable or refused. |
reach.why | body | string | — | Why is the upstream's own words, on Unreachable and Refused, and empty otherwise. |
Failure carries the platform error shape — see Errors.
Examples
hanzo market poolsimport { Configuration, MarketApi } from 'hanzoai';
const api = new MarketApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getMarketPools();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import MarketApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = MarketApi(client).get_market_pools()cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
resp, _, err := client.MarketAPI.GetMarketPools(context.Background()).Execute()
if err != nil {
return err
}use hanzo_client::apis::{configuration::Configuration, market_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = market_api::get_market_pools(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.MarketApi;
ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));
var result = new MarketApi(client).getMarketPools();curl https://api.hanzo.ai/v1/market/pools \
-H "Authorization: Bearer $HANZO_API_KEY"MCP declares no tool for market — tools/list on https://api.hanzo.ai/v1/mcp names the products it does reach. Use HTTP or an SDK.
How is this guide?