> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cryptoquant.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Assets

> The asset registry every asset parameter is resolved against — one row per registered ticker with its aliases, class, category, coverage and page URL, plus every enum.

## What it returns

The registry every `asset` parameter is resolved against: one row per registered ticker with
`symbol`, `key` (the `/consensus/{key}` page), `name`, `aliases`, `retired_symbols`,
`asset_class`, `category`, `coverage` (`live` / `mapped` / `pending` = page but no analyst data
yet) and `page_url`, plus every enum under `enums`.

An alias ticker (`GLD`) points at its canonical asset (`XAU`) through `canonical`.

## Filters

`asset_class`, `category`, `q` (substring of symbol / name / key). Filters combine with AND.

## Access

Public — no API key. Responses are CDN-cached for one hour.

<Tip>
  Pass any of `symbol`, `key`, `name`, an alias or a retired symbol as `asset` on the other
  endpoints (case-insensitive); the response always reports the canonical symbol.
  `coverage=pending` assets have a page but no analyst data yet.
</Tip>


## OpenAPI

````yaml openapi/sentiment.json GET /assets
openapi: 3.1.0
info:
  title: Analyst Consensus API — CryptoQuant
  version: 2.2.0
  summary: >-
    What curated analysts say about crypto, stocks, indices and commodities, as
    numbers.
  description: >-
    What curated analysts on X, CryptoQuant, Seeking Alpha, TradingView and
    Substack (plus licensed sell-side ratings on equities) say about 1712 assets
    — crypto, US and KR equities, index ETFs, commodities — as numbers: the
    daily Analyst Consensus Index (−100 … +100, one series per asset), a
    per-asset consensus breakdown (bull / bear case, viewpoints grouped by
    thesis, source posts), per-analyst stance series, and each analyst's
    accuracy track record.


    **Two access levels.** Public, no key (per-IP rate limit, CDN-cached): `GET
    /assets` (the asset registry + every enum), `GET /consensus` without a key
    (the LATEST index point for any asset with the bull / bear case), `GET
    /analyst-views`, `GET /calls`, `GET /analysts/top`, `GET
    /analysts/{handle}`. Every public payload carries `page_url` (link it),
    `cite_as` and `data_by` ("Data by CryptoQuant Consensus" — show it with the
    numbers). With an API key (`X-API-Key` header or `api_key` query parameter):
    the index HISTORY (`GET /consensus` with `days`) and `GET
    /consensus/breakdown` on any plan; the per-analyst series `GET /sentiment`
    on the Premium and Enterprise plans only (`PLAN_REQUIRED` below). Keys are
    provisioned with the CryptoQuant Premium plan or an Enterprise agreement;
    there is no self-serve key endpoint on this host. **Raw source text** (the
    original post title / text) is provided under an Integration agreement only,
    per API key (`api_keys.raw_access`, never a plan): `GET
    /consensus/breakdown` sends `sources[].statement` on a cleared key and a ≤
    200-character `sources[].excerpt` + url on every other key — Premium,
    Enterprise and admin-owned keys included; the key-free `/analyst-views` and
    `/calls` excerpts follow the same rule. Integration use that needs the
    original text: contact sales@cryptoquant.com (`x-raw-source-text`). Thesis,
    narratives, index and labels are the same on every plan.


    **Conventions.** Dates: `date` = UTC calendar day `YYYY-MM-DD`; `date-time`
    = RFC 3339 / ISO 8601 with offset, UTC. Index and stance series are
    end-of-day: the current UTC day is excluded until complete, so values never
    change retroactively. No pagination anywhere: a series comes back whole
    (`days` is capped by the plan, 36,500 = everything; the full BTC history is
    ≈ 1,950 rows); lists are capped by `limit` (1–50). Sorting is fixed per
    endpoint and stated in its description. Filters combine with AND. Every
    error is the `Error` object: branch on `code`, read `message`, follow
    `docs_url`; `x-errors` lists every code with its recovery. Every operation
    carries `x-plan` (who may call it).


    **Agents.** Import this document as a ChatGPT GPT Action (Authentication:
    None for the public operations) or any OpenAPI tool loader; the Markdown
    version of these docs is `/llms.txt`; the same data is an MCP server at
    `/mcp` (Streamable HTTP, no auth). Pass `via=chatgpt|claude|…` so the links
    you show carry the right `utm_source`.


    **Freshness.** Index and stance series: end-of-day UTC. The breakdown is
    recomputed daily (English by 04:00 UTC, translations by 06:00 UTC); its
    opinion counts refresh every 4 hours. Public payloads are CDN-cached 5
    minutes (track record and assets: 1 hour).


    Human docs: https://consensus.cryptoquant.com/docs/api · how the numbers are
    made: https://consensus.cryptoquant.com/methodology · Markdown for agents:
    https://consensus.cryptoquant.com/llms.txt
  contact:
    name: CryptoQuant — API access and Enterprise data
    url: https://cryptoquant.com/get-in-touch
    email: support@cryptoquant.com
  termsOfService: https://consensus.cryptoquant.com/terms
  license:
    name: Proprietary — CryptoQuant Terms of Service
    url: https://consensus.cryptoquant.com/terms
