Skip to content
Docs
Get API Access
Browse the Documentation

API Reference

Assets

Canonical assets, listings, prices, and history.

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

Map venue-listed assets to stable IDs and Canton instrument identities

GEThttps://api.cantoncap.cc/v1/assets/map
getAssetMapCursor paginationETag

Includes assets listed in a trading market on a supported venue visible to the caller. Registry-only instruments are excluded, including when listing_status=all. A USD price or order book is not required.

Parameters

networkenumqueryoptional

Canton network to read.

One ofmainnettestnetdevnetDefaultmainnet
listing_statusenumqueryoptional

Listing status to return; all returns every status.

One ofactiveinactiveuntrackedsuspendedallDefaultactive
symbolstringqueryoptional

Ticker symbol to match, case-insensitive. An ambiguous symbol returns every match.

Up to 100 characters
instrument_adminstringqueryoptional

Canton instrument administrator to match exactly.

Up to 1024 characters
instrument_idstringqueryoptional

Canton instrument ID to match exactly.

Up to 1024 characters
limitintegerqueryoptional

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

Default1001 to 500
cursorstringqueryoptional

Opaque continuation cursor from the previous response.

Up to 8192 characters
If-None-Matchstringheaderoptional

Return 304 when this entity tag matches the current representation.

Request

curl -s "https://api.cantoncap.cc/v1/assets/map?symbol=CC" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Asset 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": [
    {
      "asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
      "network": "mainnet",
      "instrument_admin": "DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
      "instrument_id": "Amulet",
      "name": "Canton Coin",
      "symbol": "CC",
      "status": "active"
    }
  ],
  "pagination": {
    "next_cursor": "eyJ2IjoxLCJvIjoyNX0"
  }
}
  • dataarray of objects
    7 child fields
    • asset_idstring

      Stable opaque CantonCap asset ID, prefixed ast_.

    • networkenum

      Canton network the record belongs to.

      One ofmainnettestnetdevnet
    • instrument_adminstring

      Canton party that administers the instrument. With instrument_id it is the instrument's Canton identity.

    • instrument_idstring

      Instrument identifier under its administrator.

    • namestringnullable

      Display name. Null when none is published.

    • symbolstringnullable

      Ticker symbol. Null when none is published.

    • statusenum

      Lifecycle status of the record.

      One ofactiveinactiveuntrackedsuspended
  • 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 ranked latest asset market data

GEThttps://api.cantoncap.cc/v1/assets/listings/latest
getLatestAssetListingsCursor paginationETag

Parameters

networkenumqueryoptional

Canton network to read.

One ofmainnettestnetdevnetDefaultmainnet
convertstringqueryoptional

One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection.

DefaultUSDComma-separated, up to 3 values, each distinct
sortenumqueryoptional

Field to sort the listing by.

One ofmarket_capfdvvolume_24hliquidityprice_change_24hsymbolDefaultfdv
sort_direnumqueryoptional

Sort direction.

One ofascdescDefaultdesc
limitintegerqueryoptional

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

Default1001 to 500
cursorstringqueryoptional

Opaque continuation cursor from the previous response.

Up to 4096 characters
If-None-Matchstringheaderoptional

Return 304 when this entity tag matches the current representation.

Request

