Sitelet https://coinmarketcap.com/api/resources/cmc-ai-question-keys-the-coin-and-market-questions-answered/
API · Reference

CMC AI Question Keys: The Coin and Market Questions Answered

CoinMarketCap APIUpdated 14 September 2026 · 8 min read
CMC AI question keys, the coin and market questions answered, shown as a cluster of halftone blocks orbited by percentage change readouts.

CMC AI answers a fixed set of questions about each covered cryptocurrency, and a second set about the market as a whole. The answers are generated on a schedule, published to CoinMarketCap, and returned by the API with the sources they drew on.

The CMC AI launch announcement introduces the eight coin-level questions and their refresh cadence. This page is the complete reference behind it: both key sets including the six market-level keys, how question_key relates to type and answer_id, which endpoint can filter by key and which cannot, and what to do when a question returns nothing.

Key Takeaways

  • Eight keys are defined at coin level and six at market level. The enum is published, so a label mapped against a key today keeps working.
  • A question key names a template, not an answer. It stays the same across coins and across regenerations.
  • Only coin-level questions can be filtered by key. The market feed returns question_key but takes no question_key parameter, so market-level filtering happens client side.
  • The up and down price questions are a mutually exclusive pair: a coin returns one of them per generation, or neither. Together they explain why roughly half the covered set has neither at any moment.
  • Trending questions and headlines carry no key, because there is no template behind them. Their identifier is answer_id.
  • Do not match on the question text. The reference example, the launch page template and the rendered page give three different strings for overview, the apostrophe differs between surfaces, and future_price renders no question at all. Match on question_key.
  • Every answer arrives as two markdown sections, a TLDR and a body, with an array of source URLs and a true source count.

How to Read a Key

Two identifiers do different jobs, and mixing them up is the common integration error.

question_key

The template

A lowercase string, the same on every coin, surviving regeneration. Anything a product stores against a question, a translated label, a section heading, an icon, belongs against this key. It is the replacement for v4’s question_id, a field the launch announcement describes as having been “an integer for fixed questions and a hex string for everything else”. Migrating from v4 to v5 has the field-by-field mapping.

answer_id

One generated answer

A 24-character hex string that changes when the answer regenerates, which makes it the field to watch for detecting content that needs re-translating or re-caching. For a trending question or a headline, where no template exists, question_key is null and this is the only identifier.

type

Never empty

One of fixed_question, trending_question or top_news. Every keyed question is a fixed_question; the other two types are always unkeyed.

Coin-Level Questions

question_key Question text, reference example What the answer covers Regenerates Of the top 100
future_price What could affect BTC’s future price? Catalysts and risks ahead 8 hours 99
latest_news What is the latest news on BTC? * Recent developments 8 hours 99
roadmap What is next on BTC’s roadmap? Upcoming development milestones 24 hours 99
sentiment What are people saying about BTC? * Social and community discussion 8 hours 98
overview What is Bitcoin? What the asset is 24 hours 96
codebase What is the latest update in BTC’s codebase? Recent repository and protocol activity 24 hours 94
price_up Why is BTC’s price up today? The move, its primary driver, secondary drivers, and a near-term outlook 1 hour 29
price_down Why is BTC’s price down today? Same structure, for a negative move 1 hour 21

The last column is CoinMarketCap’s published figure for how many of the 100 covered assets had content for that key, given here so the table is usable on its own. It is an undated snapshot, and the two price keys sit far below the rest for reasons specific to how they fire. Checking coverage before you call carries the dated measurement, the per-key analysis and the reason for that gap.

* Six of the eight strings above are taken from the example payloads in the coin insights reference. latest_news and sentiment appear in no reference example; those two are taken from the launch page template and confirmed on the rendered pages. These strings are not what the rendered pages display, and the next section is the measurement of how far apart they are.

All eight are published per coin across four page URLs. The latest-updates page carries four questions on its own: latest_news, sentiment, codebase and roadmap. The other page types map one to one: what-is for overview, price-analysis for the up and down pair, and price-prediction for future_price.