servers:
  - url: https://consensus.cryptoquant.com/api/v1
    description: Analyst Consensus by CryptoQuant
security:
  - ApiKeyHeader: []
  - ApiKeyQuery: []
tags:
  - name: Registry
    description: Public, no API key. The assets the API covers and every enum it uses.
  - name: Consensus
    description: >-
      The Analyst Consensus Index: latest point public (no key); history and the
      per-asset breakdown with an API key.
  - name: Analyst views
    description: >-
      Public, no API key. What analysts are saying: narratives, per-analyst
      views, the newest calls.
  - name: Analyst track record
    description: >-
      Public, no API key. Who to trust: accuracy scores, ranks and badges per
      analyst.
  - name: Analyst stance
    description: Premium / Enterprise API key. One analyst's daily stance on an asset.
externalDocs:
  description: Sentiment Data documentation (the human rendering of this document)
  url: https://docs.cryptoquant.com/sentiment/overview
paths:
  /assets:
    get:
      tags:
        - Registry
      summary: Every covered asset + every enum (public, no API key)
      description: >-
        The registry every `asset` parameter is resolved against — 1712
        canonical assets (one underlying = one asset) plus their alias tickers,
        each with symbol, route key, name, class, category, market, coverage
        state and page URL — and the closed enums the other endpoints use
        (`enums`). Registry order (class, then symbol). Optional AND-filters:
        `asset_class`, `category`, `q` (substring of symbol / name / key).
        Public; CDN-cached one hour (`Cache-Control: public, s-maxage=3600,
        stale-while-revalidate=86400`); no DB read.
      operationId: listAssets
      parameters:
        - name: asset_class
          in: query
          required: false
          schema:
            type: string
            enum:
              - crypto
              - equities
              - indices
              - commodities
          description: Keep only this asset class.
        - name: category
          in: query
          required: false
          schema:
            type: string
            enum:
              - crypto
              - us-equities
              - indices
              - commodities
              - kr-equities
          description: Keep only this selector category (equities split into US / KR).
        - name: q
          in: query
          required: false
          schema:
            type: string
          description: Case-insensitive substring of symbol, name or route key.
          example: gold
      responses:
        '200':
          description: The asset registry and the enums
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetsResponse'
              example:
                count: 2
                rows: 3
                filter:
                  asset_class: null
                  category: null
                  q: null
                asset_classes:
                  crypto: Crypto
                  equities: Equities
                  indices: Indices & ETFs
                  commodities: Commodities
                categories:
                  crypto: Crypto
                  us-equities: US Equities
                  indices: Indices & ETFs
                  commodities: Commodities
                  kr-equities: KR Equities
                how_to_resolve: >-
                  Pass any of symbol, key, name, an alias or a retired symbol as
                  `asset` on the other endpoints (case-insensitive); the
                  response always reports the canonical symbol. coverage=pending
                  assets have a page but no analyst data yet.
                assets:
                  - symbol: BTC
                    name: Bitcoin
                    key: btc
                    asset_class: crypto
                    category: crypto
                    market: Bitfinex
                    currency: USD
                    source: alpha
                    coverage: live
                    canonical: null
                    aliases: []
                    retired_symbols: []
                    page_url: https://consensus.cryptoquant.com/consensus/btc
                    identity:
                      asset_class: crypto
                      uid: bitcoin
                      chain_contract: null
                      exchange_mic: null
                      needs_review: false
                  - symbol: GLD
                    name: Gold
                    key: gld
                    asset_class: commodities
                    category: commodities
                    market: Commodity
                    currency: USD
                    source: alpha
                    coverage: mapped
                    canonical: XAU
                    aliases: []
                    retired_symbols: []
                    page_url: https://consensus.cryptoquant.com/consensus/gld
                    identity:
                      asset_class: etf
                      uid: US78463V1070
                      chain_contract: null
                      exchange_mic: XNYS
                      needs_review: false
                  - symbol: '005930'
                    name: Samsung Electronics
                    key: '005930'
                    asset_class: equities
                    category: kr-equities
                    market: KRX
                    currency: KRW
                    source: alpha
                    coverage: mapped
                    canonical: null
                    aliases: []
                    retired_symbols: []
                    page_url: https://consensus.cryptoquant.com/consensus/005930
                    identity:
                      asset_class: equity
                      uid: KR7005930003
                      chain_contract: null
                      exchange_mic: XKRX
                      needs_review: false
                enums:
                  asset_class:
                    - crypto
                    - equities
                    - indices
                    - commodities
                  asset_category:
                    - crypto
                    - us-equities
                    - indices
                    - commodities
                    - kr-equities
                  asset_source:
                    - alpha
                    - sellside
                    - unbias
                    - legacy
                  source_platform:
                    - x
                    - cryptoquant
                    - seekingalpha
                    - tradingview
                    - substack
                    - benzinga
                  analyst_source:
                    - twitter
                    - cryptoquant
                    - seekingalpha
                    - tradingview
                    - substack
                    - other
                  source_type:
                    - tweet
                    - quicktake
                    - research
                    - news
                    - seekingalpha
                    - tradingview
                    - substack
                    - youtube
                    - telegram
                    - bluesky
                  sentiment_label:
                    - bullish
                    - bullish_nuance
                    - neutral
                    - bearish_nuance
                    - bearish
                  directional_label:
                    - bullish
                    - bullish_nuance
                    - bearish_nuance
                    - bearish
                  stance:
                    - bullish
                    - bearish
                    - neutral
                  bias:
                    - bullish
                    - bearish
                    - balanced
                  tier_badge:
                    - top1
                    - top5
                    - top10
                    - tracked
                  tier_reason:
                    - excluded
                    - ineligible
                    - news_feed
                    - company
                    - unscored
                    - insufficient_calls
                    - pool_too_small
                  breakdown_window:
                    - 1d
                    - 3d
                    - 7d
                    - 30d
                  views_window:
                    - 7d
                    - 30d
                  breakdown_lang:
                    - en
                    - ko
                    - zh
                    - ja
                    - es
                    - pt
                    - ru
                    - hi
                    - de
                    - fr
                    - tr
                    - vi
                    - id
                    - it
                    - th
                    - pl
                    - nl
                    - uk
                  via:
                    - chatgpt
                    - claude
                    - mcp
                    - gemini
                    - perplexity
                    - api
                  plan:
                    - free
                    - pro
                    - premium
                    - enterprise
                docs_url: https://consensus.cryptoquant.com/docs/api#assets
                as_of: '2026-10-06T07:48:29.000Z'
        '400':
          description: '`INVALID_PARAMETER` — asset_class / category outside their enum'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Invalid window
                code: INVALID_PARAMETER
                message: 'window must be one of: 1d, 3d, 7d, 30d'
                docs_url: https://consensus.cryptoquant.com/docs/api#errors
                param: window
      security: []
      x-codeSamples:
        - lang: Shell
          source: >-
            curl -X GET
            "https://consensus.cryptoquant.com/api/v1/assets?category=commodities"
        - lang: JavaScript
          source: >-
            fetch("https://consensus.cryptoquant.com/api/v1/assets?category=commodities")
              .then(response => response.json())
              .then(data => console.log(data))
        - lang: NodeJS
          source: |-
            require('axios')
              .get("https://consensus.cryptoquant.com/api/v1/assets?category=commodities")
              .then(response => console.log(response))
        - lang: Ruby
          source: >-
            require 'net/http'

            uri =
            URI("https://consensus.cryptoquant.com/api/v1/assets?category=commodities")

            res = Net::HTTP.get_response(uri)

            puts res.body
        - lang: Python
          source: >-
            import requests

            url =
            "https://consensus.cryptoquant.com/api/v1/assets?category=commodities"

            print(requests.get(url).json())