curl -s "https://api.cantoncap.cc/v1/assets/listings/latest?convert=USD&sort=fdv&limit=25" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Ranked asset listings with prices keyed by currency. 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": [
    {
      "asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
      "quotes": {
        "USD": {
          "price": "0.1584",
          "market_cap": null,
          "fdv": "715482911.36",
          "volume_24h": "1840221.55",
          "volume": {
            "method": "trades",
            "coverage": "complete",
            "change_24h_pct": "7.31"
          },
          "price_changes_pct": {
            "1h": "0.21",
            "24h": "-1.84",
            "7d": "4.12",
            "30d": null
          },
          "last_updated_at": "2026-10-11T14:00:00.000Z"
        }
      },
      "position": 1,
      "rank": 1,
      "name": "Canton Coin",
      "symbol": "CC",
      "status": "active",
      "liquidity": {
        "liquidity_usd": "4120334.10",
        "bid_depth_usd": "182400.55",
        "ask_depth_usd": "176920.30"
      },
      "liquidity_to_fdv_ratio": "0.005758709342091255",
      "liquidity_to_fdv_coverage": {
        "completeness": "complete",
        "eligible_pool_count": 3,
        "included_pool_count": 3
      },
      "volume_24h_to_fdv_ratio": "0.002571986212208561",
      "volume_24h_to_fdv_coverage": {
        "window": "24h",
        "method": "trades",
        "completeness": "complete"
      },
      "liquidity_score": 82.4,
      "liquidity_score_methodology": "asset-top-three-liquidity-v1",
      "liquidity_score_updated_at": "2026-10-11T13:55:00.000Z"
    }
  ],
  "pagination": {
    "next_cursor": "eyJ2IjoxLCJvIjoyNX0"
  },
  "sort": {
    "field": "fdv",
    "direction": "desc",
    "convert": "USD"
  }
}
  • dataarray of objects
    51 child fields
    • asset_idstring

      Stable opaque CantonCap asset ID, prefixed ast_.

    • quotesmap

      Quotes keyed by conversion currency code, such as USD. A currency without an observation is omitted, never substituted.

      27 child fields
      • pricedecimal string

        Reference price in the conversion currency, as an exact decimal string.

      • market_capdecimal stringnullable

        Null for every asset today: no reviewed circulating-supply methodology exists. FDV is never substituted for it.

      • fdvdecimal stringnullable

        Fully diluted valuation: price times the reported total supply. Null when the supply is missing, stale or withheld; unavailable is never zero.

      • volume_24hdecimal stringnullable

        Rolling 24-hour volume in the conversion currency. Null when unavailable.

      • volumeobjectnullable

        How the 24-hour volume was measured, with its coverage. Null when no measurement was selected.

        20 child fields
        • selection_methodenumnullableoptional

          Actual selected method. The legacy method field keeps its reported/trades enum.

          One ofvenue_reported_aggregatecanonical_tradesactivity
        • methodology_versionstringoptional
        • interpretationenumoptional

          Completeness applies to the measurement's own window, not the current wall clock. A zero is a value, not unavailable activity.

          One ofcomplete_totalpartial_subtotalunavailablecoverage_unknown
        • coverage_detailobjectoptional

          Counts come from the selected evidence, never ticker nulls. Null means the detail was not recorded. Missing activity has no native or USD volume; unvalued activity has native volume but no selected USD. Partial and incomplete-time counts concern included markets and may overlap. Retained is null when retention status was not established. No restricted market identities are exposed.

          12 child fields
          • unitenum
            One ofUSDdisplay_currency
          • windowenum

            Rolling window the values cover.

            Always24h
          • starts_atdate-timenullable

            Start of the window the snapshot covers.

          • ends_atdate-timenullable
          • covered_secondsnumbernullable

            Seconds of the window the observations cover.

          • retainedbooleannullable
          • eligible_market_countintegernullable
          • included_market_countintegernullable
          • missing_activity_market_countintegernullable
          • unvalued_market_countintegernullable
          • partial_market_countintegernullable
          • incomplete_time_market_countintegernullable
        • methodenumnullable

          reported (the venue's own aggregate) or trades (observed trades); null when nothing was selected.

          One ofreportedtrades
        • coverageenum

          Coverage of the selected 24-hour volume measurement. It describes observations, not the venue.

          One ofcompletepartialunknown
        • change_24h_pctdecimal stringnullable

          24-hour change of the volume, in percentage points: "1.5" means 1.5%.

        • as_ofdate-timeoptional

          Measurement time of this volume, independent of the quote price update time.

      • price_changes_pctmap

        Price change per window, keyed by 1h, 24h, 7d and 30d, in percentage points: "1.5" means +1.5%. A window without data is null.

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

    • positioninteger

      One-based position within this snapshot and requested sort; not a market-cap rank.

    • rankintegernullable

      Canonical one-based coin rank over the whole listing snapshot, from FDV, pool liquidity and rolling 24-hour volume; the same whatever sort, page or display currency is requested. Null for snapshots written before ranks existed.

    • namestringnullable

      Display name. Null when none is published.

    • symbolstringnullable

      Ticker symbol. Null when none is published.

    • statusenum

      Lifecycle status of the record.

      One ofactiveinactiveuntrackedsuspended
    • liquidityobject

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

      3 child fields
      • liquidity_usddecimal stringnullable

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

      • bid_depth_usddecimal stringnullable

        Executable bid depth of the asset's order books, in USD.

      • ask_depth_usddecimal stringnullable

        Executable ask depth of the asset's order books, in USD.

    • liquidity_to_fdv_ratiodecimal stringnullable

      Aggregate AMM pool liquidity USD divided by FDV USD: a raw ratio, 0.025 displays as 2.5%, exact to 18 fractional digits, not capped at 1. Pool depth only (each eligible pool once per asset); order-book depth and executable capacity are excluded. Identical in every display currency. Null when the asset has no pools, no pool is valued, or FDV is missing, stale, revoked or zero; a measured zero pool liquidity with a positive FDV is 0.

    • liquidity_to_fdv_coverageobject

      Pool coverage behind liquidity_to_fdv_ratio: partial when an eligible pool has no valuation, unknown when the asset has no pools. Order-book measurements do not affect it.

      3 child fields
      • completenessenum

        complete, partial or unknown.

        One ofcompletepartialunknown
      • eligible_pool_countinteger
      • included_pool_countinteger
    • volume_24h_to_fdv_ratiodecimal stringnullable

      Best available rolling 24-hour volume USD divided by FDV USD: a raw ratio, 0.12 displays as 12%, exact to 18 fractional digits, not capped at 1. The numerator is the listing's selected volume measurement (reported or observed trades, never their sum) over the eligible market population, pools and order books alike. Identical in every display currency. Null when volume is unavailable or FDV is missing, stale, revoked or zero; a measured zero volume with a positive FDV is 0.

    • volume_24h_to_fdv_coverageobject

      The volume measurement behind volume_24h_to_fdv_ratio: its rolling window, the selected method and that measurement's coverage, so a ratio over partial coverage is distinguishable.

      3 child fields
      • windowenum

        Rolling window the values cover.

        Always24h
      • methodenumnullable
        One ofreportedtrades
      • completenessenum

        complete, partial or unknown.

        One ofcompletepartialunknown
    • liquidity_scorenumbernullableoptional

      Arithmetic mean of an asset's top three market liquidity scores.

    • liquidity_score_methodologyenumoptional

      Methodology version of the liquidity score.

      Alwaysasset-top-three-liquidity-v1
    • liquidity_score_updated_atdate-timenullableoptional

      Oldest contributing market measurement time; null when unavailable. Listings retain their browse snapshot value.

  • paginationobject

    Present on cursor-paginated collections.

    1 child field
    • next_cursorstringnullable

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

  • sortobject

    The sort this collection is in: field, direction and primary currency, stated once.

    3 child fields
    • fieldenum

      Field the collection is sorted by.

      One ofmarket_capfdvvolume_24hliquidityprice_change_24hsymbol
    • directionenum

      Sort direction.

      One ofascdesc
    • convertstring

      Currency the sort is evaluated in.

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

Get descriptive token metadata for stable asset IDs

GEThttps://api.cantoncap.cc/v1/assets/info
getAssetInfoBatchETag

Parameters

includeenumqueryoptional

registry adds the asset's registry configurations to the response.

One ofregistry
idsstringqueryrequired

One to 100 distinct stable CantonCap asset IDs, comma-separated. Unknown and unpublished IDs are omitted without revealing private records.

Comma-separated, up to 100 values, each distinct
If-None-Matchstringheaderoptional

Return 304 when this entity tag matches the current representation.

Request

curl -s "https://api.cantoncap.cc/v1/assets/info?ids=ast_515c3eaa72bd4a8b9403297879d78ef6,ast_2d9c41e0b7a64f1e9c3b5a8d7e6f1c20" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Asset 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": [
    {
      "asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
      "network": "mainnet",
      "instrument_admin": "DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
      "instrument_id": "Amulet",
      "name": "Canton Coin",
      "symbol": "CC",
      "status": "active",
      "aliases": [
        "Amulet"
      ],
      "decimals": 10,
      "total_supply": "4517356203.5",
      "total_supply_as_of": "2026-10-11T12:00:00.000Z",
      "token_standard_apis": {
        "registry-v1": "https://registry.example.com/api/v1"
      },
      "description": "The native utility token of the Canton Network.",
      "website_url": "https://www.example.com",
      "logo_url": "https://assets.example.com/logo.png",
      "last_updated_at": "2026-10-11T14:00:00.000Z",
      "registry": {
        "configuration_count": 1,
        "url": "https://www.example.com"
      },
      "issuers": [
        {
          "issuer_id": "iss_6b2d8f4a1c3e4b5d9f7a2c4e6b8d0f13",
          "legal_name": "Example Issuer Ltd.",
          "brand_name": "Example Issuer",
          "verification_status": "domain_verified",
          "relationship": "issuer"
        }
      ],
      "documentation_url": "https://docs.example.com",
      "social_links": [
        {
          "label": "Website",
          "url": "https://www.example.com"
        }
      ],
      "categories": [
        "infrastructure"
      ],
      "liquidity_score": 82.4,
      "liquidity_score_methodology": "asset-top-three-liquidity-v1",
      "liquidity_score_updated_at": "2026-10-11T13:55:00.000Z"
    }
  ]
}
  • dataarray of objects
    61 child fields
    • asset_idstring

      Stable opaque CantonCap asset ID, prefixed ast_.

    • networkenum

      Canton network the record belongs to.

      One ofmainnettestnetdevnet
    • instrument_adminstring

      Canton party that administers the instrument. With instrument_id it is the instrument's Canton identity.

    • instrument_idstring

      Instrument identifier under its administrator.

    • namestringnullable

      Display name. Null when none is published.

    • symbolstringnullable

      Ticker symbol. Null when none is published.

    • statusenum

      Lifecycle status of the record.

      One ofactiveinactiveuntrackedsuspended
    • aliasesarray of strings

      Other names or symbols the asset is known by.

    • decimalsintegernullable

      Decimal places the instrument uses. Null when unknown.

    • total_supplydecimal stringnullableoptional

      Reported total supply in instrument units; null when unavailable.

    • total_supply_as_ofdate-timenullableoptional

      Source timestamp for the reported total supply.

    • token_standard_apismap
    • descriptionstringnullable

      Approved description. Null when none is published.

    • website_urlURI stringnullable

      Official website. Null when none is published.

    • logo_urlURI stringnullable

      Logo image URL. Null when none is published.

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

    • registryobjectnullable

      How many registry configurations exist and the URL that lists them.

      2 child fields
      • configuration_countinteger
      • urlstring
    • registry_configurationsobjectnullableoptional

      Registry configurations, present when requested with include=registry.

      27 child fields
      • source_urlURI string
      • last_checked_atstring
      • configuration_countinteger
      • completeboolean

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

      • configurationsarray of objects
        22 child fields
        • configuration_idstring
        • operatorstring
        • providerstring
        • registrarstring
        • default_identifierobject
          3 child fields
          • sourcestring
          • schemestring
          • idstring
        • additional_identifiersarray of objects
          3 child fields
          • sourcestring
          • schemestring
          • idstring
        • issuer_requirementsarray of objects
          4 child fields
          • issuerstring
          • required_claimsarray of objects
            2 child fields
            • propertystring
            • valuestring

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

        • holder_requirementsarray of objects
          4 child fields
          • issuerstring
          • required_claimsarray of objects
            2 child fields
            • propertystring
            • valuestring

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

    • issuersarray of objects

      Issuers linked to the asset, with the relationship and verification status.

      5 child fields
      • issuer_idstring

        Stable opaque CantonCap issuer ID, prefixed iss_.

      • legal_namestringnullable

        Registered legal name. Null when not published.

      • brand_namestringnullable

        Brand name. Null when not published.

      • verification_statusenum

        How the issuer's identity was verified.

        One ofunverifieddomain_verifiedissuer_attestedmanually_verified
      • relationshipstring

        How the issuer relates to the asset.

    • documentation_urlURI stringnullable

      Official documentation. Null when none is published.

    • social_linksarray of objectsoptional

      Official social profiles, each a label and a URL.

      2 child fields
      • labelstring
      • urlURI string
    • categoriesarray of strings

      Category labels.

    • liquidity_scorenumbernullableoptional

      Arithmetic mean of an asset's top three market liquidity scores.

    • liquidity_score_methodologyenumoptional

      Methodology version of the liquidity score.

      Alwaysasset-top-three-liquidity-v1
    • liquidity_score_updated_atdate-timenullableoptional

      Oldest contributing market measurement time; null when unavailable. Listings retain their browse snapshot value.

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