The Title Is Not Stable Across Surfaces

CoinMarketCap publishes these question strings on three of its own surfaces, and the three do not agree. Measured 14 September 2026 across 20 assets and all four /cmc-ai/ page types, 80 page fetches:

question_key Reference example Rendered page heading
overview What is Bitcoin? What is Bitcoin (BTC)?
future_price What could affect BTC’s future price? No question rendered. The H1 is “Bitcoin (BTC) Price Prediction”
latest_news not in the reference What is the latest news on BTC?
sentiment not in the reference What are people saying about BTC?
codebase What is the latest update in BTC's codebase? What is the latest update in BTC’s codebase?
roadmap What is next on BTC's roadmap? What is next on BTC’s roadmap?
price_up Why is BTC's price up today? Why is BTC’s price up today? (14/09/2026)
price_down Why is BTC's price down today? Why is BTC’s price down today? (12/09/2026)

First-party measurement, 14 September 2026. Reference column from the coin insights API reference; rendered column from /cmc-ai/{slug}/{type}/ across 20 assets.

Four differences matter to anyone matching on text.

  1. The substitution rule is not uniform.

    The launch page writes every question with an X placeholder. Seven of the eight resolve X to the ticker. overview resolves it to the coin name in the reference example and to name plus ticker on the page, so overview is the one key where a ticker substitution produces a string that appears nowhere. Measured on all 20 assets, the rendered overview heading is “What is {name} ({ticker})?” without exception.

  2. future_price does not render as a question at all.

    All 20 price-prediction pages return HTTP 200 with an H1 of “{name} ({ticker}) Price Prediction” and no question heading anywhere in the document. The documented string “What could affect BTC’s future price?” appears on none of them. The URL still carries the future_price content, so the mapping in the previous section holds; what does not hold is any assumption that the page shows the question.

  3. The apostrophe differs by surface.

    Four of the eight strings contain an apostrophe. The reference uses ASCII ' (U+0027) and the rendered pages use the typographic ’ (U+2019), as the table above reproduces. A literal comparison between the two surfaces fails on every one of those four, and it fails silently, because both strings look identical in a terminal and in most diffs.

  4. Three of 20 assets render a duplicated token.

    Where the coin name equals its ticker, the name-plus-ticker format produces “What is XRP (XRP)?”, “What is BNB (BNB)?” and “What is USDC (USDC)?”. That is cosmetic rather than breaking, but it is the kind of string a product will want to rewrite rather than pass through.

The practical conclusion

Store your own label against question_key and render that. The key is a published enum with a stable meaning; the title is display text that already varies by surface, by apostrophe, and in one case does not exist.

Market-Level Questions

Six keys are market-level, and all of them regenerate every 30 minutes.

The enum on the market feed is shared, not scoped

One thing to know before you validate against the schema. The question_key enum on the market feed reference is shared across both endpoints and lists all fourteen keys plus null, so schema validation alone will accept price_up on the market feed. The scoping lives in the field description, not the enum: it names the six keys below as market-level and the other eight as coin-level. If you generate types from the spec, the generated enum will be wider than the endpoint actually returns.

question_key Question as displayed What the answer covers
trending_narratives What are the trending narratives? Themes gaining attention
altcoin_performance Are altcoins outperforming Bitcoin? Relative performance across the altcoin set
bullish_momentum What cryptos are showing bullish momentum? Assets with strengthening momentum
upcoming_events What upcoming events may impact crypto? Scheduled catalysts
market_sentiment What is the market sentiment? Overall market mood
kol_discussion What are KOLs discussing? What prominent commentators are covering

All six rendered on the CoinMarketCap homepage on 10 September 2026, alongside a seventh question, “Why is the market down today?”, which is not one of the six keys. The market-wide up and down questions render on the homepage but have no entry in the published question_key enum, so they arrive as an unkeyed insight and have to be matched on title rather than on a key. Treat that as a display fact rather than an API contract.

Coin sentiment is not market sentiment

Coin-level sentiment and market-level market_sentiment are different questions with different keys. One asks what people are saying about an asset, the other reports the mood of the market. A product that folds them into one label will show the wrong answer half the time.

