API Reference
Venues
Venue metadata, capabilities, and market coverage.
Every endpoint here authenticates with X-API-Key, answers in the standard envelope and fails with the standard error body.
List venues and current data availability
https://api.cantoncap.cc/v1/venuesParameters
If-None-MatchstringheaderoptionalReturn 304 when this entity tag matches the current representation.
Request
curl -s "https://api.cantoncap.cc/v1/venues" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Venue 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": [
{
"venue_id": "temple",
"name": "Canton Coin",
"market_model": "order_book",
"last_updated_at": "2026-10-11T14:00:00.000Z",
"stats": {
"network": "mainnet",
"volume_24h_usd": "1320455.18",
"liquidity_usd": "4120334.10",
"trade_count_24h": 1284,
"trade_count_24h_metadata": {
"as_of": "2026-10-11T14:00:00.000Z",
"retained": true
},
"active_markets": 12,
"last_updated_at": "2026-10-11T14:00:00.000Z"
}
}
]
}dataarray of objects32 child fields
venue_idstringStable CantonCap venue ID, such as
templeorcantex.namestringDisplay name. Null when none is published.
market_modelenumHow the market trades:
amm,order_book,order_book_rfqorhybrid.last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
statsobjectnullableVenue statistics. Null when none are available; independent of the profile's timestamp.
27 child fields
networkenumCanton network the record belongs to.
volume_24h_usddecimal stringnullable24-hour volume in USD; null when unavailable.
liquidity_usddecimal stringnullabletrade_count_24hintegernullableTrades in the last 24 hours. Null when unavailable.
trade_count_24h_metadataobjectoptionalWhen one venue statistic was measured. retained is true when the newest statistics refresh omitted it and the latest usable earlier value is shown at its own time; judge the statistic's age by as_of, not by the statistics object's last_updated_at. as_of is null when the statistic is unknown.
2 child fields
as_ofdate-timenullableEnd of the window the snapshot covers.
retainedboolean
active_marketsintegernullableMarkets currently active.
last_updated_atdate-timeThe venue's latest statistics refresh. A statistic kept from an earlier refresh does not move it back; it reports its own time in volume_24h_usd_metadata.as_of or trade_count_24h_metadata.as_of.
volume_24h_usd_metadataobjectoptional17 child fields
as_ofdate-timenullableEnd of the window the snapshot covers.
selection_methodenumnullableoptionalActual selected method. The legacy method field keeps its reported/trades enum.
methodology_versionstringnullableinterpretationenumoptionalCompleteness applies to the measurement's own window, not the current wall clock. A zero is a value, not unavailable activity.
coverage_detailobjectoptionalCounts come from the selected evidence, never ticker nulls. Null means the detail was not recorded. Missing activity has no native or USD volume; unvalued activity has native volume but no selected USD. Partial and incomplete-time counts concern included markets and may overlap. Retained is null when retention status was not established. No restricted market identities are exposed.
12 child fields
unitenumwindowenumRolling window the values cover.
starts_atdate-timenullableStart of the window the snapshot covers.
ends_atdate-timenullablecovered_secondsnumbernullableSeconds of the window the observations cover.
retainedbooleannullableeligible_market_countintegernullableincluded_market_countintegernullablemissing_activity_market_countintegernullableunvalued_market_countintegernullablepartial_market_countintegernullableincomplete_time_market_countintegernullable
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. |
| 429 | rate_limited | The request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds. |
Get venue detail and source-reported statistics
https://api.cantoncap.cc/v1/venues/{venue_id}Parameters
venue_idenumpathrequiredStable CantonCap venue ID.
If-None-MatchstringheaderoptionalReturn 304 when this entity tag matches the current representation.
Request
curl -s "https://api.cantoncap.cc/v1/venues/temple" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Venue detail. 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": {
"venue_id": "temple",
"name": "Canton Coin",
"market_model": "order_book",
"last_updated_at": "2026-10-11T14:00:00.000Z",
"stats": {
"network": "mainnet",
"volume_24h_usd": "1320455.18",
"liquidity_usd": "4120334.10",
"trade_count_24h": 1284,
"trade_count_24h_metadata": {
"as_of": "2026-10-11T14:00:00.000Z",
"retained": true
},
"active_markets": 12,
"last_updated_at": "2026-10-11T14:00:00.000Z"
},
"description": "The native utility token of the Canton Network.",
"website_url": "https://www.example.com",
"logo_url": "https://assets.example.com/logo.png",
"documentation_url": "https://docs.example.com",
"social_links": [
{
"label": "Website",
"url": "https://www.example.com"
}
],
"fee_documentation_url": "https://docs.example.com/fees"
}
}dataobject40 child fields
venue_idstringStable CantonCap venue ID, such as
templeorcantex.namestringDisplay name. Null when none is published.
market_modelenumHow the market trades:
amm,order_book,order_book_rfqorhybrid.last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
statsobjectnullableVenue statistics. Null when none are available; independent of the profile's timestamp.
27 child fields
networkenumCanton network the record belongs to.
volume_24h_usddecimal stringnullable24-hour volume in USD; null when unavailable.
liquidity_usddecimal stringnullabletrade_count_24hintegernullableTrades in the last 24 hours. Null when unavailable.
trade_count_24h_metadataobjectoptionalWhen one venue statistic was measured. retained is true when the newest statistics refresh omitted it and the latest usable earlier value is shown at its own time; judge the statistic's age by as_of, not by the statistics object's last_updated_at. as_of is null when the statistic is unknown.
2 child fields
as_ofdate-timenullableEnd of the window the snapshot covers.
retainedboolean
active_marketsintegernullableMarkets currently active.
last_updated_atdate-timeThe venue's latest statistics refresh. A statistic kept from an earlier refresh does not move it back; it reports its own time in volume_24h_usd_metadata.as_of or trade_count_24h_metadata.as_of.
volume_24h_usd_metadataobjectoptional17 child fields
as_ofdate-timenullableEnd of the window the snapshot covers.
selection_methodenumnullableoptionalActual selected method. The legacy method field keeps its reported/trades enum.
methodology_versionstringnullableinterpretationenumoptionalCompleteness applies to the measurement's own window, not the current wall clock. A zero is a value, not unavailable activity.
coverage_detailobjectoptionalCounts come from the selected evidence, never ticker nulls. Null means the detail was not recorded. Missing activity has no native or USD volume; unvalued activity has native volume but no selected USD. Partial and incomplete-time counts concern included markets and may overlap. Retained is null when retention status was not established. No restricted market identities are exposed.
12 child fields
unitenumwindowenumRolling window the values cover.
starts_atdate-timenullableStart of the window the snapshot covers.
ends_atdate-timenullablecovered_secondsnumbernullableSeconds of the window the observations cover.
retainedbooleannullableeligible_market_countintegernullableincluded_market_countintegernullablemissing_activity_market_countintegernullableunvalued_market_countintegernullablepartial_market_countintegernullableincomplete_time_market_countintegernullable
descriptionstringnullableApproved description. Null when none is published.
website_urlURI stringnullableOfficial website. Null when none is published.
logo_urlURI stringnullableLogo image URL. Null when none is published.
documentation_urlURI stringnullableOfficial documentation. Null when none is published.
social_linksarray of objectsOfficial social profiles, each a label and a URL.
2 child fields
labelstringurlURI string
fee_documentation_urlURI stringnullableThe venue's published fee documentation. Null when none is known.
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 | Venue not foundThe venue 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. |
List markets supplied by a venue
https://api.cantoncap.cc/v1/venues/{venue_id}/marketsParameters
venue_idenumpathrequiredStable CantonCap venue ID.
networkenumqueryoptionalCanton network to read.
modelenumqueryoptionalOnly markets of this market model.
categoryenumqueryoptionalOnly markets of this display category.
quote_asset_idstringqueryoptionalOnly markets quoted in this asset.
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/venues/temple/markets?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",
"market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
"venue": {
"venue_id": "temple",
"name": "Canton Coin"
},
"network": "mainnet",
"orientation": "market",
"base_asset": {
"asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
"name": "Canton Coin",
"symbol": "CC"
},
"quote_asset": {
"asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
"name": "Canton Coin",
"symbol": "CC"
},
"market_model": "order_book",
"status": "active",
"pool_ids": [
"pool_3e7c1a9b5d2f4c6e8a0b1d3f5e7c9a12"
],
"ticker": {
"price": "0.1584",
"price_usd": "1.25",
"price_origin": "venue_book",
"volume_base_24h": "8342210.4",
"volume_quote_24h": "1320455.18",
"volume_usd_24h": "1320455.18",
"last_updated_at": "2026-10-11T14:00:00.000Z"
},
"liquidity": {
"model": "order_book",
"liquidity_score": 82.4,
"liquidity_score_methodology": "execution-impact-v1",
"liquidity_score_updated_at": "2026-10-11T13:55:00.000Z",
"bid_depth_2pct_usd": "182400.55",
"ask_depth_2pct_usd": "176920.30",
"spread_bps": "18.9",
"depth_origin": "native_order_book",
"last_updated_at": "2026-10-11T14:00:00.000Z"
},
"last_updated_at": "2026-10-11T14:00:00.000Z"
}
],
"pagination": {
"next_cursor": "eyJ2IjoxLCJvIjoyNX0"
}
}dataarray of objects146 child fields
activity_24hobjectnullableoptionalSelected public 24-hour activity, using the same current selection as /v1/activity/market/{market_id}?window=24h&limit=1. Each measurement keeps its own as_of, methods and coverage, including retained older values. volume_usd is in USD; base and quote quantities keep their asset units. Ticker measurements remain separate source fields. Null means no eligible activity snapshot; a snapshot may itself have unknown or partial measurements. Older servers omit this field.
105 child fields
entity_kindenumKind of entity the activity describes.
entity_idstringID of the entity the activity describes.
networkenumCanton network the record belongs to.
windowenumRolling window the values cover.
as_ofstringEnd of the window the snapshot covers.
starts_atstringStart of the window the snapshot covers.
methodology_versionstringmarketsarray of objectsMarkets included in the snapshot.
5 child fields
market_idstringStable opaque CantonCap market ID, prefixed
mkt_.venue_idstringStable CantonCap venue ID, such as
templeorcantex.networkenumCanton network the record belongs to.
base_asset_idstringAsset ID of the base asset.
quote_asset_idstringAsset ID of the quote asset.
measurementsobjectEach measurement with its own value, coverage and methods.
91 child fields
volume_baseobject12 child fields
market_coverageobjectoptionalFor selected USD volume only: counts over the same eligible market population and measurement window. Older snapshots omit it. Native quantities are never relabelled as USD.
6 child fields
eligible_market_countintegerincluded_market_countintegermissing_activity_market_countintegerunvalued_market_countintegerpartial_market_countintegerincomplete_time_market_countinteger
valuedecimal stringnullableThe measured value as an exact decimal string. Null when unavailable; never zero for unknown.
completenessenumcomplete,partialorunknown.covered_secondsnumberSeconds of the window the observations cover.
methodsarray of stringsMethods behind the value.
as_ofstringoptionalEnd of the window this value covers. Equals the snapshot as_of, except in a current read (no time_start or time_end, limit 1): when the newest snapshot has no value for this measurement, the latest usable value is kept with its own earlier as_of, coverage and methods. It is the window total at that time, not a complete current window.
volume_quoteobject12 child fields
market_coverageobjectoptionalFor selected USD volume only: counts over the same eligible market population and measurement window. Older snapshots omit it. Native quantities are never relabelled as USD.
6 child fields
eligible_market_countintegerincluded_market_countintegermissing_activity_market_countintegerunvalued_market_countintegerpartial_market_countintegerincomplete_time_market_countinteger
valuedecimal stringnullableThe measured value as an exact decimal string. Null when unavailable; never zero for unknown.
completenessenumcomplete,partialorunknown.covered_secondsnumberSeconds of the window the observations cover.
methodsarray of stringsMethods behind the value.
as_ofstringoptionalEnd of the window this value covers. Equals the snapshot as_of, except in a current read (no time_start or time_end, limit 1): when the newest snapshot has no value for this measurement, the latest usable value is kept with its own earlier as_of, coverage and methods. It is the window total at that time, not a complete current window.
volume_nativeobject12 child fields
market_coverageobjectoptionalFor selected USD volume only: counts over the same eligible market population and measurement window. Older snapshots omit it. Native quantities are never relabelled as USD.
6 child fields
eligible_market_countintegerincluded_market_countintegermissing_activity_market_countintegerunvalued_market_countintegerpartial_market_countintegerincomplete_time_market_countinteger
valuedecimal stringnullableThe measured value as an exact decimal string. Null when unavailable; never zero for unknown.
completenessenumcomplete,partialorunknown.covered_secondsnumberSeconds of the window the observations cover.
methodsarray of stringsMethods behind the value.
as_ofstringoptionalEnd of the window this value covers. Equals the snapshot as_of, except in a current read (no time_start or time_end, limit 1): when the newest snapshot has no value for this measurement, the latest usable value is kept with its own earlier as_of, coverage and methods. It is the window total at that time, not a complete current window.
volume_usd_reportedobject12 child fields
market_coverageobjectoptionalFor selected USD volume only: counts over the same eligible market population and measurement window. Older snapshots omit it. Native quantities are never relabelled as USD.
6 child fields
eligible_market_countintegerincluded_market_countintegermissing_activity_market_countintegerunvalued_market_countintegerpartial_market_countintegerincomplete_time_market_countinteger
valuedecimal stringnullableUSD volume as the venues report it.
completenessenumcomplete,partialorunknown.covered_secondsnumberSeconds of the window the observations cover.
methodsarray of stringsMethods behind the value.
as_ofstringoptionalEnd of the window this value covers. Equals the snapshot as_of, except in a current read (no time_start or time_end, limit 1): when the newest snapshot has no value for this measurement, the latest usable value is kept with its own earlier as_of, coverage and methods. It is the window total at that time, not a complete current window.
volume_usd_derivedobject12 child fields
market_coverageobjectoptionalFor selected USD volume only: counts over the same eligible market population and measurement window. Older snapshots omit it. Native quantities are never relabelled as USD.
6 child fields
eligible_market_countintegerincluded_market_countintegermissing_activity_market_countintegerunvalued_market_countintegerpartial_market_countintegerincomplete_time_market_countinteger
valuedecimal stringnullableUSD volume derived with CCXT exchange prices, kept separate from the reported figure.
completenessenumcomplete,partialorunknown.covered_secondsnumberSeconds of the window the observations cover.
methodsarray of stringsMethods behind the value.
as_ofstringoptionalEnd of the window this value covers. Equals the snapshot as_of, except in a current read (no time_start or time_end, limit 1): when the newest snapshot has no value for this measurement, the latest usable value is kept with its own earlier as_of, coverage and methods. It is the window total at that time, not a complete current window.
volume_usdobject12 child fields
market_coverageobjectoptionalFor selected USD volume only: counts over the same eligible market population and measurement window. Older snapshots omit it. Native quantities are never relabelled as USD.
6 child fields
eligible_market_countintegerincluded_market_countintegermissing_activity_market_countintegerunvalued_market_countintegerpartial_market_countintegerincomplete_time_market_countinteger
valuedecimal stringnullableThe measured value as an exact decimal string. Null when unavailable; never zero for unknown.
completenessenumcomplete,partialorunknown.covered_secondsnumberSeconds of the window the observations cover.
methodsarray of stringsMethods behind the value.
as_ofstringoptionalEnd of the window this value covers. Equals the snapshot as_of, except in a current read (no time_start or time_end, limit 1): when the newest snapshot has no value for this measurement, the latest usable value is kept with its own earlier as_of, coverage and methods. It is the window total at that time, not a complete current window.
execution_countobject12 child fields
market_coverageobjectoptionalFor selected USD volume only: counts over the same eligible market population and measurement window. Older snapshots omit it. Native quantities are never relabelled as USD.
6 child fields
eligible_market_countintegerincluded_market_countintegermissing_activity_market_countintegerunvalued_market_countintegerpartial_market_countintegerincomplete_time_market_countinteger
valuedecimal stringnullableThe measured value as an exact decimal string. Null when unavailable; never zero for unknown.
completenessenumcomplete,partialorunknown.covered_secondsnumberSeconds of the window the observations cover.
methodsarray of stringsMethods behind the value.
as_ofstringoptionalEnd of the window this value covers. Equals the snapshot as_of, except in a current read (no time_start or time_end, limit 1): when the newest snapshot has no value for this measurement, the latest usable value is kept with its own earlier as_of, coverage and methods. It is the window total at that time, not a complete current window.
market_categoryenumoptionalDisplay category of the market.
market_idstringStable opaque CantonCap market ID, prefixed
mkt_.venueobject2 child fields
venue_idstringStable CantonCap venue ID, such as
templeorcantex.namestringDisplay name. Null when none is published.
networkenumCanton network the record belongs to.
orientationenumoptionalmarket: base_asset and quote_asset are the venue market's. inverted: they are swapped (orientation=requested and a requested asset is the market's quote), so the ticker's price, base and quote volumes, and bid and ask depth are the market's read from the other side. activity_24h keeps the market's orientation. Older servers omit this field.
base_assetobject3 child fields
asset_idstringStable opaque CantonCap asset ID, prefixed
ast_.namestringnullableDisplay name. Null when none is published.
symbolstringnullableTicker symbol. Null when none is published.
quote_assetobject3 child fields
asset_idstringStable opaque CantonCap asset ID, prefixed
ast_.namestringnullableDisplay name. Null when none is published.
symbolstringnullableTicker symbol. Null when none is published.
market_modelenumHow the market trades:
amm,order_book,order_book_rfqorhybrid.statusenumLifecycle status of the record.
pool_idsarray of stringsPool IDs behind this market.
tickerobjectnullableLatest ticker of the market. Null when none is available.
7 child fields
pricedecimal stringnullablePrice in quote-asset units per base asset.
price_usddecimal stringnullableoptionalUSD price of one unit of the base asset as returned, through the quote asset's latest USD reference price: price × the quote's USD price, or for an inverted pair the original base's USD price ÷ the market's price, in exact decimals truncated to 38 places. Null when the quote has no USD reference price or the pair has no price. Older servers omit this field.
price_originenumWhere the ticker price comes from.
volume_base_24hdecimal stringnullable24-hour volume in base-asset units.
volume_quote_24hdecimal stringnullable24-hour volume in quote-asset units.
volume_usd_24hdecimal stringnullable24-hour volume in USD. Null when unavailable.
last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
liquidityobjectnullableLiquidity of the asset's markets, in USD and outside any conversion.
12 child fields
modelenumliquidity_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.
liquidity_usddecimal stringnullableoptionalPool liquidity in USD: the value locked in the asset's eligible AMM pools.
bid_depth_2pct_usddecimal stringnullableoptionalUSD notional of total bids within 2% below the best bid. Null when the book window or USD conversion is unavailable.
ask_depth_2pct_usddecimal stringnullableoptionalUSD notional of total asks within 2% above the best ask. Null when the book window or USD conversion is unavailable.
depth_originenumoptionalDepth is measured from displayed order-book levels.
depth_unavailable_reasonenumnullableoptionalWhy a synthetic depth value is null. A measured zero is returned as 0, never as a reason.
depth_updated_atdate-timenullableoptionalWhen the stored depth 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.
spread_bpsdecimal stringnullableoptional(Best ask - best bid) / midpoint × 10,000.
last_updated_atdate-timeTime of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.
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 supported market-data features and history for a venue
https://api.cantoncap.cc/v1/venues/{venue_id}/capabilitiesParameters
venue_idenumpathrequiredStable CantonCap venue ID.
If-None-MatchstringheaderoptionalReturn 304 when this entity tag matches the current representation.
Request
curl -s "https://api.cantoncap.cc/v1/venues/temple/capabilities" \
-H "X-API-Key: $CANTONCAP_API_KEY"Response
200 Supported market-data features and historical coverage for a venue. 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": {
"venue_id": "temple",
"features": {
"prices": true,
"trades": true,
"candles": true,
"order_book": true,
"quotes": true,
"liquidity": true
},
"history": {
"available_from": "2026-09-10T00:00:00.000Z",
"intervals": [
"1h"
]
}
}
}dataobject11 child fields
venue_idstringStable CantonCap venue ID, such as
templeorcantex.featuresobjectMarket-data features the venue supports.
6 child fields
pricesbooleantradesbooleancandlesbooleanorder_bookbooleanquotesbooleanQuotes keyed by conversion currency code, such as
USD. A currency without an observation is omitted, never substituted.liquiditybooleanLiquidity of the asset's markets, in USD and outside any conversion.
historyobjectHistory the venue makes available.
2 child fields
available_fromstringnullableEarliest time history is available from. Null when not known.
intervalsarray of enumsIntervals history is available in.
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. |
| 429 | rate_limited | The request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds. |