Get one asset by stable ID

GEThttps://api.cantoncap.cc/v1/assets/{asset_id}
getAssetETag

Parameters

asset_idstringpathrequired

Stable opaque CantonCap asset ID.

includeenumqueryoptional

registry adds the asset's registry configurations to the response.

One ofregistry
If-None-Matchstringheaderoptional

Return 304 when this entity tag matches the current representation.

Request

curl -s "https://api.cantoncap.cc/v1/assets/ast_515c3eaa72bd4a8b9403297879d78ef6" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Asset detail. 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": {
    "asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
    "network": "mainnet",
    "instrument_admin": "DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
    "instrument_id": "Amulet",
    "name": "Canton Coin",
    "symbol": "CC",
    "status": "active",
    "aliases": [
      "Amulet"
    ],
    "decimals": 10,
    "total_supply": "4517356203.5",
    "total_supply_as_of": "2026-10-11T12:00:00.000Z",
    "token_standard_apis": {
      "registry-v1": "https://registry.example.com/api/v1"
    },
    "description": "The native utility token of the Canton Network.",
    "website_url": "https://www.example.com",
    "logo_url": "https://assets.example.com/logo.png",
    "last_updated_at": "2026-10-11T14:00:00.000Z",
    "registry": {
      "configuration_count": 1,
      "url": "https://www.example.com"
    },
    "issuers": [
      {
        "issuer_id": "iss_6b2d8f4a1c3e4b5d9f7a2c4e6b8d0f13",
        "legal_name": "Example Issuer Ltd.",
        "brand_name": "Example Issuer",
        "verification_status": "domain_verified",
        "relationship": "issuer"
      }
    ],
    "documentation_url": "https://docs.example.com",
    "social_links": [
      {
        "label": "Website",
        "url": "https://www.example.com"
      }
    ],
    "categories": [
      "infrastructure"
    ],
    "liquidity_score": 82.4,
    "liquidity_score_methodology": "asset-top-three-liquidity-v1",
    "liquidity_score_updated_at": "2026-10-11T13:55:00.000Z"
  }
}
  • dataobject
    61 child fields
    • asset_idstring

      Stable opaque CantonCap asset ID, prefixed ast_.

    • networkenum

      Canton network the record belongs to.

      One ofmainnettestnetdevnet
    • instrument_adminstring

      Canton party that administers the instrument. With instrument_id it is the instrument's Canton identity.

    • instrument_idstring

      Instrument identifier under its administrator.

    • namestringnullable

      Display name. Null when none is published.

    • symbolstringnullable

      Ticker symbol. Null when none is published.

    • statusenum

      Lifecycle status of the record.

      One ofactiveinactiveuntrackedsuspended
    • aliasesarray of strings

      Other names or symbols the asset is known by.

    • decimalsintegernullable

      Decimal places the instrument uses. Null when unknown.

    • total_supplydecimal stringnullableoptional

      Reported total supply in instrument units; null when unavailable.

    • total_supply_as_ofdate-timenullableoptional

      Source timestamp for the reported total supply.

    • token_standard_apismap
    • descriptionstringnullable

      Approved description. Null when none is published.

    • website_urlURI stringnullable

      Official website. Null when none is published.

    • logo_urlURI stringnullable

      Logo image URL. Null when none is published.

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

    • registryobjectnullable

      How many registry configurations exist and the URL that lists them.

      2 child fields
      • configuration_countinteger
      • urlstring
    • registry_configurationsobjectnullableoptional

      Registry configurations, present when requested with include=registry.

      27 child fields
      • source_urlURI string
      • last_checked_atstring
      • configuration_countinteger
      • completeboolean

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

      • configurationsarray of objects
        22 child fields
        • configuration_idstring
        • operatorstring
        • providerstring
        • registrarstring
        • default_identifierobject
          3 child fields
          • sourcestring
          • schemestring
          • idstring
        • additional_identifiersarray of objects
          3 child fields
          • sourcestring
          • schemestring
          • idstring
        • issuer_requirementsarray of objects
          4 child fields
          • issuerstring
          • required_claimsarray of objects
            2 child fields
            • propertystring
            • valuestring

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

        • holder_requirementsarray of objects
          4 child fields
          • issuerstring
          • required_claimsarray of objects
            2 child fields
            • propertystring
            • valuestring

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

    • issuersarray of objects

      Issuers linked to the asset, with the relationship and verification status.

      5 child fields
      • issuer_idstring

        Stable opaque CantonCap issuer ID, prefixed iss_.

      • legal_namestringnullable

        Registered legal name. Null when not published.

      • brand_namestringnullable

        Brand name. Null when not published.

      • verification_statusenum

        How the issuer's identity was verified.

        One ofunverifieddomain_verifiedissuer_attestedmanually_verified
      • relationshipstring

        How the issuer relates to the asset.

    • documentation_urlURI stringnullable

      Official documentation. Null when none is published.

    • social_linksarray of objectsoptional

      Official social profiles, each a label and a URL.

      2 child fields
      • labelstring
      • urlURI string
    • categoriesarray of strings

      Category labels.

    • liquidity_scorenumbernullableoptional

      Arithmetic mean of an asset's top three market liquidity scores.

    • liquidity_score_methodologyenumoptional

      Methodology version of the liquidity score.

      Alwaysasset-top-three-liquidity-v1
    • liquidity_score_updated_atdate-timenullableoptional

      Oldest contributing market measurement time; null when unavailable. Listings retain their browse snapshot value.

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_foundAsset not foundThe asset 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 latest aggregate quotes for stable asset IDs