components:
  schemas:
    AssetsResponse:
      type: object
      required:
        - count
        - rows
        - assets
        - enums
        - as_of
      properties:
        count:
          type: integer
          minimum: 0
          description: Canonical assets in the response (alias tickers not counted).
        rows:
          type: integer
          minimum: 0
          description: Rows in `assets` (canonical + alias tickers).
        filter:
          type: object
          properties:
            asset_class:
              type:
                - string
                - 'null'
            category:
              type:
                - string
                - 'null'
            q:
              type:
                - string
                - 'null'
        asset_classes:
          type: object
          additionalProperties:
            type: string
          description: asset_class → label.
        categories:
          type: object
          additionalProperties:
            type: string
          description: category → label.
        how_to_resolve:
          type: string
        assets:
          type: array
          items:
            $ref: '#/components/schemas/AssetRow'
        enums:
          type: object
          description: Every closed value set the API uses, listed in full.
          required:
            - asset_class
            - asset_category
            - source_platform
            - source_type
            - sentiment_label
            - stance
            - plan
          properties:
            asset_class:
              type: array
              items:
                type: string
                enum:
                  - crypto
                  - equities
                  - indices
                  - commodities
            asset_category:
              type: array
              items:
                type: string
                enum:
                  - crypto
                  - us-equities
                  - indices
                  - commodities
                  - kr-equities
            asset_source:
              type: array
              items:
                type: string
                enum:
                  - alpha
                  - sellside
                  - unbias
                  - legacy
            source_platform:
              type: array
              items:
                type: string
                enum:
                  - x
                  - cryptoquant
                  - seekingalpha
                  - tradingview
                  - substack
                  - benzinga
              description: >-
                Where tracked analysts publish (`x` = X / Twitter; `benzinga` =
                licensed sell-side ratings).
            analyst_source:
              type: array
              items:
                type: string
                enum:
                  - twitter
                  - cryptoquant
                  - seekingalpha
                  - tradingview
                  - substack
                  - other
            source_type:
              type: array
              items:
                type: string
                enum:
                  - tweet
                  - quicktake
                  - research
                  - news
                  - seekingalpha
                  - tradingview
                  - substack
                  - youtube
                  - telegram
                  - bluesky
              description: Stored `source_type` of a post.
            sentiment_label:
              type: array
              items:
                type: string
                enum:
                  - bullish
                  - bullish_nuance
                  - neutral
                  - bearish_nuance
                  - bearish
              description: Per-post classifier labels, bullish → bearish.
            directional_label:
              type: array
              items:
                type: string
                enum:
                  - bullish
                  - bullish_nuance
                  - bearish_nuance
                  - bearish
              description: The labels that count as a call / vote (everything but neutral).
            stance:
              type: array
              items:
                type: string
                enum:
                  - bullish
                  - bearish
                  - neutral
            bias:
              type: array
              items:
                type: string
                enum:
                  - bullish
                  - bearish
                  - balanced
            tier_badge:
              type: array
              items:
                type: string
                enum:
                  - top1
                  - top5
                  - top10
                  - tracked
            tier_reason:
              type: array
              items:
                type: string
                enum:
                  - excluded
                  - ineligible
                  - news_feed
                  - company
                  - unscored
                  - insufficient_calls
                  - pool_too_small
            breakdown_window:
              type: array
              items:
                type: string
                enum:
                  - 1d
                  - 3d
                  - 7d
                  - 30d
            views_window:
              type: array
              items:
                type: string
                enum:
                  - 7d
                  - 30d
            breakdown_lang:
              type: array
              items:
                type: string
                enum:
                  - en
                  - ko
                  - zh
                  - ja
                  - es
                  - pt
                  - ru
                  - hi
                  - de
                  - fr
                  - tr
                  - vi
                  - id
                  - it
                  - th
                  - pl
                  - nl
                  - uk
            via:
              type: array
              items:
                type: string
                enum:
                  - chatgpt
                  - claude
                  - mcp
                  - gemini
                  - perplexity
                  - api
            plan:
              type: array
              items:
                type: string
                enum:
                  - free
                  - pro
                  - premium
                  - enterprise
        docs_url:
          type: string
          format: uri
        as_of:
          type: string
          format: date-time
    Error:
      type: object
      description: >-
        Every non-2xx body. Branch on `code`; `error` is the legacy short reason
        kept for pre-2026-10-06 clients.
      required:
        - error
        - code
        - message
        - docs_url
      properties:
        error:
          type: string
          description: >-
            Legacy short reason ("Invalid asset", "API key required", "Rate
            limit exceeded" …), unchanged wording.
        code:
          type: string
          enum:
            - API_KEY_REQUIRED
            - INVALID_API_KEY
            - PLAN_REQUIRED
            - RAW_ACCESS_REQUIRED
            - DAILY_LIMIT_EXCEEDED
            - RATE_LIMIT_EXCEEDED
            - INVALID_PARAMETER
            - UNKNOWN_ASSET
            - ANALYST_NOT_FOUND
            - ANALYST_NOT_ELIGIBLE
            - NO_DATA
            - SERVICE_UNAVAILABLE
            - INTERNAL_ERROR
          description: >-
            Stable machine code. Status and recovery per code: see `x-errors` at
            the document root.
        message:
          type: string
          description: Human explanation, with the accepted values for a parameter error.
        docs_url:
          type: string
          format: uri
          description: >-
            Where the error is documented (/docs/api#errors, or #plans for
            PLAN_REQUIRED).
        param:
          type: string
          description: The offending query parameter (INVALID_PARAMETER, UNKNOWN_ASSET).
        required_plans:
          type: array
          items:
            type: string
            enum:
              - premium
              - enterprise
          description: Plans that may call the endpoint (PLAN_REQUIRED).
        plan:
          type: string
          description: The key's current plan label, upper-cased (PLAN_REQUIRED).
        upgrade_url:
          type: string
          format: uri
          description: Self-serve upgrade (PLAN_REQUIRED, DAILY_LIMIT_EXCEEDED).
        contact_url:
          type: string
          format: uri
          description: Enterprise / sales contact (PLAN_REQUIRED, DAILY_LIMIT_EXCEEDED).
        limit:
          type:
            - integer
            - 'null'
          description: Daily quota (DAILY_LIMIT_EXCEEDED).
        used:
          type:
            - integer
            - 'null'
          description: Requests used today (DAILY_LIMIT_EXCEEDED).
        reset:
          type: string
          description: When the quota resets ("Daily at midnight UTC").
        retry_after:
          type: integer
          minimum: 1
          description: Seconds to wait (RATE_LIMIT_EXCEEDED; also the Retry-After header).
        docs:
          type: string
          format: uri
          deprecated: true
          description: Legacy alias of docs_url on API_KEY_REQUIRED.
        upgradeUrl:
          type: string
          format: uri
          deprecated: true
          description: Legacy alias of upgrade_url on PLAN_REQUIRED.
    AssetRow:
      type: object
      required:
        - symbol
        - name
        - key
        - asset_class
        - category
        - market
        - currency
        - source
        - coverage
        - canonical
        - aliases
        - retired_symbols
        - page_url
        - identity
      properties:
        symbol:
          type: string
          description: >-
            The symbol the API reports and accepts (`BTC`, `NVDA`, `005930`,
            `XAU`).
        name:
          type: string
          description: Display name (also accepted as `asset`).
        key:
          type: string
          description: >-
            Route key of the site page (`/consensus/<key>`; also accepted as
            `asset`).
        asset_class:
          type: string
          enum:
            - crypto
            - equities
            - indices
            - commodities
        category:
          type: string
          enum:
            - crypto
            - us-equities
            - indices
            - commodities
            - kr-equities
          description: >-
            Selector category: asset_class with equities split into US / KR by
            venue.
        market:
          type: string
          description: >-
            Listing venue / price-source label (`Bitfinex`, `NasdaqGS`, `KRX`,
            `Commodity`, `US`).
        currency:
          type: string
          description: ISO 4217 currency of the price series (`USD`, `KRW`).
        source:
          type: string
          enum:
            - alpha
            - sellside
            - unbias
            - legacy
          description: >-
            Registry provenance: `alpha` = CryptoQuant Alpha library, `sellside`
            = licensed ratings coverage only (no price series), `unbias` =
            crypto registered here, `legacy` = long-tail crypto tag.
        coverage:
          type: string
          enum:
            - live
            - mapped
            - pending
          description: >-
            `live` = the crypto pipeline covers it; `mapped` = analysts /
            ratings mapped, data collecting; `pending` = page exists, no analyst
            data yet.
        canonical:
          type:
            - string
            - 'null'
          description: >-
            Set on an ALIAS ticker: the canonical symbol whose data it serves
            (`GLD` → `XAU`). null for a canonical asset.
        aliases:
          type: array
          items:
            type: string
          description: Alias tickers of a canonical asset (`XAU` → [`GLD`]).
        retired_symbols:
          type: array
          items:
            type: string
          description: >-
            Former tickers that still resolve to this asset (`POL` → [`MATIC`,
            `POLYGON`]).
        page_url:
          type: string
          format: uri
        identity:
          oneOf:
            - $ref: '#/components/schemas/AssetIdentity'
            - type: 'null'
          description: >-
            The asset's external identity — `asset_class` on the identity enum +
            `uid` (CoinGecko id / ISIN / internal code). Two assets may share a
            `symbol` (STX = Stacks and Seagate); the identity tells them apart.
            null for an unregistered long-tail ticker.
    AssetIdentity:
      type: object
      required:
        - asset_class
        - uid
        - chain_contract
        - exchange_mic
        - needs_review
      description: >-
        One asset = one (asset_class, uid). The identity enum is finer than the
        registry `asset_class` (an ETF is `etf`, not `indices`; FX is `fx`).
        `uid` is null while the identity is still under review — never a guess.
      properties:
        asset_class:
          type:
            - string
            - 'null'
          enum:
            - crypto
            - equity
            - etf
            - index
            - commodity
            - fx
            - null
          description: >-
            Identity class; null for a series the enum has no value for yet
            (rate series).
        uid:
          type:
            - string
            - 'null'
          description: >-
            crypto = CoinGecko id (`bitcoin`, `cosmos`); equity / etf = ISIN
            (`US67066G1040`); index / commodity / fx = internal code (`SPX`,
            `XAU`, `EURUSD`).
        chain_contract:
          type:
            - string
            - 'null'
          description: >-
            Crypto tokens only: `<coingecko platform>:<contract address>`; null
            for native coins and every other class.
        exchange_mic:
          type:
            - string
            - 'null'
          description: >-
            equity / etf only: ISO 10383 MIC of the listing venue (`XNAS`,
            `XNYS`, `ARCX`, `XKRX`).
        needs_review:
          type: boolean
          description: true while the identity lookup is unconfirmed (uid null).
  securitySchemes:
    ApiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        Provisioned with the CryptoQuant Premium plan or an Enterprise agreement
        (no self-serve). Keys start with `unbias_live_`.
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api_key
      description: Same key as a query parameter (avoid in logged URLs).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.