Skip to content
Docs
Get API Access
Browse the Documentation

API Reference

Markets

Venue markets, observations, books, trades, and candles.

Every endpoint here authenticates with X-API-Key, answers in the standard envelope and fails with the standard error body.

List venue markets

GEThttps://api.cantoncap.cc/v1/markets
listMarketsCursor paginationETag

Parameters

venue_idenumqueryoptional

Only markets or pools of this venue.

One oftemplecantexoneswapsilvanatradecraftkorarockysend
asset_idstringqueryoptional

Only markets or pools that include this asset.

modelenumqueryoptional

Only markets of this market model.

One ofammorder_bookorder_book_rfqhybrid
categoryenumqueryoptional

Only markets of this display category.

One ofammclmmorderbookhybrid
networkenumqueryoptional

Canton network to read.

One ofmainnettestnetdevnet
limitintegerqueryoptional

Maximum page size, bounded by the caller's plan.

Default1001 to 500
cursorstringqueryoptional

Opaque continuation cursor from the previous response.

If-None-Matchstringheaderoptional

Return 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.

Example Response
{
  "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 objects
    90 child fields
    • market_categoryenumoptional

      Display category of the market.

      One ofammclmmorderbookhybrid
    • last_updated_atdate-time

      Time of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.

    • market_idstring

      Stable opaque CantonCap market ID, prefixed mkt_.

    • venue_idstring

      Stable CantonCap venue ID, such as temple or cantex.

    • networkenum

      Canton network the record belongs to.

      One ofmainnettestnetdevnet
    • venue_market_idstring

      The market's identifier at the venue.

    • market_modelenum

      How the market trades: amm, order_book, order_book_rfq or hybrid.

      One ofammorder_bookorder_book_rfqhybrid
    • base_asset_idstring

      Asset ID of the base asset.

    • quote_asset_idstring

      Asset ID of the quote asset.

    • statusenum

      Lifecycle status of the record.

      One ofactiveinactivesuspended
    • price_tickstringnullable

      Minimum price increment at the venue. Null when the venue does not state one.

    • amount_stepstringnullable

      Minimum amount increment at the venue. Null when the venue does not state one.

    • min_order_amountstringnullable

      Minimum order amount at the venue. Null when the venue does not state one.

    • fee_modelstringnullable

      Legacy free-form venue fee description, unchanged for existing consumers. Its contents vary by venue and are not verified; use fees for sourced fee schedules.

    • feesobjectoptional

      Sourced fees of one market, published additively beside the legacy fee_model. status is verified when the latest recorded check of the official source confirmed the schedule; verification_failed when the latest check could not confirm it (the previously verified components remain and source.verified_at is not advanced); withheld when a reviewed schedule exists but its rates are not published (withheld_reason explains why and components is empty); and unknown when 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 or separate_charges and are never summed. Age thresholds are left to consumers: compare source.verified_at with your own policy. Reviewed venue schedules (source.kind official_documentation, such as Temple and Rocky) carry a schedule_id and revision; a pool venue without a reviewed schedule derives its fees from its own native pools at read time (source.kind venue_api, such as Cantex): one pool_swap component that is known when every eligible pool shares a rate or variable with the exact range and per-pool breakdown when they differ, an optional pool_admin_share, and Connect or network charges kept separate with explicit availability. Such a market has no schedule_id, and source.verified_at is the latest pool observation.

      75 child fields
      • statusenum
        One ofverifiedverification_failedwithheldunknown
      • schedule_idstringnullable

        Stable identifier of the venue schedule that governs this market.

      • revisionintegernullable

        Revision of the schedule definition; it increases when reviewed rates, applicability or evidence scope change.

      • withheld_reasonstringnullable

        Machine-readable reason, such as conflicting_sources, when status is withheld.

      • notestringnullable

        Reviewer note qualifying the schedule, such as a conflicting source.

      • componentsarray of objects
        32 child fields
        • chargeenum
          One oftradingpool_swappool_admin_shareconnectnetworksettlement
        • liquidity_roleenum
          One ofmakertakerall
        • unitenum

          basis_points of traded notional; share_of_charge is a fraction (0 to 1) of another charge and is not an additional charge; asset_amount is a fixed amount of asset_id.

          One ofbasis_pointsshare_of_chargeasset_amount
        • availabilityenum
          One ofknownvariableunknownnot_applicable
        • ratedecimal stringnullable

          Exact 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 stringnullable

          Exact 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 stringnullable

          Exact 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_idstringnullable

          Stable opaque CantonCap asset ID, prefixed ast_.

        • qualificationstringnullable

          Component-specific scope, such as "Wallet-funded side only".

        • unpriced_poolsarray of objectsoptional

          Current eligible pools without a valid fee; their presence makes the market-wide component unknown while pools retains the known subset.

          10 child fields
          • evidenceobjectnullableoptional

            Retained venue API evidence, independently timestamped for each pool or separately scoped charge.

            5 child fields
            • source_idstring
            • source_methodstring
            • source_timestampdate-timenullable
            • observed_atdate-time
            • raw_event_idsarray of strings

              Immutable ingestion event references; this response does not grant access to raw payloads.

          • pool_idstring

            Stable opaque CantonCap pool ID, prefixed pool_.

          • venue_pool_idstringnullableoptional

            The pool's identifier at the venue. Omitted by servers that predate the pool-derived breakdown.

          • observed_atdate-time
          • coverageenumnullableoptional

            Completeness of the pool observation behind this rate. Omitted by servers that predate the pool-derived breakdown.

            One ofcompletepartialsampledaccumulation_onlyunknown
        • poolsarray of objects
          11 child fields
          • evidenceobjectnullableoptional

            Retained venue API evidence, independently timestamped for each pool or separately scoped charge.

            5 child fields
            • source_idstring
            • source_methodstring
            • source_timestampdate-timenullable
            • observed_atdate-time
            • raw_event_idsarray of strings

              Immutable ingestion event references; this response does not grant access to raw payloads.

          • pool_idstring

            Stable opaque CantonCap pool ID, prefixed pool_.

          • venue_pool_idstringnullableoptional

            The pool's identifier at the venue. Omitted by servers that predate the pool-derived breakdown.

          • ratedecimal string

            Exact 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-time
          • coverageenumnullableoptional

            Completeness of the pool observation behind this rate. Omitted by servers that predate the pool-derived breakdown.

            One ofcompletepartialsampledaccumulation_onlyunknown
      • applicabilityobjectnullable

        Where the schedule applies. A rate is never universal beyond this scope; exclusions lists documented cases it does not describe.

        8 child fields
        • networkenum

          Canton network the record belongs to.

          One ofmainnettestnetdevnet
        • market_modelsarray of enums
          One ofammorder_bookorder_book_rfqhybrid
        • execution_pathenum
          One oforder_bookrfqpool_swapconnect
        • account_scopeenum
          One ofall_accountsstandard_accountswallet_funded_sideunspecified
        • summarystring
        • exclusionsarray of objects
          2 child fields
          • codestring
          • descriptionstring

            Approved description. Null when none is published.

      • paymentobjectnullable

        How fees are paid, such as Temple's pre-paid fee balance.

        2 child fields
        • methodenum
          One ofprepaid_fee_balancededucted_from_fillunspecified
        • descriptionstringnullable

          Approved description. Null when none is published.

      • separate_chargesarray of objects

        Charges the source documents separately (deposit, withdrawal, wallet, network and similar). They are not part of components and must not be added to them.

        11 child fields
        • availabilityenumoptional

          Availability of a separately scoped asset amount; omitted for narrative-only charges.

          One ofknownunknown
        • amountdecimal stringnullableoptional

          Exact 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_idstringnullableoptional

          Stable opaque CantonCap asset ID, prefixed ast_.

        • evidenceobjectnullableoptional

          Retained venue API evidence, independently timestamped for each pool or separately scoped charge.

          5 child fields
          • source_idstring
          • source_methodstring
          • source_timestampdate-timenullable
          • observed_atdate-time
          • raw_event_idsarray of strings

            Immutable ingestion event references; this response does not grant access to raw payloads.

        • chargeenum
          One ofdepositwithdrawalwalletnetworktransferallocationbank_transferbridgeconnectsettlement
        • descriptionstring

          Approved description. Null when none is published.

      • sourceobjectnullable

        Evidence for the schedule. verified_at is the latest successful verification and is never advanced by a failed check; last_checked_at and last_check_outcome describe the latest attempt. content_hash is the SHA-256 of the captured source bytes.

        12 child fields
        • kindenum
          One ofofficial_documentationvenue_api
        • urlURI stringnullable
        • titlestringnullable
        • effective_atdate-timenullable

          Effective time stated by the source, when it states one.

        • recorded_atdate-time

          Check time of the review that recorded this revision.

        • verified_atdate-time
        • retrieved_atdate-time

          Retrieval time of the capture that last verified the schedule.

        • content_hashstringnullable
        • excerptstringnullable
        • last_checked_atdate-time
        • last_check_outcomeenum
          One ofverifiedfailed
        • last_check_errorstringnullable

          Error code of a failed latest check.

  • paginationobject

    Present on cursor-paginated collections.

    1 child field
    • next_cursorstringnullable

      Opaque cursor for the next page, or null on the last page.

Headers

  • X-RateLimit-Limit Requests allowed in the current one-minute window.
  • X-RateLimit-Remaining Requests left in the window.
  • X-RateLimit-Reset Unix time, in seconds, when the window resets.
  • ETag Entity tag of this representation. Send it back in If-None-Match.

Errors

StatusCodeWhen
400invalid_requestRequest validation failedA parameter is malformed, out of bounds or not one of its allowed values.
400invalid_requestInvalid cursorThe cursor is malformed or belongs to a different query. Some endpoints name it more precisely, such as Invalid historical range or cursor.
401unauthenticatedA valid API key is requiredX-API-Key is missing or unknown.
403forbiddenThe API key does not resolve to an active planThe key expired, was suspended or has not started.
403quota_exceededThe requested page exceeds the API plan limitAn explicit limit is above the plan's page size.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.

Get market metadata and latest state

GEThttps://api.cantoncap.cc/v1/markets/{market_id}
getMarketETag

Parameters

market_idstringpathrequired

Stable opaque CantonCap market ID.

If-None-Matchstringheaderoptional

Return 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.

Example Response
{
  "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
  }
}
  • dataobject
    90 child fields
    • market_categoryenumoptional

      Display category of the market.

      One ofammclmmorderbookhybrid
    • last_updated_atdate-time

      Time of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.

    • market_idstring

      Stable opaque CantonCap market ID, prefixed mkt_.

    • venue_idstring

      Stable CantonCap venue ID, such as temple or cantex.

    • networkenum

      Canton network the record belongs to.

      One ofmainnettestnetdevnet
    • venue_market_idstring

      The market's identifier at the venue.

    • market_modelenum

      How the market trades: amm, order_book, order_book_rfq or hybrid.

      One ofammorder_bookorder_book_rfqhybrid
    • base_asset_idstring

      Asset ID of the base asset.

    • quote_asset_idstring

      Asset ID of the quote asset.

    • statusenum

      Lifecycle status of the record.

      One ofactiveinactivesuspended
    • price_tickstringnullable

      Minimum price increment at the venue. Null when the venue does not state one.

    • amount_stepstringnullable

      Minimum amount increment at the venue. Null when the venue does not state one.

    • min_order_amountstringnullable

      Minimum order amount at the venue. Null when the venue does not state one.

    • fee_modelstringnullable

      Legacy free-form venue fee description, unchanged for existing consumers. Its contents vary by venue and are not verified; use fees for sourced fee schedules.

    • feesobjectoptional

      Sourced fees of one market, published additively beside the legacy fee_model. status is verified when the latest recorded check of the official source confirmed the schedule; verification_failed when the latest check could not confirm it (the previously verified components remain and source.verified_at is not advanced); withheld when a reviewed schedule exists but its rates are not published (withheld_reason explains why and components is empty); and unknown when 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 or separate_charges and are never summed. Age thresholds are left to consumers: compare source.verified_at with your own policy. Reviewed venue schedules (source.kind official_documentation, such as Temple and Rocky) carry a schedule_id and revision; a pool venue without a reviewed schedule derives its fees from its own native pools at read time (source.kind venue_api, such as Cantex): one pool_swap component that is known when every eligible pool shares a rate or variable with the exact range and per-pool breakdown when they differ, an optional pool_admin_share, and Connect or network charges kept separate with explicit availability. Such a market has no schedule_id, and source.verified_at is the latest pool observation.

      75 child fields
      • statusenum
        One ofverifiedverification_failedwithheldunknown
      • schedule_idstringnullable

        Stable identifier of the venue schedule that governs this market.

      • revisionintegernullable

        Revision of the schedule definition; it increases when reviewed rates, applicability or evidence scope change.

      • withheld_reasonstringnullable

        Machine-readable reason, such as conflicting_sources, when status is withheld.

      • notestringnullable

        Reviewer note qualifying the schedule, such as a conflicting source.

      • componentsarray of objects
        32 child fields
        • chargeenum
          One oftradingpool_swappool_admin_shareconnectnetworksettlement
        • liquidity_roleenum
          One ofmakertakerall
        • unitenum

          basis_points of traded notional; share_of_charge is a fraction (0 to 1) of another charge and is not an additional charge; asset_amount is a fixed amount of asset_id.

          One ofbasis_pointsshare_of_chargeasset_amount
        • availabilityenum
          One ofknownvariableunknownnot_applicable
        • ratedecimal stringnullable

          Exact 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 stringnullable

          Exact 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 stringnullable

          Exact 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_idstringnullable

          Stable opaque CantonCap asset ID, prefixed ast_.

        • qualificationstringnullable

          Component-specific scope, such as "Wallet-funded side only".

        • unpriced_poolsarray of objectsoptional

          Current eligible pools without a valid fee; their presence makes the market-wide component unknown while pools retains the known subset.

          10 child fields
          • evidenceobjectnullableoptional

            Retained venue API evidence, independently timestamped for each pool or separately scoped charge.

            5 child fields
            • source_idstring
            • source_methodstring
            • source_timestampdate-timenullable
            • observed_atdate-time
            • raw_event_idsarray of strings

              Immutable ingestion event references; this response does not grant access to raw payloads.

          • pool_idstring

            Stable opaque CantonCap pool ID, prefixed pool_.

          • venue_pool_idstringnullableoptional

            The pool's identifier at the venue. Omitted by servers that predate the pool-derived breakdown.

          • observed_atdate-time
          • coverageenumnullableoptional

            Completeness of the pool observation behind this rate. Omitted by servers that predate the pool-derived breakdown.

            One ofcompletepartialsampledaccumulation_onlyunknown
        • poolsarray of objects
          11 child fields
          • evidenceobjectnullableoptional

            Retained venue API evidence, independently timestamped for each pool or separately scoped charge.

            5 child fields
            • source_idstring
            • source_methodstring
            • source_timestampdate-timenullable
            • observed_atdate-time
            • raw_event_idsarray of strings

              Immutable ingestion event references; this response does not grant access to raw payloads.

          • pool_idstring

            Stable opaque CantonCap pool ID, prefixed pool_.

          • venue_pool_idstringnullableoptional

            The pool's identifier at the venue. Omitted by servers that predate the pool-derived breakdown.

          • ratedecimal string

            Exact 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-time
          • coverageenumnullableoptional

            Completeness of the pool observation behind this rate. Omitted by servers that predate the pool-derived breakdown.

            One ofcompletepartialsampledaccumulation_onlyunknown
      • applicabilityobjectnullable

        Where the schedule applies. A rate is never universal beyond this scope; exclusions lists documented cases it does not describe.

        8 child fields
        • networkenum

          Canton network the record belongs to.

          One ofmainnettestnetdevnet
        • market_modelsarray of enums
          One ofammorder_bookorder_book_rfqhybrid
        • execution_pathenum
          One oforder_bookrfqpool_swapconnect
        • account_scopeenum
          One ofall_accountsstandard_accountswallet_funded_sideunspecified
        • summarystring
        • exclusionsarray of objects
          2 child fields
          • codestring
          • descriptionstring

            Approved description. Null when none is published.

      • paymentobjectnullable

        How fees are paid, such as Temple's pre-paid fee balance.

        2 child fields
        • methodenum
          One ofprepaid_fee_balancededucted_from_fillunspecified
        • descriptionstringnullable

          Approved description. Null when none is published.

      • separate_chargesarray of objects

        Charges the source documents separately (deposit, withdrawal, wallet, network and similar). They are not part of components and must not be added to them.

        11 child fields
        • availabilityenumoptional

          Availability of a separately scoped asset amount; omitted for narrative-only charges.

          One ofknownunknown
        • amountdecimal stringnullableoptional

          Exact 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_idstringnullableoptional

          Stable opaque CantonCap asset ID, prefixed ast_.

        • evidenceobjectnullableoptional

          Retained venue API evidence, independently timestamped for each pool or separately scoped charge.

          5 child fields
          • source_idstring
          • source_methodstring
          • source_timestampdate-timenullable
          • observed_atdate-time
          • raw_event_idsarray of strings

            Immutable ingestion event references; this response does not grant access to raw payloads.

        • chargeenum
          One ofdepositwithdrawalwalletnetworktransferallocationbank_transferbridgeconnectsettlement
        • descriptionstring

          Approved description. Null when none is published.

      • sourceobjectnullable

        Evidence for the schedule. verified_at is the latest successful verification and is never advanced by a failed check; last_checked_at and last_check_outcome describe the latest attempt. content_hash is the SHA-256 of the captured source bytes.

        12 child fields
        • kindenum
          One ofofficial_documentationvenue_api
        • urlURI stringnullable
        • titlestringnullable
        • effective_atdate-timenullable

          Effective time stated by the source, when it states one.

        • recorded_atdate-time

          Check time of the review that recorded this revision.

        • verified_atdate-time
        • retrieved_atdate-time

          Retrieval time of the capture that last verified the schedule.

        • content_hashstringnullable
        • excerptstringnullable
        • last_checked_atdate-time
        • last_check_outcomeenum
          One ofverifiedfailed
        • last_check_errorstringnullable

          Error code of a failed latest check.

  • tickerobjectnullable

    Latest ticker of the market. Null when none is available.

    24 child fields
    • market_categoryenumnullableoptional

      Display category of the market.

      One ofammclmmorderbookhybrid
    • liquidity_scorenumbernullableoptional

      Displayed 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_methodologyenumoptional

      Methodology version of the liquidity score.

      Alwaysexecution-impact-v1
    • liquidity_score_updated_atdate-timenullableoptional

      When the liquidity score was calculated.

    • last_updated_atdate-time

      Time of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.

    • venue_idstring

      Stable CantonCap venue ID, such as temple or cantex.

    • market_idstring

      Stable opaque CantonCap market ID, prefixed mkt_.

    • price_originenum

      Where the ticker price comes from.

      One ofvenue_poolvenue_bookvenue_tradeexternal_referencederived
    • last_pricedecimal stringnullable

      Last traded price, in quote-asset units.

    • best_biddecimal stringnullable

      Best bid price, in quote-asset units.

    • best_askdecimal stringnullable

      Best ask price, in quote-asset units.

    • mid_pricedecimal stringnullable

      Midpoint between the best bid and the best ask.

    • volume_base_24hdecimal stringnullable

      24-hour volume in base-asset units.

    • volume_quote_24hdecimal stringnullable

      24-hour volume in quote-asset units.

    • trade_count_24hintegernullable

      Trades in the last 24 hours. Null when unavailable.

    • open_24hdecimal stringnullable

      Opening price of the rolling 24-hour window.

    • high_24hdecimal stringnullable

      Highest price in the last 24 hours.

    • low_24hdecimal stringnullable

      Lowest price in the last 24 hours.

    • close_24hdecimal stringnullable

      Closing price of the rolling 24-hour window.

    • vwap_24hdecimal stringnullable

      Volume-weighted average price over 24 hours.

    • price_change_abs_24hdecimal stringnullable

      24-hour price change in quote-asset units.

    • reference_price_usddecimal stringnullable

      Reference price in USD. Null when unavailable.

    • price_change_24h_pctdecimal stringnullable

      24-hour price change in percentage points.

    • volume_usd_24hdecimal stringnullable

      24-hour volume in USD. Null when unavailable.

  • liquidityobjectnullable

    Liquidity of the asset's markets, in USD and outside any conversion.

    79 child fields
    • liquidity_scorenumbernullableoptional

      Displayed 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_methodologyenumoptional

      Methodology version of the liquidity score.

      Alwaysexecution-impact-v1
    • liquidity_score_updated_atdate-timenullableoptional

      When the liquidity score was calculated.

    • score_probesarray of objectsoptional
      4 child fields
      • sideenum
        One ofbuysell
      • notional_usdstring
      • impact_bpsstringnullable
      • filledbooleannullable
    • last_updated_atdate-time

      Time of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.

    • modelenum
      Alwaysorder_book
    • venue_idstring

      Stable CantonCap venue ID, such as temple or cantex.

    • market_idstring

      Stable opaque CantonCap market ID, prefixed mkt_.

    • pool_idstringoptional

      Stable opaque CantonCap pool ID, prefixed pool_.

    • reserve_xdecimal stringoptional
    • reserve_ydecimal stringoptional
    • mid_pricedecimal stringnullableoptional

      Midpoint between the best bid and the best ask.

    • reserve_x_value_usddecimal stringnullableoptional
    • reserve_y_value_usddecimal stringnullableoptional
    • tvl_ccdecimal stringnullableoptional
    • liquidity_usddecimal stringnullableoptional

      Pool liquidity in USD: the value locked in the asset's eligible AMM pools.

    • curve_typestringoptional
    • curve_parametersmapoptional
    • fee_bpsintegeroptional
    • fee_ratedecimal stringnullableoptional
    • probesarray of objects
      6 child fields
      • sideenum
        One ofbuysell
      • notional_usddecimal string
      • base_amountdecimal stringnullable
      • quote_amountdecimal stringnullable
      • executable_pricedecimal stringnullable
      • price_impact_bpsdecimal stringnullable
    • asset_probesarray of objectsoptional
      7 child fields
      • input_asset_idstring
      • output_asset_idstring
      • notional_usddecimal stringnullable
      • amount_indecimal string
      • amount_outdecimal string
      • effective_pricedecimal string
      • price_impact_pctstringnullable
    • synthetic_depthobjectoptional

      Synthetic ±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
      • originenum
        Alwayssynthetic_pool
      • methodology_versionenum
        Alwayspool-synthetic-depth-v1
      • band_bpsinteger
      • reference_pricedecimal stringnullable

        Common 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 stringnullable

        reference_price × (1 − band_bps / 10,000).

      • ask_boundary_pricedecimal stringnullable

        reference_price × (1 + band_bps / 10,000).

      • bid_depth_2pct_basedecimal stringnullable

        Base sold, fee included, until every included pool's marginal price falls to the bid boundary.

      • bid_depth_2pct_quotedecimal stringnullable

        Quote received for that sale.

      • bid_depth_2pct_usddecimal stringnullable

        bid_depth_2pct_quote × quote_usd_price. Null with usd_unavailable_reason when the conversion is missing or stale.

      • ask_depth_2pct_basedecimal stringnullable

        Base bought until every included pool's marginal price rises to the ask boundary.

      • ask_depth_2pct_quotedecimal stringnullable

        Quote paid, fee included, for that purchase.

      • ask_depth_2pct_usddecimal stringnullable

        ask_depth_2pct_quote × quote_usd_price.

      • quote_usd_pricedecimal stringnullable

        The quote asset's public USD reference price used for conversion.

      • quote_usd_price_observed_atdate-timenullable
      • unavailable_reasonenumnullable

        Why a synthetic depth value is null. A measured zero is returned as 0, never as a reason.

        One ofnot_calculatedunsupported_curveunsupported_fee_modelmissing_fee_configurationinvalid_pool_statestale_pool_stateno_eligible_poolmissing_quote_usd_pricestale_quote_usd_price
      • usd_unavailable_reasonenumnullable

        Why a synthetic depth value is null. A measured zero is returned as 0, never as a reason.

        One ofnot_calculatedunsupported_curveunsupported_fee_modelmissing_fee_configurationinvalid_pool_statestale_pool_stateno_eligible_poolmissing_quote_usd_pricestale_quote_usd_price
      • completenessenum

        Partial when an eligible pool of the market is excluded; its reason is listed in pools.

        One ofcompletepartialunknown
      • eligible_pool_countinteger
      • included_pool_countinteger
      • poolsarray of objects
        12 child fields
        • pool_idstring

          Stable opaque CantonCap pool ID, prefixed pool_.

        • includedboolean
        • unavailable_reasonenumnullable

          Why a synthetic depth value is null. A measured zero is returned as 0, never as a reason.

          One ofnot_calculatedunsupported_curveunsupported_fee_modelmissing_fee_configurationinvalid_pool_statestale_pool_stateno_eligible_poolmissing_quote_usd_pricestale_quote_usd_price
        • reference_pricedecimal stringnullable

          The pool's own reserve-ratio price, quote per base.

        • fee_ratedecimal stringnullable
        • retained_fee_sharedecimal stringnullable

          Share of the pool fee credited back to the pool reserves; the rest leaves the pool.

        • bid_depth_2pct_basedecimal stringnullable

          Base this pool takes, fee included, until its price reaches the common bid boundary.

        • bid_depth_2pct_quotedecimal stringnullable

          Quote this pool pays for that base.

        • ask_depth_2pct_basedecimal stringnullable

          Base this pool releases until its price reaches the common ask boundary.

        • ask_depth_2pct_quotedecimal stringnullable

          Quote, fee included, this pool takes for that base.

        • state_observed_atdate-timenullable
        • state_source_timestampdate-timenullable
      • calculated_atdate-timenullable
    • spread_bpsdecimal stringnullableoptional
    • best_biddecimal stringnullableoptional

      Best bid price, in quote-asset units.

    • best_askdecimal stringnullableoptional

      Best ask price, in quote-asset units.

    • bid_depthmapoptional
    • ask_depthmapoptional
    • available_quantity_excludes_own_ordersbooleanoptional

      True when the source excludes its own account's resting orders from the available quantities.