GEThttps://api.cantoncap.cc/v1/assets/quotes/latest
getLatestAssetQuotesETag

Parameters

idsstringqueryrequired

One to 100 distinct stable CantonCap asset IDs, comma-separated. Unknown and unpublished IDs are omitted without revealing private records.

Comma-separated, up to 100 values, each distinct
convertstringqueryoptional

One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection.

DefaultUSDComma-separated, up to 3 values, each distinct
price_change_periodsstringqueryoptional

Windows to include in price_changes_pct, comma-separated.

Default1h,24h,7d,30d
If-None-Matchstringheaderoptional

Return 304 when this entity tag matches the current representation.

Request

curl -s "https://api.cantoncap.cc/v1/assets/quotes/latest?ids=ast_515c3eaa72bd4a8b9403297879d78ef6,ast_2d9c41e0b7a64f1e9c3b5a8d7e6f1c20&convert=USD" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Asset quote 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": [
    {
      "asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
      "quotes": {
        "USD": {
          "price": "0.1584",
          "market_cap": null,
          "fdv": "715482911.36",
          "volume_24h": "1840221.55",
          "volume": {
            "method": "trades",
            "coverage": "complete",
            "change_24h_pct": "7.31"
          },
          "price_changes_pct": {
            "1h": "0.21",
            "24h": "-1.84",
            "7d": "4.12",
            "30d": null
          },
          "last_updated_at": "2026-10-11T14:00:00.000Z"
        }
      }
    }
  ]
}
  • dataarray of objects
    29 child fields
    • asset_idstring

      Stable opaque CantonCap asset ID, prefixed ast_.

    • quotesmap

      Quotes keyed by conversion currency code, such as USD. A currency without an observation is omitted, never substituted.

      27 child fields
      • pricedecimal string

        Reference price in the conversion currency, as an exact decimal string.

      • market_capdecimal stringnullable

        Null for every asset today: no reviewed circulating-supply methodology exists. FDV is never substituted for it.

      • fdvdecimal stringnullable

        Fully diluted valuation: price times the reported total supply. Null when the supply is missing, stale or withheld; unavailable is never zero.

      • volume_24hdecimal stringnullable

        Rolling 24-hour volume in the conversion currency. Null when unavailable.

      • volumeobjectnullable

        How the 24-hour volume was measured, with its coverage. Null when no measurement was selected.

        20 child fields
        • selection_methodenumnullableoptional

          Actual selected method. The legacy method field keeps its reported/trades enum.

          One ofvenue_reported_aggregatecanonical_tradesactivity
        • methodology_versionstringoptional
        • interpretationenumoptional

          Completeness applies to the measurement's own window, not the current wall clock. A zero is a value, not unavailable activity.

          One ofcomplete_totalpartial_subtotalunavailablecoverage_unknown
        • coverage_detailobjectoptional

          Counts come from the selected evidence, never ticker nulls. Null means the detail was not recorded. Missing activity has no native or USD volume; unvalued activity has native volume but no selected USD. Partial and incomplete-time counts concern included markets and may overlap. Retained is null when retention status was not established. No restricted market identities are exposed.

          12 child fields
          • unitenum
            One ofUSDdisplay_currency
          • windowenum

            Rolling window the values cover.

            Always24h
          • starts_atdate-timenullable

            Start of the window the snapshot covers.

          • ends_atdate-timenullable
          • covered_secondsnumbernullable

            Seconds of the window the observations cover.

          • retainedbooleannullable
          • eligible_market_countintegernullable
          • included_market_countintegernullable
          • missing_activity_market_countintegernullable
          • unvalued_market_countintegernullable
          • partial_market_countintegernullable
          • incomplete_time_market_countintegernullable
        • methodenumnullable

          reported (the venue's own aggregate) or trades (observed trades); null when nothing was selected.

          One ofreportedtrades
        • coverageenum

          Coverage of the selected 24-hour volume measurement. It describes observations, not the venue.

          One ofcompletepartialunknown
        • change_24h_pctdecimal stringnullable

          24-hour change of the volume, in percentage points: "1.5" means 1.5%.

        • as_ofdate-timeoptional

          Measurement time of this volume, independent of the quote price update time.

      • price_changes_pctmap

        Price change per window, keyed by 1h, 24h, 7d and 30d, in percentage points: "1.5" means +1.5%. A window without data is null.

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

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.
  • 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.
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 historical quote snapshots

GEThttps://api.cantoncap.cc/v1/assets/quotes/historical
getHistoricalAssetQuotesCursor pagination

Newest-first sampled reference-price history of one to 100 assets in one quote currency. Each point is the latest eligible quote calculated in one UTC interval; intervals without a quote are omitted, never filled. A point's timestamp is the instant its quote was calculated: its price and fdv are both valued at that instant, and interval, time_start (inclusive) and time_end (exclusive) apply to it.

fdv is the exact decimal product of the point's price and the registry total supply known when the quote was calculated: the latest approved observation that applied and had been observed by timestamp, provided its as-of time lies within the supply freshness window (24 hours by default, stored with the calculation) before timestamp. Supply observed later, corrections included, never revalues a past point; a new quote uses it. fdv is null when that supply was missing or stale, when the quote predates FDV calculation, or when the supply's registrar no longer publishes it to the caller; unavailable is never zero, and a valid zero supply gives an fdv of zero. market_cap is null: no reviewed circulating-supply methodology exists.

Every page re-applies current publication controls. A revoked quote is omitted; a withdrawn supply nulls fdv without hiding the price. A continuation cursor pins the query and the quotes retained before its first page, so later quotes never enter that traversal and pages never duplicate, omit or reorder points; a new query sees them. Use a cursor only with the query that returned it. limit bounds the points of all requested series together. A range spans at most 31 days, further bounded by plan history depth.

Parameters

idsstringqueryrequired

One to 100 distinct stable CantonCap asset IDs, comma-separated. Unknown and unpublished IDs are omitted without revealing private records.

Comma-separated, up to 100 values, each distinct
convertstringqueryoptional

One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection.

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

Up to 8192 characters

Request

curl -s "https://api.cantoncap.cc/v1/assets/quotes/historical?ids=ast_515c3eaa72bd4a8b9403297879d78ef6&convert=USD&interval=1h&time_start=2026-10-10T00:00:00Z&time_end=2026-10-11T00:00:00Z" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Asset quote 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": [
    {
      "asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
      "convert": "USD",
      "interval": "1h",
      "points": [
        {
          "timestamp": "2026-10-11T13:59:12.000Z",
          "price": "0.1584",
          "market_cap": null,
          "fdv": "715482911.36",
          "volume_24h": "1840221.55",
          "last_updated_at": "2026-10-11T14:00:00.000Z"
        }
      ]
    }
  ],
  "pagination": {
    "next_cursor": "eyJ2IjoxLCJvIjoyNX0"
  }
}
  • dataarray of objects
    10 child fields
    • asset_idstring

      Stable opaque CantonCap asset ID, prefixed ast_.

    • convertstring

      Conversion currency of the values.

    • intervalenum

      Sampling interval of the series.

      One of1m5m10m15m30m1h4h1d7d1w
    • pointsarray of objects

      Points, newest first. Empty intervals are omitted, never filled.

      6 child fields
      • timestampdate-time

        UTC instant the sampled quote was calculated. Its price and FDV are valued at this instant, and the sampling interval and time range apply to it.

      • pricedecimal string

        Exact reference price in the requested currency at timestamp.

      • market_capdecimal stringnullable

        Null for every asset today: no reviewed circulating-supply methodology exists. FDV is never substituted for it.

      • fdvdecimal stringnullable

        Fully diluted valuation: price times the reported total supply. Null when the supply is missing, stale or withheld; unavailable is never zero.

      • volume_24hdecimal stringnullable

        Rolling 24-hour volume in the conversion currency. Null when unavailable.

      • last_updated_atdate-time

        When the sampled quote was recorded.

  • 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.
  • 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.
