Skip to content
Docs
Get API Access
Browse the Documentation

API Reference

Global

Cross-market CantonCap metrics.

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

Get the latest published Canton Ecosystem Fear & Greed Index

GEThttps://api.cantoncap.cc/v1/fear-and-greed/latest
getLatestFearAndGreed

One ecosystem-wide index with daily 00:00:00Z reference times. CMC-style semantics, not exact CMC compatibility. Delayed publication retains the previous observation with its original timestamp. No query parameters. Returns data: null before the first publication.

Parameters

This endpoint takes no parameters.

Request

curl -s "https://api.cantoncap.cc/v1/fear-and-greed/latest" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Latest published observation or null before the first publication.

Example Response
{
  "status": {
    "timestamp": "2026-10-11T14:00:00.000Z",
    "elapsed_ms": 18,
    "error_code": 0,
    "error_message": null,
    "request_id": "req_7Hk2pQ9xLm"
  },
  "data": {
    "value": 1,
    "value_classification": "Extreme Fear",
    "update_time": "2026-10-11T14:00:00.000Z"
  }
}
  • dataobjectnullable
    3 child fields
    • valueinteger

      Published ecosystem-wide score. Bands: 0 to 19 Extreme Fear; 20 to 39 Fear; 40 to 59 Neutral; 60 to 79 Greed; 80 to 100 Extreme Greed.

    • value_classificationenum
      One ofExtreme FearFearNeutralGreedExtreme Greed
    • update_timedate-time

      UTC daily reference time, unchanged by requests.

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 published Canton Ecosystem Fear & Greed Index history

GEThttps://api.cantoncap.cc/v1/fear-and-greed/historical
getHistoricalFearAndGreed

Intentional offset-pagination exception to the usual cursor contract. start is a 1-based record offset, not a date or timestamp. Apply offsets within the plan-permitted historical population, newest first. Missing days stay absent. Default limit is clamped to the plan page size; an explicit limit exceeding that cap returns 403. No history entitlement returns 403. Malformed or out-of-range pagination returns 400. After start=1 and limit=50, use start=51. New publications can shift offsets; no pinned multi-page snapshot is promised. Deduplicate by observation timestamp.

Parameters

startintegerqueryoptional

1-based record offset within permitted history.

Default11 to 9007199254740991
limitintegerqueryoptional

Maximum records, subject to the caller's plan page-size cap.

Default501 to 500

Request

curl -s "https://api.cantoncap.cc/v1/fear-and-greed/historical" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Newest-first observations; empty array when no permitted records remain.

Example Response
{
  "status": {
    "timestamp": "2026-10-11T14:00:00.000Z",
    "elapsed_ms": 18,
    "error_code": 0,
    "error_message": null,
    "request_id": "req_7Hk2pQ9xLm"
  },
  "data": [
    {
      "value": 1,
      "value_classification": "Extreme Fear",
      "timestamp": "2026-10-11T13:59:12.000Z"
    }
  ]
}
  • dataarray of objects
    3 child fields
    • valueinteger

      Published ecosystem-wide score. Bands: 0 to 19 Extreme Fear; 20 to 39 Fear; 40 to 59 Neutral; 60 to 79 Greed; 80 to 100 Extreme Greed.

    • value_classificationenum
      One ofExtreme FearFearNeutralGreedExtreme Greed
    • timestampdate-time

      UTC daily reference time, unchanged by requests.

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.
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 aggregate public Canton market metrics

GEThttps://api.cantoncap.cc/v1/global/metrics/latest
getLatestGlobalMetricsETag

Parameters

convertstringqueryoptional

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

DefaultUSD
If-None-Matchstringheaderoptional

Return 304 when this entity tag matches the current representation.

Request

curl -s "https://api.cantoncap.cc/v1/global/metrics/latest?convert=USD" \
  -H "X-API-Key: $CANTONCAP_API_KEY"

Response

200 Latest global market metrics. 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": {
    "network": "all",
    "convert": "USD",
    "tracked_assets": 31,
    "active_markets": 12,
    "active_venues": 6,
    "fdv": "715482911.36",
    "market_cap": null,
    "liquidity_usd": "4120334.10",
    "volume_24h": "1840221.55",
    "volume": {
      "selection_method": "venue_reported_aggregate",
      "methodology_version": "v1",
      "interpretation": "complete_total",
      "coverage_detail": {
        "unit": "USD",
        "window": "24h",
        "starts_at": "2026-10-11T14:00:00.000Z",
        "ends_at": "2026-10-11T14:00:00.000Z",
        "covered_seconds": 86400,
        "retained": true,
        "eligible_market_count": 1,
        "included_market_count": 1,
        "missing_activity_market_count": 1,
        "unvalued_market_count": 1,
        "partial_market_count": 1,
        "incomplete_time_market_count": 1
      },
      "method": "trades",
      "coverage": "complete",
      "change_24h_pct": "7.31",
      "as_of": "2026-10-11T14:00:00.000Z"
    },
    "last_updated_at": "2026-10-11T14:00:00.000Z"
  }
}
  • dataobject
    31 child fields
    • networkenum

      Canton network the record belongs to.

      Alwaysall
    • convertstring

      Conversion currency of the values.

    • tracked_assetsinteger
    • active_marketsinteger

      Markets currently active.

    • active_venuesinteger
    • fdvdecimal stringnullable

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

    • market_capdecimal stringnullable

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

    • liquidity_usddecimal stringnullable
    • volume_24hdecimal stringnullable

      Rolling 24-hour volume at the point's timestamp. Not interval volume.

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

    • 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.
404not_foundGlobal metrics are not available for this conversion currencyThe conversion currency is not one the aggregate is calculated in.
429rate_limitedThe request rate limit was exceededThe key's one-minute window is used up. Retry after Retry-After seconds.
Esc
navigateopenEscclose