Filtering: Keys Work on Coins, Not on the Market

The two insight endpoints do not take the same parameters, and the difference decides where filtering has to happen.

GET /v5/cmc-ai/coins/latest Takes question_key

A comma-separated filter over the eight coin-level keys. Passing it is the difference between a small response and a large one, and it is ignored for non-fixed types.

GET /v5/cmc-ai/latest No question_key parameter

Accepts type, sources_limit, start and limit. The key is present on every fixed question it returns, so a caller can still select on it, but after the response arrives rather than in the query. The cost of that is not a credit cost, and it is worth being exact about which. The market feed is one call credit per request whatever it returns, and the reference adds that repeat calls returning the same content are not charged at all. So a dashboard that wants only market sentiment is not billed extra for the rest of the feed. What it pays is transfer and parse: a typical response carries 26 items to deliver the one you wanted, and sources_limit=0 is the lever that actually shrinks it.

Both endpoints accept type with the same three values, which is the practical lever on the market feed: type=fixed_question drops the trending questions and the headlines, which is most of the payload. A typical market response carries 26 items, of which 6 are fixed questions, 3 are trending and 17 are headlines.

The Shape of an Answer

Every answer arrives pre-split into answer.tldr and answer.body, both markdown. The split is applied server side using the same rule the CoinMarketCap web front end applies, and nothing else is rewritten, so what you receive is the generated text with a section boundary marked rather than an edited version of it.

The reference documents the two halves and names the body’s sections as Deep Dive and Conclusion. It does not specify what goes inside them, so the structure below is measured from the rendered price-analysis pages of 12 assets on 14 September 2026, not read from the schema. It describes generated copy, which can change without a version bump.

Section Labels observed Present on
TLDR Opens with the move and its size, then Primary reason: 12 of 12
TLDR Secondary reasons: 12 of 12
TLDR Near-term market outlook: 12 of 12
Deep Dive Numbered subheadings, six per page across the up and down answers 12 of 12
Deep Dive Overview: 11 of 12
Deep Dive What it means: 12 of 12
Deep Dive Watch for: 12 of 12
Conclusion Market Outlook: followed by a named stance 12 of 12
Conclusion Key watch: 12 of 12

Measured 14 September 2026 across the price-analysis pages of bitcoin, ethereum, xrp, solana, bnb, dogecoin, cardano, tron, chainlink, avalanche, hedera and pepe.

Do not parse these labels

They are literal strings with a trailing colon, which is what makes them tempting. Overview: already fails on 1 of 12, the schema guarantees none of it, and an earlier version of this page described the third TLDR label as “near-term outlook” when the rendered string is “Near-term market outlook”. Render the two markdown halves and let the labels fall where they fall.

Sources appear inline in the body as parenthetical attributions next to the claim they support, and the sources array carries the URLs. A source object has exactly one field, url, which is therefore also its identity for deduplication. Two further fields describe what you did not receive: one gives the number of sources the answer actually drew on, the other is a boolean saying whether the array was cut to fit sources_limit. Both are defined on the launch announcement, and how every answer is attributed covers what the source mix looks like in practice.

Carry the timestamp and the disclaimer through

Answers are timestamped and bylined to CMC AI on the rendered pages, and each one shows the disclaimer “CMC AI can make mistakes. Not financial advice.” Anything republishing these answers should keep both the timestamp and a disclaimer of equivalent prominence.

Requesting One Question

bash
# One question, one coin
GET /v5/cmc-ai/coins/latest?crypto_id=1&question_key=price_up

# Two questions across three coins, sources trimmed to a count only
GET /v5/cmc-ai/coins/latest?slug=bitcoin,ethereum,solana&question_key=overview,latest_news&sources_limit=0

# Market feed, fixed questions only, keys filtered client side
GET /v5/cmc-ai/latest?type=fixed_question