422unsupported_capabilityThe historical request exceeds the supported input boundThe range and ID list together read more observations than one request supports.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.

Get aggregate asset OHLCV candles

GEThttps://api.cantoncap.cc/v1/assets/ohlcv/historical
getHistoricalAssetOhlcvCursor pagination

Closed CantonCap bars built by background workers from reference-price observations and served from storage; no candle is calculated at request time. OHLC prices are in convert; volume and volume_usd are always the USD notional of the asset's observed public trades across its markets, with volume_coverage separating a verified zero from a partial subtotal or an unavailable measurement. 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

idsstringqueryrequired

One to 100 distinct stable CantonCap asset IDs, comma-separated. Unknown and unpublished IDs are omitted without revealing private records.

Comma-separated, up to 100 values, each distinct
convertstringqueryoptional

One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection.

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

Up to 8192 characters

Request

curl -s "https://api.cantoncap.cc/v1/assets/ohlcv/historical?ids=ast_515c3eaa72bd4a8b9403297879d78ef6&convert=USD&interval=1h&limit=24" \
  -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",
      "asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
      "convert": "USD",
      "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": "1840221.55",
      "volume_usd": "1840221.55",
      "volume_coverage": "complete",
      "trade_count": 1284,
      "volume_method": "observed_trades",
      "complete": true
    }
  ],
  "pagination": {
    "next_cursor": "eyJ2IjoxLCJvIjoyNX0"
  }
}
  • dataarray of objects
    16 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.

    • asset_idstring

      Stable opaque CantonCap asset ID, prefixed ast_.

    • convertstring

      Conversion currency of the values.

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

    • volumedecimal stringnullable

      USD notional of the asset's observed public trades in the window, whatever convert is; the same value as volume_usd. Null when no eligible USD measurement exists.

    • volume_usddecimal stringnullableoptional

      Exact USD notional of the asset's observed public trades across its markets in the window. Each distinct trade is valued once, at its own execution time, with a CCXT-anchored USD reference observed by then and at most 180 seconds older; a trade without an eligible conversion is excluded and reported through volume_coverage. Venue-reported totals are never added. Null when no eligible USD measurement exists.

    • volume_coverageenumoptional

      complete: eligible collection windows cover the whole interval for every eligible market and every observed trade was valued, so a zero is verified trading absence. partial: a covered subtotal, because a market lacks full interval coverage or a trade had no eligible USD conversion. unavailable: volume_usd is null.

      One ofcompletepartialunavailable
    • trade_countintegernullable

      Distinct eligible trades across the asset's covered markets in the window, including trades excluded from volume_usd for lack of a conversion.

    • volume_methodenum

      observed_trades when the asset has at least one market with public trade evidence; none otherwise.

      One ofnoneobserved_trades
    • 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 price, FDV, market-cap, and volume series for one asset