Headers

  • X-RateLimit-Limit Requests allowed in the current one-minute window.
  • X-RateLimit-Remaining Requests left in the window.
  • X-RateLimit-Reset Unix time, in seconds, when the window resets.
  • ETag Entity tag of this representation. Send it back in If-None-Match.

Errors

StatusCodeWhen
400invalid_requestRequest validation failedA parameter is malformed, out of bounds or not one of its allowed values.
401unauthenticatedA valid API key is requiredX-API-Key is missing or unknown.
403forbiddenThe API key does not resolve to an active planThe key expired, was suspended or has not started.
404not_foundMarket not foundThe market does not exist or is not published.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.

Get the latest venue ticker

GEThttps://api.cantoncap.cc/v1/markets/{market_id}/ticker
getMarketTickerETag

Parameters

market_idstringpathrequired

Stable opaque CantonCap market ID.

If-None-Matchstringheaderoptional

Return 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.

Example Response
{
  "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"
  }
}
  • dataobject
    24 child fields
    • market_categoryenumnullableoptional

      Display category of the market.

      One ofammclmmorderbookhybrid
    • liquidity_scorenumbernullableoptional

      Displayed 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_methodologyenumoptional

      Methodology version of the liquidity score.

      Alwaysexecution-impact-v1
    • liquidity_score_updated_atdate-timenullableoptional

      When the liquidity score was calculated.

    • last_updated_atdate-time

      Time of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.

    • venue_idstring

      Stable CantonCap venue ID, such as temple or cantex.

    • market_idstring

      Stable opaque CantonCap market ID, prefixed mkt_.

    • price_originenum

      Where the ticker price comes from.

      One ofvenue_poolvenue_bookvenue_tradeexternal_referencederived
    • last_pricedecimal stringnullable

      Last traded price, in quote-asset units.

    • best_biddecimal stringnullable

      Best bid price, in quote-asset units.

    • best_askdecimal stringnullable

      Best ask price, in quote-asset units.

    • mid_pricedecimal stringnullable

      Midpoint between the best bid and the best ask.

    • volume_base_24hdecimal stringnullable

      24-hour volume in base-asset units.

    • volume_quote_24hdecimal stringnullable

      24-hour volume in quote-asset units.

    • trade_count_24hintegernullable

      Trades in the last 24 hours. Null when unavailable.

    • open_24hdecimal stringnullable

      Opening price of the rolling 24-hour window.

    • high_24hdecimal stringnullable

      Highest price in the last 24 hours.

    • low_24hdecimal stringnullable

      Lowest price in the last 24 hours.

    • close_24hdecimal stringnullable

      Closing price of the rolling 24-hour window.

    • vwap_24hdecimal stringnullable

      Volume-weighted average price over 24 hours.

    • price_change_abs_24hdecimal stringnullable

      24-hour price change in quote-asset units.

    • reference_price_usddecimal stringnullable

      Reference price in USD. Null when unavailable.

    • price_change_24h_pctdecimal stringnullable

      24-hour price change in percentage points.

    • volume_usd_24hdecimal stringnullable

      24-hour volume in USD. Null when unavailable.

