Skip to content
Docs
Get API Access
Browse the Documentation

API Reference

Activity

Stored volume and execution-count history.

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

Get current activity for up to 100 markets

GEThttps://api.cantoncap.cc/v1/activity/markets/latest
getLatestMarketActivity

One current stored snapshot per requested eligible market, in request order. Missing or ineligible markets are omitted. Each measurement keeps its own as_of, coverage and methods, exactly as in a single-market current read. No historical ranges or calculations on reads.

Parameters

idsstringqueryrequired

One to 100 distinct stable market IDs, comma-separated. Each ID is at most 255 characters. Missing or ineligible markets are omitted.

Up to 25599 characters
networkenumqueryoptional

Canton network to read.

One ofmainnettestnetdevnetDefaultmainnet
windowenumqueryoptional

Rolling window of the activity.

One of24h7d30dDefault24h

Request

curl -s "https://api.cantoncap.cc/v1/activity/markets/latest?ids=mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21,mkt_9b8a7c6d5e4f4a3b2c1d0e9f8a7b6c5d&window=24h" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Current eligible market snapshots in request order.

Example Response
{
  "status": {
    "timestamp": "2026-10-11T14:00:00.000Z",
    "elapsed_ms": 18,
    "error_code": 0,
    "error_message": null,
    "request_id": "req_7Hk2pQ9xLm"
  },
  "data": [
    {
      "entity_kind": "asset",
      "entity_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
      "network": "mainnet",
      "window": "24h",
      "as_of": "2026-10-11T14:00:00.000Z",
      "starts_at": "2026-10-10T14:00:00.000Z",
      "methodology_version": "v1",
      "markets": [
        {
          "market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
          "venue_id": "temple",
          "network": "mainnet",
          "base_asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
          "quote_asset_id": "ast_2d9c41e0b7a64f1e9c3b5a8d7e6f1c20"
        }
      ],
      "measurements": {
        "volume_base": {
          "value": "8342210.4",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "volume_quote": {
          "value": "1320455.18",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "volume_native": {
          "value": "8342210.4",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "volume_usd_reported": {
          "value": "1320455.18",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "volume_usd_derived": {
          "value": "1318902.77",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "volume_usd": {
          "value": "1320455.18",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "execution_count": {
          "value": "1284",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        }
      }
    }
  ]
}
  • dataarray of objects
    105 child fields
    • entity_kindenum

      Kind of entity the activity describes.

      One ofmarketassetvenueglobal
    • entity_idstring

      ID of the entity the activity describes.

    • networkenum

      Canton network the record belongs to.

      One ofmainnettestnetdevnet
    • windowenum

      Rolling window the values cover.

      One of24h7d30d
    • as_ofstring

      End of the window the snapshot covers.

    • starts_atstring

      Start of the window the snapshot covers.

    • methodology_versionstring
    • marketsarray of objects

      Markets included in the snapshot.

      5 child fields
      • 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
      • base_asset_idstring

        Asset ID of the base asset.

      • quote_asset_idstring

        Asset ID of the quote asset.

    • measurementsobject

      Each measurement with its own value, coverage and methods.

      91 child fields
      • volume_baseobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          The measured value as an exact decimal string. Null when unavailable; never zero for unknown.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_quoteobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          The measured value as an exact decimal string. Null when unavailable; never zero for unknown.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_nativeobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          The measured value as an exact decimal string. Null when unavailable; never zero for unknown.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_reportedobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          USD volume as the venues report it.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_derivedobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          USD volume derived with CCXT exchange prices, kept separate from the reported figure.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_usdobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          The measured value as an exact decimal string. Null when unavailable; never zero for unknown.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_countobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          The measured value as an exact decimal string. Null when unavailable; never zero for unknown.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

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

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.

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.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.

Get rolling volume and execution-count history

GEThttps://api.cantoncap.cc/v1/activity/{entity_kind}/{entity_id}
getActivity

Newest-first stored 24h, 7d or 30d activity. Default limit 1 returns the latest snapshot; in that current read a measurement the latest snapshot lacks keeps its latest usable value with that value's own as_of. time_start is inclusive and time_end exclusive; use the oldest returned as_of as the next time_end. History returns stored snapshots unchanged. Reported and CCXT-derived USD remain separate. Missing fields are null. Coverage is per measurement. No calculations are performed on reads.

Parameters

entity_kindenumpathrequired

Kind of entity: a market, an asset, a venue or the whole network.

One ofmarketassetvenueglobal
entity_idstringpathrequired

ID of the entity: a market, asset or venue ID.

networkenumqueryoptional

Canton network to read.

One ofmainnettestnetdevnetDefaultmainnet
windowenumqueryoptional

Rolling window of the activity.

One of24h7d30dDefault24h
time_startdate-timequeryoptional

Inclusive start of the range.

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

Exclusive end of the range. Use the oldest returned as_of as the next time_end.

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

Snapshots to return. The default of 1 is the current snapshot.

Default11 to 500

Request

curl -s "https://api.cantoncap.cc/v1/activity/asset/ast_515c3eaa72bd4a8b9403297879d78ef6?window=24h" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Stored volume and execution-count snapshots, newest first.

Example Response
{
  "status": {
    "timestamp": "2026-10-11T14:00:00.000Z",
    "elapsed_ms": 18,
    "error_code": 0,
    "error_message": null,
    "request_id": "req_7Hk2pQ9xLm"
  },
  "data": [
    {
      "entity_kind": "asset",
      "entity_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
      "network": "mainnet",
      "window": "24h",
      "as_of": "2026-10-11T14:00:00.000Z",
      "starts_at": "2026-10-10T14:00:00.000Z",
      "methodology_version": "v1",
      "markets": [
        {
          "market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
          "venue_id": "temple",
          "network": "mainnet",
          "base_asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
          "quote_asset_id": "ast_2d9c41e0b7a64f1e9c3b5a8d7e6f1c20"
        }
      ],
      "measurements": {
        "volume_base": {
          "value": "8342210.4",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "volume_quote": {
          "value": "1320455.18",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "volume_native": {
          "value": "8342210.4",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "volume_usd_reported": {
          "value": "1320455.18",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "volume_usd_derived": {
          "value": "1318902.77",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "volume_usd": {
          "value": "1320455.18",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        },
        "execution_count": {
          "value": "1284",
          "completeness": "complete",
          "covered_seconds": 86400,
          "methods": [
            "reported"
          ]
        }
      }
    }
  ]
}
  • dataarray of objects
    105 child fields
    • entity_kindenum

      Kind of entity the activity describes.

      One ofmarketassetvenueglobal
    • entity_idstring

      ID of the entity the activity describes.

    • networkenum

      Canton network the record belongs to.

      One ofmainnettestnetdevnet
    • windowenum

      Rolling window the values cover.

      One of24h7d30d
    • as_ofstring

      End of the window the snapshot covers.

    • starts_atstring

      Start of the window the snapshot covers.

    • methodology_versionstring
    • marketsarray of objects

      Markets included in the snapshot.

      5 child fields
      • 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
      • base_asset_idstring

        Asset ID of the base asset.

      • quote_asset_idstring

        Asset ID of the quote asset.

    • measurementsobject

      Each measurement with its own value, coverage and methods.

      91 child fields
      • volume_baseobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          The measured value as an exact decimal string. Null when unavailable; never zero for unknown.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_quoteobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          The measured value as an exact decimal string. Null when unavailable; never zero for unknown.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_nativeobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          The measured value as an exact decimal string. Null when unavailable; never zero for unknown.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_reportedobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          USD volume as the venues report it.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_derivedobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          USD volume derived with CCXT exchange prices, kept separate from the reported figure.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_usdobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          The measured value as an exact decimal string. Null when unavailable; never zero for unknown.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

          End 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_countobject
        12 child fields
        • market_coverageobjectoptional

          For 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_countinteger
          • included_market_countinteger
          • missing_activity_market_countinteger
          • unvalued_market_countinteger
          • partial_market_countinteger
          • incomplete_time_market_countinteger
        • valuedecimal stringnullable

          The measured value as an exact decimal string. Null when unavailable; never zero for unknown.

        • completenessenum

          complete, partial or unknown.

          One ofcompletepartialunknown
        • covered_secondsnumber

          Seconds of the window the observations cover.

        • methodsarray of strings

          Methods behind the value.

        • as_ofstringoptional

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

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.

Errors

StatusCodeWhen
400invalid_requestRequest validation failedA parameter is malformed, out of bounds or not one of its allowed values.
400invalid_requesttime_start must precede time_endThe range is empty or reversed.
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.
Esc
navigateopenEscclose