GEThttps://api.cantoncap.cc/v1/assets/{asset_id}/market-chart
getAssetMarketChartCursor pagination

Newest-first chart series of one asset, sampled from the same quotes as GET /v1/assets/quotes/historical: for the same asset, currency, interval, range and page size, every page holds the same points with the same timestamp, price, market_cap and fdv, and volume is that endpoint's volume_24h (rolling 24-hour volume, not interval volume). A point's timestamp is the instant its quote was calculated, when its price and fdv are valued. fdv follows the same rules: the exact product of price and the total supply known at timestamp, null when that supply was missing, stale, not calculated or is no longer published to the caller, and never revalued by later observations. market_cap is null. last_updated_at is the newest point's timestamp on the page.

Every page re-applies current publication controls, and a continuation cursor pins the query and the quotes retained before its first page. A request with no published point on the requested page returns 404 without saying why: an unknown or unpublished asset, a range without quotes, or a continuation whose remaining quotes were withdrawn. A range spans at most 31 days, further bounded by plan history depth.

Parameters

asset_idstringpathrequired

Stable opaque CantonCap asset ID.

convertstringqueryoptional

One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection.

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

Up to 8192 characters

Request

curl -s "https://api.cantoncap.cc/v1/assets/ast_515c3eaa72bd4a8b9403297879d78ef6/market-chart?convert=USD&interval=1h" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Chart-ready asset series.

Example Response
{
  "status": {
    "timestamp": "2026-10-11T14:00:00.000Z",
    "elapsed_ms": 18,
    "error_code": 0,
    "error_message": null,
    "request_id": "req_7Hk2pQ9xLm"
  },
  "data": {
    "asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
    "convert": "USD",
    "points": [
      {
        "timestamp": "2026-10-11T13:59:12.000Z",
        "price": "0.1584",
        "market_cap": null,
        "fdv": "715482911.36",
        "volume": "1840221.55"
      }
    ],
    "last_updated_at": "2026-10-11T14:00:00.000Z"
  },
  "pagination": {
    "next_cursor": "eyJ2IjoxLCJvIjoyNX0"
  }
}
  • dataobject
    9 child fields
    • asset_idstring

      Stable opaque CantonCap asset ID, prefixed ast_.

    • convertstring

      Conversion currency of the values.

    • pointsarray of objects

      Points, newest first. Empty intervals are omitted, never filled.

      5 child fields
      • timestampdate-time

        UTC instant the sampled quote was calculated; price and FDV are valued at it.

      • pricedecimal stringnullable

        Price as an exact decimal string.

      • market_capdecimal stringnullable

        Null for every asset today: no reviewed circulating-supply methodology exists. FDV is never substituted for it.

      • fdvdecimal stringnullable

        Fully diluted valuation: price times the reported total supply. Null when the supply is missing, stale or withheld; unavailable is never zero.

      • volumedecimal stringnullable
    • last_updated_atstringnullable

      The newest point's timestamp on this page.

  • 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.
404not_foundMarket chart not foundNo published point on the requested page: an unknown asset, a range without quotes, or a continuation whose quotes were withdrawn.
422unsupported_capabilityThe historical request exceeds the supported input boundThe range reads more observations than one request supports.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.

Get the reported total supply history of one asset

GEThttps://api.cantoncap.cc/v1/assets/{asset_id}/supply/historical
getHistoricalAssetSupplyCursor pagination

Newest-first sampled history of the total supply that the Digital Asset registry reports for one asset. Each point contains only supply, the exact retained decimal, and timestamp, the UTC instant at which the registry reports that supply applies (its as-of time). Ingestion times, provenance and freshness evidence stay internal.

Intervals are UTC and epoch-aligned, and 7d/1w intervals start on Monday 00:00 UTC. An interval contains the timestamps from its start, inclusive, to its end, exclusive; time_start is inclusive and time_end exclusive on the same timestamp. Each interval with at least one eligible observation returns the observation with the latest timestamp. When several observations report the same timestamp, the most recently retained revision (a correction or replay) is returned, and identical observation times fall back to retention order, so results are deterministic. Supply changes inside one interval are represented by its last value only; request a smaller interval to see more of them.

Intervals without an eligible observation are omitted: no zero, carried-forward or interpolated value is invented. An empty points array means no eligible observation in the range, not a zero supply; repeated unchanged observations appear as one point per interval with the same supply. This is not a complete mint/burn history, circulating supply or maximum supply. An observation whose as-of time is later than its own observation time is not published. A point reports the latest retained revision of its as-of time, not what was known at that time.