Headers

  • X-RateLimit-Limit Requests allowed in the current one-minute window.
  • X-RateLimit-Remaining Requests left in the window.
  • X-RateLimit-Reset Unix time, in seconds, when the window resets.
  • ETag Entity tag of this representation. Send it back in If-None-Match.

Errors

StatusCodeWhen
400invalid_requestRequest validation failedA parameter is malformed, out of bounds or not one of its allowed values.
401unauthenticatedA valid API key is requiredX-API-Key is missing or unknown.
403forbiddenThe API key does not resolve to an active planThe key expired, was suspended or has not started.
404not_foundTicker not foundThe market has no published ticker.
429rate_limitedThe 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

GEThttps://api.cantoncap.cc/v1/markets/{market_id}/orderbook
getMarketOrderBookETag

Returns 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_idstringpathrequired

Stable opaque CantonCap market ID.

depthintegerqueryoptional

Maximum number of price levels to return.

Default1001 to 1000
If-None-Matchstringheaderoptional

Return 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.

Example Response
{
  "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
  }
}
  • dataobject
    23 child fields
    • last_updated_atdate-time

      Time of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.

    • venue_idstring

      Stable CantonCap venue ID, such as temple or cantex.

    • networkenum

      Canton network the record belongs to.

      One ofmainnettestnetdevnet
    • market_idstring

      Stable opaque CantonCap market ID, prefixed mkt_.

    • sequencestring
    • bidsarray of objects

      Bid levels, best first.

      6 child fields
      • pricedecimal string

        Price as an exact decimal string.

      • amountdecimal string
      • total_amountdecimal string
      • available_amountdecimal string
      • cumulative_amountdecimal string
      • order_countintegernullable
    • asksarray of objects

      Ask levels, best first.

      6 child fields
      • pricedecimal string

        Price as an exact decimal string.

      • amountdecimal string
      • total_amountdecimal string
      • available_amountdecimal string
      • cumulative_amountdecimal string
      • order_countintegernullable
    • best_biddecimal stringnullable

      Best bid price, in quote-asset units.

    • best_askdecimal stringnullable

      Best ask price, in quote-asset units.

    • spreaddecimal stringnullable
    • available_quantity_excludes_own_ordersboolean

      True when the source excludes its own account's resting orders from the available quantities.

