API Reference
Pools
AMM pool state, liquidity, and read-only quotes.
Every endpoint here authenticates with X-API-Key, answers in the standard envelope and fails with the standard error body.
List liquidity pools and their asset pairs
https://api.cantoncap.cc/v1/poolsParameters
venue_idenumqueryoptionalOnly markets or pools of this venue.
asset_idstringqueryoptionalOnly markets or pools that include this asset.
networkenumqueryoptionalCanton network to read.
limitintegerqueryoptionalMaximum page size, bounded by the caller's plan.
cursorstringqueryoptionalOpaque continuation cursor from the previous response.
If-None-MatchstringheaderoptionalReturn 304 when this entity tag matches the current representation.
Request
curl -s "https://api.cantoncap.cc/v1/pools?venue_id=cantex" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Pool collection. 304 when If-None-Match matches.
{
"status": {
"timestamp": "2026-10-11T14:00:00.000Z",
"elapsed_ms": 18,
"error_code": 0,
"error_message": null,
"request_id": "req_7Hk2pQ9xLm"
},
"data": [
{
"market_category": "orderbook",
"last_updated_at": "2026-10-11T14:00:00.000Z",
"pool_id": "pool_3e7c1a9b5d2f4c6e8a0b1d3f5e7c9a12",
"venue_id": "temple",
"network": "mainnet",
"venue_pool_id": "cantex-cc-usdcx",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"asset_x_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
"asset_y_id": "ast_2d9c41e0b7a64f1e9c3b5a8d7e6f1c20",
"curve_type": "constant_product",
"fee_bps": 30,
"fee_rate": "0.003",
"protocol_fee_bps": 5,
"admin_fee_share": "0.5",
"reserve_x": "13006072.4",
"reserve_y": "2060318.1",
"source_price": "0.1586",
"tvl_cc": "26012144.8",
"liquidity_usd": "4120334.10",
"created_at": "2026-10-10T16:20:00.000Z",
"status": "active"
}
],
"pagination": {
"next_cursor": "eyJ2IjoxLCJvIjoyNX0"
}
}dataarray of objects21 child fields
market_categoryenumoptionalDisplay category of the market.
last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
pool_idstringStable opaque CantonCap pool ID, prefixed
pool_.venue_idstringStable CantonCap venue ID, such as
templeorcantex.networkenumCanton network the record belongs to.
venue_pool_idstringmarket_idstringStable opaque CantonCap market ID, prefixed
mkt_.asset_x_idstringasset_y_idstringcurve_typestringfee_bpsintegerfee_ratestringnullableprotocol_fee_bpsintegernullableadmin_fee_sharestringnullablereserve_xstringnullablereserve_ystringnullablesource_pricestringnullabletvl_ccstringnullableliquidity_usdstringnullablecreated_atstringnullablestatusenumLifecycle status of the record.
paginationobjectPresent on cursor-paginated collections.
1 child field
next_cursorstringnullableOpaque cursor for the next page, or null on the last page.
Headers
X-RateLimit-LimitRequests allowed in the current one-minute window.X-RateLimit-RemainingRequests left in the window.X-RateLimit-ResetUnix time, in seconds, when the window resets.ETagEntity tag of this representation. Send it back in If-None-Match.
Errors
| Status | Code | When |
|---|---|---|
| 400 | invalid_request | Request validation failedA parameter is malformed, out of bounds or not one of its allowed values. |
| 400 | invalid_request | Invalid cursorThe cursor is malformed or belongs to a different query. Some endpoints name it more precisely, such as Invalid historical range or cursor. |
| 401 | unauthenticated | A valid API key is requiredX-API-Key is missing or unknown. |
| 403 | forbidden | The API key does not resolve to an active planThe key expired, was suspended or has not started. |
| 403 | quota_exceeded | The requested page exceeds the API plan limitAn explicit limit is above the plan's page size. |
| 429 | rate_limited | The request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds. |
Get pool information and its asset pair
https://api.cantoncap.cc/v1/pools/{pool_id}Parameters
pool_idstringpathrequiredStable opaque CantonCap pool ID.
If-None-MatchstringheaderoptionalReturn 304 when this entity tag matches the current representation.
Request
curl -s "https://api.cantoncap.cc/v1/pools/pool_3e7c1a9b5d2f4c6e8a0b1d3f5e7c9a12" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Pool detail and latest state. 304 when If-None-Match matches.
{
"status": {
"timestamp": "2026-10-11T14:00:00.000Z",
"elapsed_ms": 18,
"error_code": 0,
"error_message": null,
"request_id": "req_7Hk2pQ9xLm"
},
"data": {
"market_category": "orderbook",
"last_updated_at": "2026-10-11T14:00:00.000Z",
"pool_id": "pool_3e7c1a9b5d2f4c6e8a0b1d3f5e7c9a12",
"venue_id": "temple",
"network": "mainnet",
"venue_pool_id": "cantex-cc-usdcx",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"asset_x_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
"asset_y_id": "ast_2d9c41e0b7a64f1e9c3b5a8d7e6f1c20",
"curve_type": "constant_product",
"fee_bps": 30,
"fee_rate": "0.003",
"protocol_fee_bps": 5,
"admin_fee_share": "0.5",
"reserve_x": "13006072.4",
"reserve_y": "2060318.1",
"source_price": "0.1586",
"tvl_cc": "26012144.8",
"liquidity_usd": "4120334.10",
"created_at": "2026-10-10T16:20:00.000Z",
"status": "active"
}
}dataobject21 child fields
market_categoryenumoptionalDisplay category of the market.
last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
pool_idstringStable opaque CantonCap pool ID, prefixed
pool_.venue_idstringStable CantonCap venue ID, such as
templeorcantex.networkenumCanton network the record belongs to.
venue_pool_idstringmarket_idstringStable opaque CantonCap market ID, prefixed
mkt_.asset_x_idstringasset_y_idstringcurve_typestringfee_bpsintegerfee_ratestringnullableprotocol_fee_bpsintegernullableadmin_fee_sharestringnullablereserve_xstringnullablereserve_ystringnullablesource_pricestringnullabletvl_ccstringnullableliquidity_usdstringnullablecreated_atstringnullablestatusenumLifecycle status of the record.
Headers
X-RateLimit-LimitRequests allowed in the current one-minute window.X-RateLimit-RemainingRequests left in the window.X-RateLimit-ResetUnix time, in seconds, when the window resets.ETagEntity tag of this representation. Send it back in If-None-Match.
Errors
| Status | Code | When |
|---|---|---|
| 400 | invalid_request | Request validation failedA parameter is malformed, out of bounds or not one of its allowed values. |
| 401 | unauthenticated | A valid API key is requiredX-API-Key is missing or unknown. |
| 403 | forbidden | The API key does not resolve to an active planThe key expired, was suspended or has not started. |
| 404 | not_found | Pool not foundThe pool does not exist or is not published. |
| 429 | rate_limited | The request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds. |