Only registry observations of an active asset approved under the registrar's current publication policy are published, with the asset's own publication. The asset must be published to the caller, otherwise the response is 404 without revealing whether it exists. Every page re-applies the current policy, so a revocation or opt-out withdraws points on the next page. A continuation cursor pins the asset, interval, range and observation boundary of its first page: observations, corrections and late observations retained afterwards never enter that traversal, so pages never duplicate, omit or reorder the selected history. A range spans at most 31 days; a request reading more than 100,000 eligible observations is rejected as unsupported.

Parameters

asset_idstringpathrequired

Stable opaque CantonCap asset ID.

intervalenumqueryoptional

UTC-aligned sampling interval of the supply as-of timestamp. Results are newest first; intervals without an eligible observation are omitted.

One of1m5m10m15m30m1h4h1d7d1wDefault1h
time_startdate-timequeryoptional

Inclusive UTC start of the supply as-of range; 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 end of the supply as-of range; defaults to request time and is pinned by continuation cursors.

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

Maximum number of points per page, bounded by the caller's plan.

Default1001 to 500
cursorstringqueryoptional

Opaque continuation cursor from the previous response. It must be used with the same asset, interval and range.

Up to 8192 characters

Request

curl -s "https://api.cantoncap.cc/v1/assets/ast_515c3eaa72bd4a8b9403297879d78ef6/supply/historical?interval=1d&time_start=2026-10-01T00:00:00Z&time_end=2026-10-11T00:00:00Z" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Sampled reported total-supply history of one asset.

Example Response
{
  "status": {
    "timestamp": "2026-10-11T14:00:00.000Z",
    "elapsed_ms": 18,
    "error_code": 0,
    "error_message": null,
    "request_id": "req_7Hk2pQ9xLm"
  },
  "data": {
    "asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
    "interval": "1h",
    "points": [
      {
        "supply": "4517356203.5",
        "timestamp": "2026-10-11T13:59:12.000Z"
      }
    ]
  },
  "pagination": {
    "next_cursor": "eyJ2IjoxLCJvIjoyNX0"
  }
}
  • dataobject
    5 child fields
    • asset_idstring

      Stable opaque CantonCap asset ID, prefixed ast_.

    • intervalenum

      Sampling interval of the series.

      One of1m5m10m15m30m1h4h1d7d1w
    • pointsarray of objects

      Newest first, one point per populated interval; empty intervals are omitted.

      2 child fields
      • supplydecimal string

        Exact reported total supply as retained; never rounded, rescaled or interpolated.

      • timestampdate-time

        UTC instant at which the source reports that this supply applies (the retained supply as-of time).

  • 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.
404not_foundAsset not foundThe asset does not exist or is not published.
422unsupported_capabilityThe historical request exceeds the supported input boundThe range reads more than 100,000 eligible observations.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.

Get market pairs with current price, volume, and liquidity

GEThttps://api.cantoncap.cc/v1/assets/market-pairs/latest
getLatestAssetMarketPairsCursor paginationETag

Parameters

idsstringqueryrequired

One to 100 distinct stable CantonCap asset IDs, comma-separated. Unknown and unpublished IDs are omitted without revealing private records.

Comma-separated, up to 100 values, each distinct
venue_idenumqueryoptional

Only markets or pools of this venue.

One oftemplecantexoneswapsilvanatradecraftkorarockysend
orientationenumqueryoptional

market returns each pair in the venue market's orientation. requested returns each pair from the requested assets' side, like a reversed order on a DEX pair feed - a pair whose quote is one of ids, and whose base is not, comes back inverted (orientation inverted) with base and quote swapped, ticker.price as 1 / price, base and quote volumes swapped, and bid and ask depth swapped. USD volume, liquidity, spread, score and activity_24h are the market's either way.

One ofmarketrequestedDefaultmarket
networkenumqueryoptional

Canton network to read.

One ofmainnettestnetdevnetDefaultmainnet
modelenumqueryoptional

Only markets of this market model.

One ofammorder_bookorder_book_rfqhybrid
categoryenumqueryoptional

Only markets of this display category.

One ofammclmmorderbookhybrid
quote_asset_idstringqueryoptional

Only markets quoted in this asset.

limitintegerqueryoptional

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