Headers

  • X-RateLimit-Limit Requests allowed in the current one-minute window.
  • X-RateLimit-Remaining Requests left in the window.
  • X-RateLimit-Reset Unix time, in seconds, when the window resets.
  • ETag Entity tag of this representation. Send it back in If-None-Match.

Errors

StatusCodeWhen
400invalid_requestRequest validation failedA parameter is malformed, out of bounds or not one of its allowed values.
401unauthenticatedA valid API key is requiredX-API-Key is missing or unknown.
403forbiddenThe API key does not resolve to an active planThe key expired, was suspended or has not started.
404not_foundOrder book not foundNo book snapshot was observed in the last 29 days, or the market is unknown.
422unsupported_capabilityOrder books are not available for this market modelThe market is an AMM or hybrid market, not an order book.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.

Get public market trades and coverage

GEThttps://api.cantoncap.cc/v1/markets/{market_id}/trades
getMarketTradesCursor pagination

Parameters

market_idstringpathrequired

Stable opaque CantonCap market ID.

time_startdate-timequeryoptional

Inclusive UTC range start; defaults to 24 hours before time_end. At most 31 days per request, further bounded by plan history depth.

RFC 3339 date-time, for example 2026-10-01T00:00:00Z
time_enddate-timequeryoptional

Exclusive UTC range end; defaults to request time and is pinned by continuation cursors.