Identifiers are mutually exclusive: crypto_id, slug or symbol, one type per request, comma-separated. sources_limit defaults to 10 and caps at 100, and a limit of zero still returns sources_count, so a citation count can be shown without paying for the array. Pagination uses start and limit, which default to 100 and cap at 250. The unit is the cryptocurrency, not the insight, so a page of 100 can carry several hundred insights and limit does not bound the response size in the way it usually would.

Three behaviours are worth knowing before writing the polling loop.

Answers are read from storage, not produced when you ask for them, so a request that arrives inside the regeneration window receives the copy that is already there. A coin whose content has not changed since your last call is not billed for again, so the cost of a conservative schedule is closer to the number of regenerations than to the number of requests.

And there is a second staleness term on top of the cadence. The reference gives these endpoints a cache window of up to one minute, so a response can be a minute behind the stored answer even when a regeneration has just landed. It is immaterial against a 1-hour key, and worth knowing if you are polling the 30-minute market feed on a tight schedule and expecting to see a change the moment it is written.

Which Keys Have Content Right Now

A key being defined does not mean a given coin has an answer for it today, and the map endpoint reports that per key rather than per coin.

/v5/cmc-ai/coins/map returns available_question_keys, an array drawn from the same eight coin-level keys naming what currently has content for that asset. That array is the reason to call the map before the insight endpoint: it is the only place the key enum is reported as a live per-asset fact rather than as a schema. Alongside it, num_insights counts insights across all types, and last_generated_at is null where nothing has been generated.

The behaviour behind an absent key, what the empty responses look like, what they cost, and the measured fill rates by key are all covered in checking coverage before you call, which is the page to build the empty state from.

Availability

Two facts govern whether you can call these endpoints at all today. The family is gated to a single plan tier for now, and a later phase moves it onto its own AI credit allowance and opens it to the rest. The launch announcement is the canonical statement of both, and is the page to check rather than this one, because the phase boundary will move and a reference page that restates it will go stale.

One availability fact does belong here, because it shapes what you build rather than what you buy: answers are generated in English only, so any localised surface is translating them.

Read the Endpoint Reference

The coin insights, market feed and map endpoints each publish their own parameter reference, and the launch page carries the fill rates and availability detail.

FAQ

What is a question key?

A lowercase string identifying one question template, stable across coins and across regenerations. price_up means the same question on every cryptocurrency, so a label or translation stored against it does not need revisiting when the answer changes.

How many question keys are there?

Fourteen: eight at coin level (price_up, price_down, future_price, sentiment, latest_news, overview, roadmap, codebase) and six at market level (altcoin_performance, trending_narratives, bullish_momentum, upcoming_events, market_sentiment, kol_discussion).

Why is question_key null on some items?

Because trending questions and headlines are one-off items with no template behind them. Both carry type values of trending_question and top_news, and both use answer_id as their identifier.

Can I filter the market feed by question key?

Not in the request. /v5/cmc-ai/latest accepts type, sources_limit, start and limit, and returns question_key on every fixed question, so the filtering happens on the response. Only /v5/cmc-ai/coins/latest takes question_key as a parameter.

Can a coin return both the up and down price questions?

Not in the same generation. They are mutually exclusive, so a coin returns one or neither. A rendered price-analysis page can show both across successive days, because it accumulates a history.

How do I know when an answer has changed?

Watch answer_id. It identifies one generated answer, so a new value means new text to re-translate or re-cache. question_key stays the same.

Can I display CoinMarketCap’s question text instead of writing my own label?

You can, but read it from one surface and expect it to change. Measured across 20 assets on 14 September 2026, the reference example and the rendered page disagree for overview, they use different apostrophe characters for the four keys that contain one, and the future_price page renders a “Price Prediction” heading rather than a question. A label stored against question_key avoids all three.

Is coin sentiment the same as market sentiment?

No. sentiment asks what people are saying about one asset. market_sentiment reports the mood of the market as a whole. Different questions, different keys, different scope.

How often does each question change?

The whole market feed regenerates every 30 minutes. At coin level the price questions regenerate about every hour, future_price, sentiment and latest_news about every 8 hours, and overview, roadmap, codebase and trending questions about every 24 hours.