Default1001 to 100
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/assets/market-pairs/latest?ids=ast_515c3eaa72bd4a8b9403297879d78ef6&limit=20" \
  -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",
      "market_id": "mkt_4c2e9a7f1b3d4e5a9c8b7d6e5f4a3b21",
      "venue": {
        "venue_id": "temple",
        "name": "Canton Coin"
      },
      "network": "mainnet",
      "orientation": "market",
      "base_asset": {
        "asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
        "name": "Canton Coin",
        "symbol": "CC"
      },
      "quote_asset": {
        "asset_id": "ast_515c3eaa72bd4a8b9403297879d78ef6",
        "name": "Canton Coin",
        "symbol": "CC"
      },
      "market_model": "order_book",
      "status": "active",
      "pool_ids": [
        "pool_3e7c1a9b5d2f4c6e8a0b1d3f5e7c9a12"
      ],
      "ticker": {
        "price": "0.1584",
        "price_usd": "1.25",
        "price_origin": "venue_book",
        "volume_base_24h": "8342210.4",
        "volume_quote_24h": "1320455.18",
        "volume_usd_24h": "1320455.18",
        "last_updated_at": "2026-10-11T14:00:00.000Z"
      },
      "liquidity": {
        "model": "order_book",
        "liquidity_score": 82.4,
        "liquidity_score_methodology": "execution-impact-v1",
        "liquidity_score_updated_at": "2026-10-11T13:55:00.000Z",
        "bid_depth_2pct_usd": "182400.55",
        "ask_depth_2pct_usd": "176920.30",
        "spread_bps": "18.9",
        "depth_origin": "native_order_book",
        "last_updated_at": "2026-10-11T14:00:00.000Z"
      },
      "last_updated_at": "2026-10-11T14:00:00.000Z"
    }
  ],
  "pagination": {
    "next_cursor": "eyJ2IjoxLCJvIjoyNX0"
  }
}
  • dataarray of objects
    146 child fields
    • activity_24hobjectnullableoptional

      Selected public 24-hour activity, using the same current selection as /v1/activity/market/{market_id}?window=24h&limit=1. Each measurement keeps its own as_of, methods and coverage, including retained older values. volume_usd is in USD; base and quote quantities keep their asset units. Ticker measurements remain separate source fields. Null means no eligible activity snapshot; a snapshot may itself have unknown or partial measurements. Older servers omit this field.

      105 child fields
      • entity_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.

    • market_categoryenumoptional

      Display category of the market.

      One ofammclmmorderbookhybrid
    • market_idstring

      Stable opaque CantonCap market ID, prefixed mkt_.

    • venueobject
      2 child fields
      • venue_idstring

        Stable CantonCap venue ID, such as temple or cantex.

      • namestring

        Display name. Null when none is published.

    • networkenum

      Canton network the record belongs to.

      One ofmainnettestnetdevnet
    • orientationenumoptional

      market: base_asset and quote_asset are the venue market's. inverted: they are swapped (orientation=requested and a requested asset is the market's quote), so the ticker's price, base and quote volumes, and bid and ask depth are the market's read from the other side. activity_24h keeps the market's orientation. Older servers omit this field.

      One ofmarketinverted
    • base_assetobject
      3 child fields
      • asset_idstring

        Stable opaque CantonCap asset ID, prefixed ast_.

      • namestringnullable

        Display name. Null when none is published.

      • symbolstringnullable

        Ticker symbol. Null when none is published.

    • quote_assetobject
      3 child fields
      • asset_idstring

        Stable opaque CantonCap asset ID, prefixed ast_.

      • namestringnullable

        Display name. Null when none is published.

      • symbolstringnullable

        Ticker symbol. Null when none is published.

    • market_modelenum

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

      One ofammorder_bookorder_book_rfqhybrid
    • statusenum

      Lifecycle status of the record.

      One ofactiveinactivesuspended
    • pool_idsarray of strings

      Pool IDs behind this market.

    • tickerobjectnullable

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

      7 child fields
      • pricedecimal stringnullable

        Price in quote-asset units per base asset.

      • price_usddecimal stringnullableoptional

        USD price of one unit of the base asset as returned, through the quote asset's latest USD reference price: price × the quote's USD price, or for an inverted pair the original base's USD price ÷ the market's price, in exact decimals truncated to 38 places. Null when the quote has no USD reference price or the pair has no price. Older servers omit this field.

      • price_originenum

        Where the ticker price comes from.

        One ofvenue_poolvenue_bookvenue_tradeexternal_referencederived
      • volume_base_24hdecimal stringnullable

        24-hour volume in base-asset units.

      • volume_quote_24hdecimal stringnullable

        24-hour volume in quote-asset units.

      • volume_usd_24hdecimal stringnullable

        24-hour volume in USD. Null when unavailable.

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

    • liquidityobjectnullable

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

      12 child fields
      • modelenum
        Alwaysorder_book
      • 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.

      • liquidity_usddecimal stringnullableoptional

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

      • bid_depth_2pct_usddecimal stringnullableoptional

        USD notional of total bids within 2% below the best bid. Null when the book window or USD conversion is unavailable.

      • ask_depth_2pct_usddecimal stringnullableoptional

        USD notional of total asks within 2% above the best ask. Null when the book window or USD conversion is unavailable.

      • depth_originenumoptional

        Depth is measured from displayed order-book levels.

        Alwaysnative_order_book
      • depth_unavailable_reasonenumnullableoptional

        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
      • depth_updated_atdate-timenullableoptional

        When the stored depth 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.

      • spread_bpsdecimal stringnullableoptional

        (Best ask - best bid) / midpoint × 10,000.

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

  • 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.
422unsupported_capabilityRelated pool set exceeds the bounded response sizeThe requested assets relate to more pools than one response carries. Request fewer IDs.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.

List registry configurations for an asset

GEThttps://api.cantoncap.cc/v1/assets/{asset_id}/registry-configurations
getAssetRegistryConfigurationsCursor pagination

Parameters

asset_idstringpathrequired

Stable opaque CantonCap asset ID.

limitintegerqueryoptional

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

Default201 to 100
cursorstringqueryoptional

Opaque continuation cursor from the previous response.

Up to 1024 characters

Request

curl -s "https://api.cantoncap.cc/v1/assets/ast_515c3eaa72bd4a8b9403297879d78ef6/registry-configurations" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Registry configuration page.

Example Response
{
  "status": {
    "timestamp": "2026-10-11T14:00:00.000Z",
    "elapsed_ms": 18,
    "error_code": 0,
    "error_message": null,
    "request_id": "req_7Hk2pQ9xLm"
  },
  "data": {
    "source_url": "https://docs.example.com/fees",
    "last_checked_at": "2026-10-11T14:00:00.000Z",
    "configuration_count": 1,
    "complete": true,
    "configurations": [
      {
        "configuration_id": "cfg_cc_mainnet",
        "operator": "Example Operator",
        "provider": "Digital Asset registry",
        "registrar": "DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
        "default_identifier": {
          "source": "Digital Asset registry",
          "scheme": "canton",
          "id": "cc"
        },
        "additional_identifiers": [
          {
            "source": "Digital Asset registry",
            "scheme": "canton",
            "id": "cc"
          }
        ],
        "issuer_requirements": [
          {
            "issuer": "Example Issuer",
            "required_claims": [
              {
                "property": "website_url",
                "value": "1840221.55"
              }
            ]
          }
        ],
        "holder_requirements": [
          {
            "issuer": "Example Issuer",
            "required_claims": [
              {
                "property": "website_url",
                "value": "1840221.55"
              }
            ]
          }
        ]
      }
    ]
  },
  "pagination": {
    "next_cursor": "eyJ2IjoxLCJvIjoyNX0"
  }
}
  • dataobjectnullable
    27 child fields
    • source_urlURI string
    • last_checked_atstring

      When availability was last checked.

    • configuration_countinteger
    • completeboolean

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

    • configurationsarray of objects
      22 child fields
      • configuration_idstring
      • operatorstring
      • providerstring
      • registrarstring
      • default_identifierobject
        3 child fields
        • sourcestring
        • schemestring
        • idstring
      • additional_identifiersarray of objects
        3 child fields
        • sourcestring
        • schemestring
        • idstring
      • issuer_requirementsarray of objects
        4 child fields
        • issuerstring
        • required_claimsarray of objects
          2 child fields
          • propertystring
          • valuestring

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

      • holder_requirementsarray of objects
        4 child fields
        • issuerstring
        • required_claimsarray of objects
          2 child fields
          • propertystring
          • valuestring

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

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

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.
404not_foundAsset not foundThe asset 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.
Esc
navigateopenEscclose