RFC 3339 date-time, for example 2026-10-01T00:00:00Z
limitintegerqueryoptional

Maximum page size, bounded by the caller's plan.

Default1001 to 500
cursorstringqueryoptional

Opaque 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.

Example Response
{
  "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 objects
    10 child fields
    • last_updated_atdate-time

      Time of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.

    • trade_idstring

      Stable CantonCap trade ID, prefixed trd_.

    • venue_idstring

      Stable CantonCap venue ID, such as temple or cantex.

    • market_idstring

      Stable opaque CantonCap market ID, prefixed mkt_.

    • trade_timestampdate-time
    • sideenum
      One ofbuysellunknown
    • pricedecimal string

      Price as an exact decimal string.

    • base_amountdecimal string
    • quote_amountdecimal string
    • fee_amountsarray of decimal strings
  • paginationobject

    Present on cursor-paginated collections.

    1 child field
    • next_cursorstringnullable

      Opaque cursor for the next page, or null on the last page.

Headers

  • X-RateLimit-Limit Requests allowed in the current one-minute window.
  • X-RateLimit-Remaining Requests left in the window.
  • X-RateLimit-Reset Unix time, in seconds, when the window resets.
  • Cache-Control private, no-cache: shared caches must not store the answer.
  • Vary X-API-Key: the answer varies by key.

Errors

StatusCodeWhen
400invalid_requestRequest validation failedA parameter is malformed, out of bounds or not one of its allowed values.
400invalid_requestInvalid cursorThe cursor is malformed or belongs to a different query. Some endpoints name it more precisely, such as Invalid historical range or cursor.
401unauthenticatedA valid API key is requiredX-API-Key is missing or unknown.
403forbiddenThe API key does not resolve to an active planThe key expired, was suspended or has not started.
403quota_exceededThe requested page exceeds the API plan limitAn explicit limit is above the plan's page size.
403quota_exceededThe requested history exceeds the API plan limitThe range reaches further back than the plan's history depth.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.

Get venue or CantonCap-rollup candles

GEThttps://api.cantoncap.cc/v1/markets/{market_id}/ohlcv
getMarketOhlcvCursor pagination

Stored 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_idstringpathrequired

Stable opaque CantonCap market ID.

intervalenumqueryoptional

UTC-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.

One of1m5m10m15m30m1h4h1d7d1wDefault1h
time_startdate-timequeryoptional

Inclusive UTC range start; defaults to 24 hours before time_end. At most 31 days per request, further bounded by plan history depth.

RFC 3339 date-time, for example 2026-10-01T00:00:00Z
time_enddate-timequeryoptional

Exclusive UTC range end; defaults to request time and is pinned by continuation cursors.

RFC 3339 date-time, for example 2026-10-01T00:00:00Z
limitintegerqueryoptional

Maximum page size, bounded by the caller's plan.

Default1001 to 500
cursorstringqueryoptional

Opaque 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.

Example Response
{
  "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 objects
    14 child fields
    • last_updated_atdate-time

      Time of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.

    • market_idstring

      Stable opaque CantonCap market ID, prefixed mkt_.

    • intervalenum

      Sampling interval of the series.

      One of1m5m10m15m30m1h4h1d7d1w
    • open_timedate-time

      Start of the period, inclusive, UTC.

    • close_timedate-time

      End of the period, exclusive, UTC.

    • opendecimal string

      First price in the period.

    • highdecimal string

      Highest price in the period.

    • lowdecimal string

      Lowest price in the period.

    • closedecimal string

      Last price in the period.

    • volume_basedecimal string
    • volume_quotedecimal stringnullable
    • trade_countintegernullable
    • volume_methodenum
      One ofvenue_reportedobserved_tradesnone
    • completeboolean

      True once the period has ended. A complete period can still be corrected later.

  • paginationobject

    Present on cursor-paginated collections.

    1 child field
    • next_cursorstringnullable

      Opaque cursor for the next page, or null on the last page.

Headers

  • X-RateLimit-Limit Requests allowed in the current one-minute window.
  • X-RateLimit-Remaining Requests left in the window.
  • X-RateLimit-Reset Unix time, in seconds, when the window resets.
  • Cache-Control private, no-cache: shared caches must not store the answer.
  • Vary X-API-Key: the answer varies by key.

Errors

StatusCodeWhen
400invalid_requestRequest validation failedA parameter is malformed, out of bounds or not one of its allowed values.
400invalid_requestInvalid cursorThe cursor is malformed or belongs to a different query. Some endpoints name it more precisely, such as Invalid historical range or cursor.
401unauthenticatedA valid API key is requiredX-API-Key is missing or unknown.
403forbiddenThe API key does not resolve to an active planThe key expired, was suspended or has not started.
403quota_exceededThe requested page exceeds the API plan limitAn explicit limit is above the plan's page size.
403quota_exceededThe requested history exceeds the API plan limitThe range reaches further back than the plan's history depth.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.
503source_unavailableStored 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

GEThttps://api.cantoncap.cc/v1/markets/{market_id}/liquidity
getMarketLiquidityETag

Order-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_idstringpathrequired

Stable opaque CantonCap market ID.

If-None-Matchstringheaderoptional

Return 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.

Example Response
{
  "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
  }
}
  • dataobject
    79 child fields
    • liquidity_scorenumbernullableoptional

      Displayed 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_methodologyenumoptional

      Methodology version of the liquidity score.

      Alwaysexecution-impact-v1
    • liquidity_score_updated_atdate-timenullableoptional

      When the liquidity score was calculated.

    • score_probesarray of objectsoptional
      4 child fields
      • sideenum
        One ofbuysell
      • notional_usdstring
      • impact_bpsstringnullable
      • filledbooleannullable
    • last_updated_atdate-time

      Time of the latest represented update. For calculated asset prices it is the stored calculation time. Decide acceptable age from it.

    • modelenum
      Alwaysorder_book
    • venue_idstring

      Stable CantonCap venue ID, such as temple or cantex.

    • market_idstring

      Stable opaque CantonCap market ID, prefixed mkt_.

    • pool_idstringoptional

      Stable opaque CantonCap pool ID, prefixed pool_.

    • reserve_xdecimal stringoptional
    • reserve_ydecimal stringoptional
    • mid_pricedecimal stringnullableoptional

      Midpoint between the best bid and the best ask.

    • reserve_x_value_usddecimal stringnullableoptional
    • reserve_y_value_usddecimal stringnullableoptional
    • tvl_ccdecimal stringnullableoptional
    • liquidity_usddecimal stringnullableoptional
    • curve_typestringoptional
    • curve_parametersmapoptional
    • fee_bpsintegeroptional
    • fee_ratedecimal stringnullableoptional
    • probesarray of objects
      6 child fields
      • sideenum
        One ofbuysell
      • notional_usddecimal string
      • base_amountdecimal stringnullable
      • quote_amountdecimal stringnullable
      • executable_pricedecimal stringnullable
      • price_impact_bpsdecimal stringnullable
    • asset_probesarray of objectsoptional
      7 child fields
      • input_asset_idstring
      • output_asset_idstring
      • notional_usddecimal stringnullable
      • amount_indecimal string
      • amount_outdecimal string
      • effective_pricedecimal string
      • price_impact_pctstringnullable
    • synthetic_depthobjectoptional

      Synthetic ±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
      • originenum
        Alwayssynthetic_pool
      • methodology_versionenum
        Alwayspool-synthetic-depth-v1
      • band_bpsinteger
      • reference_pricedecimal stringnullable

        Common 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 stringnullable

        reference_price × (1 − band_bps / 10,000).

      • ask_boundary_pricedecimal stringnullable

        reference_price × (1 + band_bps / 10,000).

      • bid_depth_2pct_basedecimal stringnullable

        Base sold, fee included, until every included pool's marginal price falls to the bid boundary.

      • bid_depth_2pct_quotedecimal stringnullable

        Quote received for that sale.

      • bid_depth_2pct_usddecimal stringnullable

        bid_depth_2pct_quote × quote_usd_price. Null with usd_unavailable_reason when the conversion is missing or stale.

      • ask_depth_2pct_basedecimal stringnullable

        Base bought until every included pool's marginal price rises to the ask boundary.

      • ask_depth_2pct_quotedecimal stringnullable

        Quote paid, fee included, for that purchase.

      • ask_depth_2pct_usddecimal stringnullable

        ask_depth_2pct_quote × quote_usd_price.

      • quote_usd_pricedecimal stringnullable

        The quote asset's public USD reference price used for conversion.

      • quote_usd_price_observed_atdate-timenullable
      • unavailable_reasonenumnullable

        Why a synthetic depth value is null. A measured zero is returned as 0, never as a reason.

        One ofnot_calculatedunsupported_curveunsupported_fee_modelmissing_fee_configurationinvalid_pool_statestale_pool_stateno_eligible_poolmissing_quote_usd_pricestale_quote_usd_price
      • usd_unavailable_reasonenumnullable

        Why a synthetic depth value is null. A measured zero is returned as 0, never as a reason.

        One ofnot_calculatedunsupported_curveunsupported_fee_modelmissing_fee_configurationinvalid_pool_statestale_pool_stateno_eligible_poolmissing_quote_usd_pricestale_quote_usd_price
      • completenessenum

        Partial when an eligible pool of the market is excluded; its reason is listed in pools.

        One ofcompletepartialunknown
      • eligible_pool_countinteger
      • included_pool_countinteger
      • poolsarray of objects
        12 child fields
        • pool_idstring

          Stable opaque CantonCap pool ID, prefixed pool_.

        • includedboolean
        • unavailable_reasonenumnullable

          Why a synthetic depth value is null. A measured zero is returned as 0, never as a reason.

          One ofnot_calculatedunsupported_curveunsupported_fee_modelmissing_fee_configurationinvalid_pool_statestale_pool_stateno_eligible_poolmissing_quote_usd_pricestale_quote_usd_price
        • reference_pricedecimal stringnullable

          The pool's own reserve-ratio price, quote per base.

        • fee_ratedecimal stringnullable
        • retained_fee_sharedecimal stringnullable

          Share of the pool fee credited back to the pool reserves; the rest leaves the pool.

        • bid_depth_2pct_basedecimal stringnullable

          Base this pool takes, fee included, until its price reaches the common bid boundary.

        • bid_depth_2pct_quotedecimal stringnullable

          Quote this pool pays for that base.

        • ask_depth_2pct_basedecimal stringnullable

          Base this pool releases until its price reaches the common ask boundary.

        • ask_depth_2pct_quotedecimal stringnullable

          Quote, fee included, this pool takes for that base.

        • state_observed_atdate-timenullable
        • state_source_timestampdate-timenullable
      • calculated_atdate-timenullable
    • spread_bpsdecimal stringnullableoptional
    • best_biddecimal stringnullableoptional

      Best bid price, in quote-asset units.

    • best_askdecimal stringnullableoptional

      Best ask price, in quote-asset units.

    • bid_depthmapoptional
    • ask_depthmapoptional
    • available_quantity_excludes_own_ordersbooleanoptional

      True when the source excludes its own account's resting orders from the available quantities.

Headers

  • X-RateLimit-Limit Requests allowed in the current one-minute window.
  • X-RateLimit-Remaining Requests left in the window.
  • X-RateLimit-Reset Unix time, in seconds, when the window resets.
  • ETag Entity tag of this representation. Send it back in If-None-Match.

Errors

StatusCodeWhen
400invalid_requestRequest validation failedA parameter is malformed, out of bounds or not one of its allowed values.
401unauthenticatedA valid API key is requiredX-API-Key is missing or unknown.
403forbiddenThe API key does not resolve to an active planThe key expired, was suspended or has not started.
404not_foundLiquidity not foundNo liquidity snapshot is available; an order book needs a snapshot from the last 29 days.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.
Esc
navigateopenEscclose