API Reference
Markets
Venue markets, observations, books, trades, and candles.
- GET
/v1/List venue marketsmarkets - GET
/v1/Get market metadata and latest statemarkets/ {market_id} - GET
/v1/Get the latest venue tickermarkets/ {market_id}/ ticker - GET
/v1/Get the latest public order-book snapshotmarkets/ {market_id}/ orderbook - GET
/v1/Get public market trades and coveragemarkets/ {market_id}/ trades - GET
/v1/Get venue or CantonCap-rollup candlesmarkets/ {market_id}/ ohlcv - GET
/v1/Get the latest model-specific liquidity snapshotmarkets/ {market_id}/ liquidity
Every endpoint here authenticates with X-API-Key, answers in the standard envelope and fails with the standard error body.
List venue markets
https://api.cantoncap.cc/v1/marketsParameters
venue_idenumqueryoptionalOnly markets or pools of this venue.
asset_idstringqueryoptionalOnly markets or pools that include this asset.
modelenumqueryoptionalOnly markets of this market model.
categoryenumqueryoptionalOnly markets of this display category.
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/markets?venue_id=temple&limit=50" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Market 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",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"venue_id": "temple",
"network": "mainnet",
"venue_market_id": "Amulet/USDCx",
"market_model": "order_book",
"base_asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
"quote_asset_id": "ast_2d9c41e0b7a64f1e9c3b5a8d7e6f1c20",
"status": "active",
"price_tick": "0.0001",
"amount_step": "0.0001",
"min_order_amount": "1",
"fee_model": "Maker 0.5 bp, taker 1 bp"
}
],
"pagination": {
"next_cursor": "eyJ2IjoxLCJvIjoyNX0"
}
}dataarray of objects90 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.
market_idstringStable opaque CantonCap market ID, prefixed
mkt_.venue_idstringStable CantonCap venue ID, such as
templeorcantex.networkenumCanton network the record belongs to.
venue_market_idstringThe market's identifier at the venue.
market_modelenumHow the market trades:
amm,order_book,order_book_rfqorhybrid.base_asset_idstringAsset ID of the base asset.
quote_asset_idstringAsset ID of the quote asset.
statusenumLifecycle status of the record.
price_tickstringnullableMinimum price increment at the venue. Null when the venue does not state one.
amount_stepstringnullableMinimum amount increment at the venue. Null when the venue does not state one.
min_order_amountstringnullableMinimum order amount at the venue. Null when the venue does not state one.
fee_modelstringnullableLegacy free-form venue fee description, unchanged for existing consumers. Its contents vary by venue and are not verified; use
feesfor sourced fee schedules.feesobjectoptionalSourced fees of one market, published additively beside the legacy
fee_model.statusisverifiedwhen the latest recorded check of the official source confirmed the schedule;verification_failedwhen the latest check could not confirm it (the previously verified components remain andsource.verified_atis not advanced);withheldwhen a reviewed schedule exists but its rates are not published (withheld_reasonexplains why andcomponentsis empty); andunknownwhen no sourced schedule applies (all other fields are null or empty). Unknown is never zero, a known zero is published as rate "0", and charges with different scopes (trading, pool, Connect, settlement, wallet or network) are separate components orseparate_chargesand are never summed. Age thresholds are left to consumers: comparesource.verified_atwith your own policy. Reviewed venue schedules (source.kindofficial_documentation, such as Temple and Rocky) carry aschedule_idandrevision; a pool venue without a reviewed schedule derives its fees from its own native pools at read time (source.kindvenue_api, such as Cantex): onepool_swapcomponent that isknownwhen every eligible pool shares a rate orvariablewith the exact range and per-pool breakdown when they differ, an optionalpool_admin_share, and Connect or network charges kept separate with explicit availability. Such a market has noschedule_id, andsource.verified_atis the latest pool observation.75 child fields
statusenumschedule_idstringnullableStable identifier of the venue schedule that governs this market.
revisionintegernullableRevision of the schedule definition; it increases when reviewed rates, applicability or evidence scope change.
withheld_reasonstringnullableMachine-readable reason, such as
conflicting_sources, when status iswithheld.notestringnullableReviewer note qualifying the schedule, such as a conflicting source.
componentsarray of objects32 child fields
chargeenumliquidity_roleenumunitenumbasis_pointsof traded notional;share_of_chargeis a fraction (0 to 1) of another charge and is not an additional charge;asset_amountis a fixed amount ofasset_id.availabilityenumratedecimal stringnullableExact canonical non-negative decimal string (no exponent, sign, leading or trailing zeros). Basis points of traded notional when the unit is
basis_points, for example "0.5" for 0.005%.minimum_ratedecimal stringnullableExact canonical non-negative decimal string (no exponent, sign, leading or trailing zeros). Basis points of traded notional when the unit is
basis_points, for example "0.5" for 0.005%.maximum_ratedecimal stringnullableExact canonical non-negative decimal string (no exponent, sign, leading or trailing zeros). Basis points of traded notional when the unit is
basis_points, for example "0.5" for 0.005%.asset_idstringnullableStable opaque CantonCap asset ID, prefixed
ast_.qualificationstringnullableComponent-specific scope, such as "Wallet-funded side only".
unpriced_poolsarray of objectsoptionalCurrent eligible pools without a valid fee; their presence makes the market-wide component unknown while pools retains the known subset.
10 child fields
evidenceobjectnullableoptionalRetained venue API evidence, independently timestamped for each pool or separately scoped charge.
5 child fields
source_idstringsource_methodstringsource_timestampdate-timenullableobserved_atdate-timeraw_event_idsarray of stringsImmutable ingestion event references; this response does not grant access to raw payloads.
pool_idstringStable opaque CantonCap pool ID, prefixed
pool_.venue_pool_idstringnullableoptionalThe pool's identifier at the venue. Omitted by servers that predate the pool-derived breakdown.
observed_atdate-timecoverageenumnullableoptionalCompleteness of the pool observation behind this rate. Omitted by servers that predate the pool-derived breakdown.
poolsarray of objects11 child fields
evidenceobjectnullableoptionalRetained venue API evidence, independently timestamped for each pool or separately scoped charge.
5 child fields
source_idstringsource_methodstringsource_timestampdate-timenullableobserved_atdate-timeraw_event_idsarray of stringsImmutable ingestion event references; this response does not grant access to raw payloads.
pool_idstringStable opaque CantonCap pool ID, prefixed
pool_.venue_pool_idstringnullableoptionalThe pool's identifier at the venue. Omitted by servers that predate the pool-derived breakdown.
ratedecimal stringExact canonical non-negative decimal string (no exponent, sign, leading or trailing zeros). Basis points of traded notional when the unit is
basis_points, for example "0.5" for 0.005%.observed_atdate-timecoverageenumnullableoptionalCompleteness of the pool observation behind this rate. Omitted by servers that predate the pool-derived breakdown.
applicabilityobjectnullableWhere the schedule applies. A rate is never universal beyond this scope;
exclusionslists documented cases it does not describe.8 child fields
networkenumCanton network the record belongs to.
market_modelsarray of enumsexecution_pathenumaccount_scopeenumsummarystringexclusionsarray of objects2 child fields
codestringdescriptionstringApproved description. Null when none is published.
paymentobjectnullableHow fees are paid, such as Temple's pre-paid fee balance.
2 child fields
methodenumdescriptionstringnullableApproved description. Null when none is published.
separate_chargesarray of objectsCharges the source documents separately (deposit, withdrawal, wallet, network and similar). They are not part of
componentsand must not be added to them.11 child fields
availabilityenumoptionalAvailability of a separately scoped asset amount; omitted for narrative-only charges.
amountdecimal stringnullableoptionalExact canonical non-negative decimal string (no exponent, sign, leading or trailing zeros). Basis points of traded notional when the unit is
basis_points, for example "0.5" for 0.005%.asset_idstringnullableoptionalStable opaque CantonCap asset ID, prefixed
ast_.evidenceobjectnullableoptionalRetained venue API evidence, independently timestamped for each pool or separately scoped charge.
5 child fields
source_idstringsource_methodstringsource_timestampdate-timenullableobserved_atdate-timeraw_event_idsarray of stringsImmutable ingestion event references; this response does not grant access to raw payloads.
chargeenumdescriptionstringApproved description. Null when none is published.
sourceobjectnullableEvidence for the schedule.
verified_atis the latest successful verification and is never advanced by a failed check;last_checked_atandlast_check_outcomedescribe the latest attempt.content_hashis the SHA-256 of the captured source bytes.12 child fields
kindenumurlURI stringnullabletitlestringnullableeffective_atdate-timenullableEffective time stated by the source, when it states one.
recorded_atdate-timeCheck time of the review that recorded this revision.
verified_atdate-timeretrieved_atdate-timeRetrieval time of the capture that last verified the schedule.
content_hashstringnullableexcerptstringnullablelast_checked_atdate-timelast_check_outcomeenumlast_check_errorstringnullableError code of a failed latest check.
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 market metadata and latest state
https://api.cantoncap.cc/v1/markets/{market_id}Parameters
market_idstringpathrequiredStable opaque CantonCap market ID.
If-None-MatchstringheaderoptionalReturn 304 when this entity tag matches the current representation.
Request
curl -s "https://api.cantoncap.cc/v1/markets/mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Market 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",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"venue_id": "temple",
"network": "mainnet",
"venue_market_id": "Amulet/USDCx",
"market_model": "order_book",
"base_asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
"quote_asset_id": "ast_2d9c41e0b7a64f1e9c3b5a8d7e6f1c20",
"status": "active",
"price_tick": "0.0001",
"amount_step": "0.0001",
"min_order_amount": "1",
"fee_model": "Maker 0.5 bp, taker 1 bp"
},
"ticker": {
"market_category": "orderbook",
"liquidity_score": 82.4,
"liquidity_score_methodology": "execution-impact-v1",
"liquidity_score_updated_at": "2026-10-11T13:55:00.000Z",
"last_updated_at": "2026-10-11T14:00:00.000Z",
"venue_id": "temple",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"price_origin": "venue_book",
"last_price": "0.1586",
"best_bid": "0.1583",
"best_ask": "0.1586",
"mid_price": "0.15845",
"volume_base_24h": "8342210.4",
"volume_quote_24h": "1320455.18",
"trade_count_24h": 1284,
"open_24h": "0.1612",
"high_24h": "0.1630",
"low_24h": "0.1549",
"close_24h": "0.1584",
"vwap_24h": "0.1590",
"price_change_abs_24h": "-0.0030",
"reference_price_usd": "0.1584",
"price_change_24h_pct": "-1.84",
"volume_usd_24h": "1320455.18"
},
"liquidity": {
"liquidity_score": 82.4,
"liquidity_score_methodology": "execution-impact-v1",
"liquidity_score_updated_at": "2026-10-11T13:55:00.000Z",
"score_probes": [
{
"side": "buy",
"notional_usd": "10000",
"impact_bps": "41.2",
"filled": true
}
],
"last_updated_at": "2026-10-11T14:00:00.000Z",
"model": "order_book",
"venue_id": "temple",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"spread_bps": "18.9",
"best_bid": "0.1583",
"best_ask": "0.1586",
"bid_depth": {
"50": "61200.4",
"200": "182400.55"
},
"ask_depth": {
"50": "58840.1",
"200": "176920.30"
},
"probes": [
{
"side": "buy",
"notional_usd": "10000",
"base_amount": "2500",
"quote_amount": "396.25",
"executable_price": "0.1589",
"price_impact_bps": "41.2"
}
],
"available_quantity_excludes_own_orders": false
}
}dataobject90 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.
market_idstringStable opaque CantonCap market ID, prefixed
mkt_.venue_idstringStable CantonCap venue ID, such as
templeorcantex.networkenumCanton network the record belongs to.
venue_market_idstringThe market's identifier at the venue.
market_modelenumHow the market trades:
amm,order_book,order_book_rfqorhybrid.base_asset_idstringAsset ID of the base asset.
quote_asset_idstringAsset ID of the quote asset.
statusenumLifecycle status of the record.
price_tickstringnullableMinimum price increment at the venue. Null when the venue does not state one.
amount_stepstringnullableMinimum amount increment at the venue. Null when the venue does not state one.
min_order_amountstringnullableMinimum order amount at the venue. Null when the venue does not state one.
fee_modelstringnullableLegacy free-form venue fee description, unchanged for existing consumers. Its contents vary by venue and are not verified; use
feesfor sourced fee schedules.feesobjectoptionalSourced fees of one market, published additively beside the legacy
fee_model.statusisverifiedwhen the latest recorded check of the official source confirmed the schedule;verification_failedwhen the latest check could not confirm it (the previously verified components remain andsource.verified_atis not advanced);withheldwhen a reviewed schedule exists but its rates are not published (withheld_reasonexplains why andcomponentsis empty); andunknownwhen no sourced schedule applies (all other fields are null or empty). Unknown is never zero, a known zero is published as rate "0", and charges with different scopes (trading, pool, Connect, settlement, wallet or network) are separate components orseparate_chargesand are never summed. Age thresholds are left to consumers: comparesource.verified_atwith your own policy. Reviewed venue schedules (source.kindofficial_documentation, such as Temple and Rocky) carry aschedule_idandrevision; a pool venue without a reviewed schedule derives its fees from its own native pools at read time (source.kindvenue_api, such as Cantex): onepool_swapcomponent that isknownwhen every eligible pool shares a rate orvariablewith the exact range and per-pool breakdown when they differ, an optionalpool_admin_share, and Connect or network charges kept separate with explicit availability. Such a market has noschedule_id, andsource.verified_atis the latest pool observation.75 child fields
statusenumschedule_idstringnullableStable identifier of the venue schedule that governs this market.
revisionintegernullableRevision of the schedule definition; it increases when reviewed rates, applicability or evidence scope change.
withheld_reasonstringnullableMachine-readable reason, such as
conflicting_sources, when status iswithheld.notestringnullableReviewer note qualifying the schedule, such as a conflicting source.
componentsarray of objects32 child fields
chargeenumliquidity_roleenumunitenumbasis_pointsof traded notional;share_of_chargeis a fraction (0 to 1) of another charge and is not an additional charge;asset_amountis a fixed amount ofasset_id.availabilityenumratedecimal stringnullableExact canonical non-negative decimal string (no exponent, sign, leading or trailing zeros). Basis points of traded notional when the unit is
basis_points, for example "0.5" for 0.005%.minimum_ratedecimal stringnullableExact canonical non-negative decimal string (no exponent, sign, leading or trailing zeros). Basis points of traded notional when the unit is
basis_points, for example "0.5" for 0.005%.maximum_ratedecimal stringnullableExact canonical non-negative decimal string (no exponent, sign, leading or trailing zeros). Basis points of traded notional when the unit is
basis_points, for example "0.5" for 0.005%.asset_idstringnullableStable opaque CantonCap asset ID, prefixed
ast_.qualificationstringnullableComponent-specific scope, such as "Wallet-funded side only".
unpriced_poolsarray of objectsoptionalCurrent eligible pools without a valid fee; their presence makes the market-wide component unknown while pools retains the known subset.
10 child fields
evidenceobjectnullableoptionalRetained venue API evidence, independently timestamped for each pool or separately scoped charge.
5 child fields
source_idstringsource_methodstringsource_timestampdate-timenullableobserved_atdate-timeraw_event_idsarray of stringsImmutable ingestion event references; this response does not grant access to raw payloads.
pool_idstringStable opaque CantonCap pool ID, prefixed
pool_.venue_pool_idstringnullableoptionalThe pool's identifier at the venue. Omitted by servers that predate the pool-derived breakdown.
observed_atdate-timecoverageenumnullableoptionalCompleteness of the pool observation behind this rate. Omitted by servers that predate the pool-derived breakdown.
poolsarray of objects11 child fields
evidenceobjectnullableoptionalRetained venue API evidence, independently timestamped for each pool or separately scoped charge.
5 child fields
source_idstringsource_methodstringsource_timestampdate-timenullableobserved_atdate-timeraw_event_idsarray of stringsImmutable ingestion event references; this response does not grant access to raw payloads.
pool_idstringStable opaque CantonCap pool ID, prefixed
pool_.venue_pool_idstringnullableoptionalThe pool's identifier at the venue. Omitted by servers that predate the pool-derived breakdown.
ratedecimal stringExact canonical non-negative decimal string (no exponent, sign, leading or trailing zeros). Basis points of traded notional when the unit is
basis_points, for example "0.5" for 0.005%.observed_atdate-timecoverageenumnullableoptionalCompleteness of the pool observation behind this rate. Omitted by servers that predate the pool-derived breakdown.
applicabilityobjectnullableWhere the schedule applies. A rate is never universal beyond this scope;
exclusionslists documented cases it does not describe.8 child fields
networkenumCanton network the record belongs to.
market_modelsarray of enumsexecution_pathenumaccount_scopeenumsummarystringexclusionsarray of objects2 child fields
codestringdescriptionstringApproved description. Null when none is published.
paymentobjectnullableHow fees are paid, such as Temple's pre-paid fee balance.
2 child fields
methodenumdescriptionstringnullableApproved description. Null when none is published.
separate_chargesarray of objectsCharges the source documents separately (deposit, withdrawal, wallet, network and similar). They are not part of
componentsand must not be added to them.11 child fields
availabilityenumoptionalAvailability of a separately scoped asset amount; omitted for narrative-only charges.
amountdecimal stringnullableoptionalExact canonical non-negative decimal string (no exponent, sign, leading or trailing zeros). Basis points of traded notional when the unit is
basis_points, for example "0.5" for 0.005%.asset_idstringnullableoptionalStable opaque CantonCap asset ID, prefixed
ast_.evidenceobjectnullableoptionalRetained venue API evidence, independently timestamped for each pool or separately scoped charge.
5 child fields
source_idstringsource_methodstringsource_timestampdate-timenullableobserved_atdate-timeraw_event_idsarray of stringsImmutable ingestion event references; this response does not grant access to raw payloads.
chargeenumdescriptionstringApproved description. Null when none is published.
sourceobjectnullableEvidence for the schedule.
verified_atis the latest successful verification and is never advanced by a failed check;last_checked_atandlast_check_outcomedescribe the latest attempt.content_hashis the SHA-256 of the captured source bytes.12 child fields
kindenumurlURI stringnullabletitlestringnullableeffective_atdate-timenullableEffective time stated by the source, when it states one.
recorded_atdate-timeCheck time of the review that recorded this revision.
verified_atdate-timeretrieved_atdate-timeRetrieval time of the capture that last verified the schedule.
content_hashstringnullableexcerptstringnullablelast_checked_atdate-timelast_check_outcomeenumlast_check_errorstringnullableError code of a failed latest check.
tickerobjectnullableLatest ticker of the market. Null when none is available.
24 child fields
market_categoryenumnullableoptionalDisplay category of the market.
liquidity_scorenumbernullableoptionalDisplayed liquidity score, 0 to 100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.
liquidity_score_methodologyenumoptionalMethodology version of the liquidity score.
liquidity_score_updated_atdate-timenullableoptionalWhen the liquidity score was calculated.
last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
venue_idstringStable CantonCap venue ID, such as
templeorcantex.market_idstringStable opaque CantonCap market ID, prefixed
mkt_.price_originenumWhere the ticker price comes from.
last_pricedecimal stringnullableLast traded price, in quote-asset units.
best_biddecimal stringnullableBest bid price, in quote-asset units.
best_askdecimal stringnullableBest ask price, in quote-asset units.
mid_pricedecimal stringnullableMidpoint between the best bid and the best ask.
volume_base_24hdecimal stringnullable24-hour volume in base-asset units.
volume_quote_24hdecimal stringnullable24-hour volume in quote-asset units.
trade_count_24hintegernullableTrades in the last 24 hours. Null when unavailable.
open_24hdecimal stringnullableOpening price of the rolling 24-hour window.
high_24hdecimal stringnullableHighest price in the last 24 hours.
low_24hdecimal stringnullableLowest price in the last 24 hours.
close_24hdecimal stringnullableClosing price of the rolling 24-hour window.
vwap_24hdecimal stringnullableVolume-weighted average price over 24 hours.
price_change_abs_24hdecimal stringnullable24-hour price change in quote-asset units.
reference_price_usddecimal stringnullableReference price in USD. Null when unavailable.
price_change_24h_pctdecimal stringnullable24-hour price change in percentage points.
volume_usd_24hdecimal stringnullable24-hour volume in USD. Null when unavailable.
liquidityobjectnullableLiquidity of the asset's markets, in USD and outside any conversion.
79 child fields
liquidity_scorenumbernullableoptionalDisplayed liquidity score, 0 to 100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.
liquidity_score_methodologyenumoptionalMethodology version of the liquidity score.
liquidity_score_updated_atdate-timenullableoptionalWhen the liquidity score was calculated.
score_probesarray of objectsoptional4 child fields
sideenumnotional_usdstringimpact_bpsstringnullablefilledbooleannullable
last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
modelenumvenue_idstringStable CantonCap venue ID, such as
templeorcantex.market_idstringStable opaque CantonCap market ID, prefixed
mkt_.pool_idstringoptionalStable opaque CantonCap pool ID, prefixed
pool_.reserve_xdecimal stringoptionalreserve_ydecimal stringoptionalmid_pricedecimal stringnullableoptionalMidpoint between the best bid and the best ask.
reserve_x_value_usddecimal stringnullableoptionalreserve_y_value_usddecimal stringnullableoptionaltvl_ccdecimal stringnullableoptionalliquidity_usddecimal stringnullableoptionalPool liquidity in USD: the value locked in the asset's eligible AMM pools.
curve_typestringoptionalcurve_parametersmapoptionalfee_bpsintegeroptionalfee_ratedecimal stringnullableoptionalprobesarray of objects6 child fields
sideenumnotional_usddecimal stringbase_amountdecimal stringnullablequote_amountdecimal stringnullableexecutable_pricedecimal stringnullableprice_impact_bpsdecimal stringnullable
asset_probesarray of objectsoptional7 child fields
input_asset_idstringoutput_asset_idstringnotional_usddecimal stringnullableamount_indecimal stringamount_outdecimal stringeffective_pricedecimal stringprice_impact_pctstringnullable
synthetic_depthobjectoptionalSynthetic ±2% depth calculated by the worker from stored pool state (pool-synthetic-depth-v1). It is a modelled curve measurement, not an order book, a venue quote or an execution guarantee, and is distinct from liquidity_score. Network, Connect, wallet and routing charges are excluded.
33 child fields
originenummethodology_versionenumband_bpsintegerreference_pricedecimal stringnullableCommon marginal pool price in quote per base, the sum of quote reserves over the sum of base reserves of the included pools.
bid_boundary_pricedecimal stringnullablereference_price × (1 − band_bps / 10,000).
ask_boundary_pricedecimal stringnullablereference_price × (1 + band_bps / 10,000).
bid_depth_2pct_basedecimal stringnullableBase sold, fee included, until every included pool's marginal price falls to the bid boundary.
bid_depth_2pct_quotedecimal stringnullableQuote received for that sale.
bid_depth_2pct_usddecimal stringnullablebid_depth_2pct_quote × quote_usd_price. Null with usd_unavailable_reason when the conversion is missing or stale.
ask_depth_2pct_basedecimal stringnullableBase bought until every included pool's marginal price rises to the ask boundary.
ask_depth_2pct_quotedecimal stringnullableQuote paid, fee included, for that purchase.
ask_depth_2pct_usddecimal stringnullableask_depth_2pct_quote × quote_usd_price.
quote_usd_pricedecimal stringnullableThe quote asset's public USD reference price used for conversion.
quote_usd_price_observed_atdate-timenullableunavailable_reasonenumnullableWhy a synthetic depth value is null. A measured zero is returned as 0, never as a reason.
usd_unavailable_reasonenumnullableWhy a synthetic depth value is null. A measured zero is returned as 0, never as a reason.
completenessenumPartial when an eligible pool of the market is excluded; its reason is listed in pools.
eligible_pool_countintegerincluded_pool_countintegerpoolsarray of objects12 child fields
pool_idstringStable opaque CantonCap pool ID, prefixed
pool_.includedbooleanunavailable_reasonenumnullableWhy a synthetic depth value is null. A measured zero is returned as 0, never as a reason.
reference_pricedecimal stringnullableThe pool's own reserve-ratio price, quote per base.
fee_ratedecimal stringnullableretained_fee_sharedecimal stringnullableShare of the pool fee credited back to the pool reserves; the rest leaves the pool.
bid_depth_2pct_basedecimal stringnullableBase this pool takes, fee included, until its price reaches the common bid boundary.
bid_depth_2pct_quotedecimal stringnullableQuote this pool pays for that base.
ask_depth_2pct_basedecimal stringnullableBase this pool releases until its price reaches the common ask boundary.
ask_depth_2pct_quotedecimal stringnullableQuote, fee included, this pool takes for that base.
state_observed_atdate-timenullablestate_source_timestampdate-timenullable
calculated_atdate-timenullable
spread_bpsdecimal stringnullableoptionalbest_biddecimal stringnullableoptionalBest bid price, in quote-asset units.
best_askdecimal stringnullableoptionalBest ask price, in quote-asset units.
bid_depthmapoptionalask_depthmapoptionalavailable_quantity_excludes_own_ordersbooleanoptionalTrue when the source excludes its own account's resting orders from the available quantities.
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 | Market not foundThe market 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. |
Get the latest venue ticker
https://api.cantoncap.cc/v1/markets/{market_id}/tickerParameters
market_idstringpathrequiredStable opaque CantonCap market ID.
If-None-MatchstringheaderoptionalReturn 304 when this entity tag matches the current representation.
Request
curl -s "https://api.cantoncap.cc/v1/markets/mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21/ticker" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Latest market ticker. 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",
"liquidity_score": 82.4,
"liquidity_score_methodology": "execution-impact-v1",
"liquidity_score_updated_at": "2026-10-11T13:55:00.000Z",
"last_updated_at": "2026-10-11T14:00:00.000Z",
"venue_id": "temple",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"price_origin": "venue_book",
"last_price": "0.1586",
"best_bid": "0.1583",
"best_ask": "0.1586",
"mid_price": "0.15845",
"volume_base_24h": "8342210.4",
"volume_quote_24h": "1320455.18",
"trade_count_24h": 1284,
"open_24h": "0.1612",
"high_24h": "0.1630",
"low_24h": "0.1549",
"close_24h": "0.1584",
"vwap_24h": "0.1590",
"price_change_abs_24h": "-0.0030",
"reference_price_usd": "0.1584",
"price_change_24h_pct": "-1.84",
"volume_usd_24h": "1320455.18"
}
}dataobject24 child fields
market_categoryenumnullableoptionalDisplay category of the market.
liquidity_scorenumbernullableoptionalDisplayed liquidity score, 0 to 100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.
liquidity_score_methodologyenumoptionalMethodology version of the liquidity score.
liquidity_score_updated_atdate-timenullableoptionalWhen the liquidity score was calculated.
last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
venue_idstringStable CantonCap venue ID, such as
templeorcantex.market_idstringStable opaque CantonCap market ID, prefixed
mkt_.price_originenumWhere the ticker price comes from.
last_pricedecimal stringnullableLast traded price, in quote-asset units.
best_biddecimal stringnullableBest bid price, in quote-asset units.
best_askdecimal stringnullableBest ask price, in quote-asset units.
mid_pricedecimal stringnullableMidpoint between the best bid and the best ask.
volume_base_24hdecimal stringnullable24-hour volume in base-asset units.
volume_quote_24hdecimal stringnullable24-hour volume in quote-asset units.
trade_count_24hintegernullableTrades in the last 24 hours. Null when unavailable.
open_24hdecimal stringnullableOpening price of the rolling 24-hour window.
high_24hdecimal stringnullableHighest price in the last 24 hours.
low_24hdecimal stringnullableLowest price in the last 24 hours.
close_24hdecimal stringnullableClosing price of the rolling 24-hour window.
vwap_24hdecimal stringnullableVolume-weighted average price over 24 hours.
price_change_abs_24hdecimal stringnullable24-hour price change in quote-asset units.
reference_price_usddecimal stringnullableReference price in USD. Null when unavailable.
price_change_24h_pctdecimal stringnullable24-hour price change in percentage points.
volume_usd_24hdecimal stringnullable24-hour volume in USD. Null when unavailable.
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 | Ticker not foundThe market has no published ticker. |
| 429 | rate_limited | The request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds. |
Get the latest public order-book snapshot
https://api.cantoncap.cc/v1/markets/{market_id}/orderbookReturns the public venue feed. Available quantities may exclude the source account’s own resting orders; available_quantity_excludes_own_orders identifies that convention. Full-depth levels are retained for 30 days; a market with no book snapshot observed in the last 29 days has no current order book and returns 404 not_found until the venue sends a new one.
Parameters
market_idstringpathrequiredStable opaque CantonCap market ID.
depthintegerqueryoptionalMaximum number of price levels to return.
If-None-MatchstringheaderoptionalReturn 304 when this entity tag matches the current representation.
Request
curl -s "https://api.cantoncap.cc/v1/markets/mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21/orderbook?depth=20" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Latest order-book snapshot. 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": {
"last_updated_at": "2026-10-11T14:00:00.000Z",
"venue_id": "temple",
"network": "mainnet",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"sequence": "184223",
"bids": [
{
"price": "0.1584",
"amount": "250000",
"total_amount": "480000",
"available_amount": "120000",
"cumulative_amount": "480000",
"order_count": 4
}
],
"asks": [
{
"price": "0.1584",
"amount": "250000",
"total_amount": "480000",
"available_amount": "120000",
"cumulative_amount": "480000",
"order_count": 4
}
],
"best_bid": "0.1583",
"best_ask": "0.1586",
"spread": "0.0003",
"available_quantity_excludes_own_orders": false
}
}dataobject23 child fields
last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
venue_idstringStable CantonCap venue ID, such as
templeorcantex.networkenumCanton network the record belongs to.
market_idstringStable opaque CantonCap market ID, prefixed
mkt_.sequencestringbidsarray of objectsBid levels, best first.
6 child fields
pricedecimal stringPrice as an exact decimal string.
amountdecimal stringtotal_amountdecimal stringavailable_amountdecimal stringcumulative_amountdecimal stringorder_countintegernullable
asksarray of objectsAsk levels, best first.
6 child fields
pricedecimal stringPrice as an exact decimal string.
amountdecimal stringtotal_amountdecimal stringavailable_amountdecimal stringcumulative_amountdecimal stringorder_countintegernullable
best_biddecimal stringnullableBest bid price, in quote-asset units.
best_askdecimal stringnullableBest ask price, in quote-asset units.
spreaddecimal stringnullableavailable_quantity_excludes_own_ordersbooleanTrue when the source excludes its own account's resting orders from the available quantities.
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 | Order book not foundNo book snapshot was observed in the last 29 days, or the market is unknown. |
| 422 | unsupported_capability | Order books are not available for this market modelThe market is an AMM or hybrid market, not an order book. |
| 429 | rate_limited | The request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds. |
Get public market trades and coverage
https://api.cantoncap.cc/v1/markets/{market_id}/tradesParameters
market_idstringpathrequiredStable opaque CantonCap market ID.
time_startdate-timequeryoptionalInclusive UTC range start; defaults to 24 hours before time_end. At most 31 days per request, further bounded by plan history depth.
time_enddate-timequeryoptionalExclusive UTC range end; defaults to request time and is pinned by continuation cursors.
limitintegerqueryoptionalMaximum page size, bounded by the caller's plan.
cursorstringqueryoptionalOpaque continuation cursor from the previous response.
Request
curl -s "https://api.cantoncap.cc/v1/markets/mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21/trades?limit=50" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Canonical trade collection.
{
"status": {
"timestamp": "2026-10-11T14:00:00.000Z",
"elapsed_ms": 18,
"error_code": 0,
"error_message": null,
"request_id": "req_7Hk2pQ9xLm"
},
"data": [
{
"last_updated_at": "2026-10-11T14:00:00.000Z",
"trade_id": "trd_8d1c5b9e2a7f4c3e9b0a6d2f8c4e1a57",
"venue_id": "temple",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"trade_timestamp": "2026-10-11T13:58:41.204Z",
"side": "buy",
"price": "0.1584",
"base_amount": "2500",
"quote_amount": "396.25",
"fee_amounts": [
"1250.5"
]
}
],
"pagination": {
"next_cursor": "eyJ2IjoxLCJvIjoyNX0"
}
}dataarray of objects10 child fields
last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
trade_idstringStable CantonCap trade ID, prefixed
trd_.venue_idstringStable CantonCap venue ID, such as
templeorcantex.market_idstringStable opaque CantonCap market ID, prefixed
mkt_.trade_timestampdate-timesideenumpricedecimal stringPrice as an exact decimal string.
base_amountdecimal stringquote_amountdecimal stringfee_amountsarray of decimal strings
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.Cache-Controlprivate, no-cache: shared caches must not store the answer.VaryX-API-Key: the answer varies by key.
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. |
| 403 | quota_exceeded | The requested history exceeds the API plan limitThe range reaches further back than the plan's history depth. |
| 429 | rate_limited | The request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds. |
Get venue or CantonCap-rollup candles
https://api.cantoncap.cc/v1/markets/{market_id}/ohlcvStored venue candles, including a venue's forming bar, and closed CantonCap rollup bars built by background workers from canonical trades; no candle is calculated at request time. A projection that is not yet published, is behind the requested range or was invalidated by a publication-policy change returns a retryable 503 source_unavailable. Cursors from earlier releases return 400 invalid_request.
Parameters
market_idstringpathrequiredStable opaque CantonCap market ID.
intervalenumqueryoptionalUTC-aligned candle duration or historical quote sampling interval. Results are newest first; missing buckets are omitted. Quote sampling selects the latest eligible measurement in each interval.
time_startdate-timequeryoptionalInclusive UTC range start; defaults to 24 hours before time_end. At most 31 days per request, further bounded by plan history depth.
time_enddate-timequeryoptionalExclusive UTC range end; defaults to request time and is pinned by continuation cursors.
limitintegerqueryoptionalMaximum page size, bounded by the caller's plan.
cursorstringqueryoptionalOpaque continuation cursor from the previous response.
Request
curl -s "https://api.cantoncap.cc/v1/markets/mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21/ohlcv?interval=15m&limit=96" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Candle collection.
{
"status": {
"timestamp": "2026-10-11T14:00:00.000Z",
"elapsed_ms": 18,
"error_code": 0,
"error_message": null,
"request_id": "req_7Hk2pQ9xLm"
},
"data": [
{
"last_updated_at": "2026-10-11T14:00:00.000Z",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"interval": "1h",
"open_time": "2026-10-11T13:00:00.000Z",
"close_time": "2026-10-11T14:00:00.000Z",
"open": "0.1561",
"high": "0.1602",
"low": "0.1549",
"close": "0.1584",
"volume_base": "512340.2",
"volume_quote": "81255.62",
"trade_count": 1284,
"volume_method": "observed_trades",
"complete": true
}
],
"pagination": {
"next_cursor": "eyJ2IjoxLCJvIjoyNX0"
}
}dataarray of objects14 child fields
last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
market_idstringStable opaque CantonCap market ID, prefixed
mkt_.intervalenumSampling interval of the series.
open_timedate-timeStart of the period, inclusive, UTC.
close_timedate-timeEnd of the period, exclusive, UTC.
opendecimal stringFirst price in the period.
highdecimal stringHighest price in the period.
lowdecimal stringLowest price in the period.
closedecimal stringLast price in the period.
volume_basedecimal stringvolume_quotedecimal stringnullabletrade_countintegernullablevolume_methodenumcompletebooleanTrue once the period has ended. A complete period can still be corrected later.
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.Cache-Controlprivate, no-cache: shared caches must not store the answer.VaryX-API-Key: the answer varies by key.
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. |
| 403 | quota_exceeded | The requested history exceeds the API plan limitThe range reaches further back than the plan's history depth. |
| 429 | rate_limited | The request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds. |
| 503 | source_unavailable | Stored candles are temporarily unavailableThe candle projection is not yet published, is behind the range, or was invalidated. Retryable. |
Get the latest model-specific liquidity snapshot
https://api.cantoncap.cc/v1/markets/{market_id}/liquidityOrder-book liquidity is computed from a book snapshot observed in the last 29 days (full-depth levels are retained for 30 days). A market with no snapshot inside that window has no liquidity and returns 404 not_found.
Parameters
market_idstringpathrequiredStable opaque CantonCap market ID.
If-None-MatchstringheaderoptionalReturn 304 when this entity tag matches the current representation.
Request
curl -s "https://api.cantoncap.cc/v1/markets/mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21/liquidity" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Model-specific liquidity snapshot. 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": {
"liquidity_score": 82.4,
"liquidity_score_methodology": "execution-impact-v1",
"liquidity_score_updated_at": "2026-10-11T13:55:00.000Z",
"score_probes": [
{
"side": "buy",
"notional_usd": "10000",
"impact_bps": "41.2",
"filled": true
}
],
"last_updated_at": "2026-10-11T14:00:00.000Z",
"model": "order_book",
"venue_id": "temple",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"spread_bps": "18.9",
"best_bid": "0.1583",
"best_ask": "0.1586",
"bid_depth": {
"50": "61200.4",
"200": "182400.55"
},
"ask_depth": {
"50": "58840.1",
"200": "176920.30"
},
"probes": [
{
"side": "buy",
"notional_usd": "10000",
"base_amount": "2500",
"quote_amount": "396.25",
"executable_price": "0.1589",
"price_impact_bps": "41.2"
}
],
"available_quantity_excludes_own_orders": false
}
}dataobject79 child fields
liquidity_scorenumbernullableoptionalDisplayed liquidity score, 0 to 100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.
liquidity_score_methodologyenumoptionalMethodology version of the liquidity score.
liquidity_score_updated_atdate-timenullableoptionalWhen the liquidity score was calculated.
score_probesarray of objectsoptional4 child fields
sideenumnotional_usdstringimpact_bpsstringnullablefilledbooleannullable
last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
modelenumvenue_idstringStable CantonCap venue ID, such as
templeorcantex.market_idstringStable opaque CantonCap market ID, prefixed
mkt_.pool_idstringoptionalStable opaque CantonCap pool ID, prefixed
pool_.reserve_xdecimal stringoptionalreserve_ydecimal stringoptionalmid_pricedecimal stringnullableoptionalMidpoint between the best bid and the best ask.
reserve_x_value_usddecimal stringnullableoptionalreserve_y_value_usddecimal stringnullableoptionaltvl_ccdecimal stringnullableoptionalliquidity_usddecimal stringnullableoptionalcurve_typestringoptionalcurve_parametersmapoptionalfee_bpsintegeroptionalfee_ratedecimal stringnullableoptionalprobesarray of objects6 child fields
sideenumnotional_usddecimal stringbase_amountdecimal stringnullablequote_amountdecimal stringnullableexecutable_pricedecimal stringnullableprice_impact_bpsdecimal stringnullable
asset_probesarray of objectsoptional7 child fields
input_asset_idstringoutput_asset_idstringnotional_usddecimal stringnullableamount_indecimal stringamount_outdecimal stringeffective_pricedecimal stringprice_impact_pctstringnullable
synthetic_depthobjectoptionalSynthetic ±2% depth calculated by the worker from stored pool state (pool-synthetic-depth-v1). It is a modelled curve measurement, not an order book, a venue quote or an execution guarantee, and is distinct from liquidity_score. Network, Connect, wallet and routing charges are excluded.
33 child fields
originenummethodology_versionenumband_bpsintegerreference_pricedecimal stringnullableCommon marginal pool price in quote per base, the sum of quote reserves over the sum of base reserves of the included pools.
bid_boundary_pricedecimal stringnullablereference_price × (1 − band_bps / 10,000).
ask_boundary_pricedecimal stringnullablereference_price × (1 + band_bps / 10,000).
bid_depth_2pct_basedecimal stringnullableBase sold, fee included, until every included pool's marginal price falls to the bid boundary.
bid_depth_2pct_quotedecimal stringnullableQuote received for that sale.
bid_depth_2pct_usddecimal stringnullablebid_depth_2pct_quote × quote_usd_price. Null with usd_unavailable_reason when the conversion is missing or stale.
ask_depth_2pct_basedecimal stringnullableBase bought until every included pool's marginal price rises to the ask boundary.
ask_depth_2pct_quotedecimal stringnullableQuote paid, fee included, for that purchase.
ask_depth_2pct_usddecimal stringnullableask_depth_2pct_quote × quote_usd_price.
quote_usd_pricedecimal stringnullableThe quote asset's public USD reference price used for conversion.
quote_usd_price_observed_atdate-timenullableunavailable_reasonenumnullableWhy a synthetic depth value is null. A measured zero is returned as 0, never as a reason.
usd_unavailable_reasonenumnullableWhy a synthetic depth value is null. A measured zero is returned as 0, never as a reason.
completenessenumPartial when an eligible pool of the market is excluded; its reason is listed in pools.
eligible_pool_countintegerincluded_pool_countintegerpoolsarray of objects12 child fields
pool_idstringStable opaque CantonCap pool ID, prefixed
pool_.includedbooleanunavailable_reasonenumnullableWhy a synthetic depth value is null. A measured zero is returned as 0, never as a reason.
reference_pricedecimal stringnullableThe pool's own reserve-ratio price, quote per base.
fee_ratedecimal stringnullableretained_fee_sharedecimal stringnullableShare of the pool fee credited back to the pool reserves; the rest leaves the pool.
bid_depth_2pct_basedecimal stringnullableBase this pool takes, fee included, until its price reaches the common bid boundary.
bid_depth_2pct_quotedecimal stringnullableQuote this pool pays for that base.
ask_depth_2pct_basedecimal stringnullableBase this pool releases until its price reaches the common ask boundary.
ask_depth_2pct_quotedecimal stringnullableQuote, fee included, this pool takes for that base.
state_observed_atdate-timenullablestate_source_timestampdate-timenullable
calculated_atdate-timenullable
spread_bpsdecimal stringnullableoptionalbest_biddecimal stringnullableoptionalBest bid price, in quote-asset units.
best_askdecimal stringnullableoptionalBest ask price, in quote-asset units.
bid_depthmapoptionalask_depthmapoptionalavailable_quantity_excludes_own_ordersbooleanoptionalTrue when the source excludes its own account's resting orders from the available quantities.
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 | Liquidity not foundNo liquidity snapshot is available; an order book needs a snapshot from the last 29 days. |
| 429 | rate_limited | The request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds. |