Key Takeaways
- A source is identified by its URL, which is also its identity key, so the list is deduplicated on the normalised URL rather than on a title.
- Source concentration is high and varies sharply by question type. On the discussion question, 84% of linked sources were posts on x.com. Measured across four question types, x.com accounts for 51%.
- Those 206 links resolved to just 13 distinct hostnames, so the source base is concentrated rather than broad.
- The API returns
sources_count, the true total behind an answer, next to a cappedsources[]array and asources_truncatedflag. - Requesting
sources_limit=0still returnssources_count, so a citation count can be displayed without transferring the array.
What a Source Is
The source object is deliberately thin. Its one required field is the canonical URL of the page a claim came from, and because that URL is the only field, it is also the identity used to deduplicate. Two entries pointing at the same article, arriving with different query strings, are the same source and collapse into one.
That puts weight on URL normalisation, which the documentation describes as forcing https, stripping tracking and rendering parameters, stripping www., normalising twitter.com to x.com, and removing fragments before the array is deduplicated. Across the 206 published source links measured, every one used https and none carried a query string, so scheme forcing and parameter stripping both hold on the rendered surface.
www. rule has a narrow exception
Re-measured on 11 September across 40 pages and 172 answer-source links, 13 carried www., a rate of 7.6%, and they fell on exactly two hosts. Both of those hosts redirect a bare request to their www. form and declare www. as canonical, confirmed by navigation on 14 September. So the rule holds except where the publisher’s own canonical host includes www. If you deduplicate source URLs against your own store, normalise the host yourself rather than assuming the array has been stripped.
The Measured Source Mix
Measured 9 September 2026 across 206 linked sources on 62 coin pages, all of one question type.
| Class | Share | Links | Hosts observed |
|---|---|---|---|
| Social | 83.5% | 172 | x.com |
| CoinMarketCap | 10.2% | 21 | coinmarketcap.com |
| News | 3.4% | 7 | Cointelegraph, CryptoSlate, AMBCrypto, Bitcoinist, news.bitcoin.com, Yahoo Finance |
| Data and exchange | 2.9% | 6 | TradingView, OKX, Phemex, BYDFi, Changelly |
Method: same-origin fetch of the latest-updates page for 64 coin slugs, parsed with DOMParser, counting every anchor the page labels “View original post” and classifying by hostname. 62 pages carried linked sources, 2 returned 404.
Two things follow for anyone building on this. There is no parameter for filtering sources by kind, so a product that does not want to surface social posts has to filter client-side on the hostname, and it will be discarding most of the citations rather than a fraction of them. And a product that surfaces citations to a professional audience should expect handles rather than mastheads, and design the credit line accordingly.
The concentration matters as much as the mix. Thirteen hostnames across 206 links means the same small set of publishers and accounts recurs, so a citation display will show repeat names to any user reading more than a few answers.
What the Published Answers Show
A discussion answer renders considerably more than a bare link. Four sources behind one Bitcoin answer, read on 8 September 2026:
| Source as shown | Type shown | Timestamp shown | Links to |
|---|---|---|---|
| U.Today | Publication | 8 Sep 2026 12:01 AM UTC | u.today/price-analysis/… |
| CoinMarketCap | Publication | 8 Sep 2026 12:08 AM UTC | coinmarketcap.com/community/articles/… |
| Coinbase Predictions | Publication | 31 Dec 2026 12:00 AM UTC | coinbase.com/predictions/event/… |
| @wick_btc | 4,487 followers | 10 Jun 2026 11:57 PM UTC | x.com/ox__Wick/status/… |
Each carries a short verbatim quotation from the source, an interpretation of what it means for the asset, and a link labelled “View original post” that resolves to the original page.
Linked Sources Sit on the Discussion Answer
Attribution is not uniform across question types, and this is the practical thing to know before building a citation UI.
| Question | Attribution | What renders |
|---|---|---|
| Discussion | Linked | Name, type, follower count and timestamp, with a “View original post” link |
| News | Parenthetical | A publisher name in brackets at the end of the item, no link |
| Codebase | Parenthetical | Same, and two items credited only to “(Source)” |
| Roadmap | Parenthetical | Same pattern |
| Price up and price down | Parenthetical | Named inside the reasoning. Zero linked sources across 28 pages that returned content |
So a claim in a discussion answer can be checked in two clicks. A claim in a price answer names its source but leaves the reader to find it. Build the citation surface around the answer type rather than assuming one pattern.
Filtering Sources Is a Client-Side Job
The API returns every source in one array with no kind attached, so classifying them is work the caller does. The four groupings used on this page are a description of what turns up, not values the endpoint accepts.
| Grouping | Covers |
|---|---|
| CoinMarketCap | Its own pages, Academy articles and Community posts |
| News | News outlets and editorial publications |
| Social | Posts from individual accounts and commentators |
| Data and exchange | Market-data, exchange and institutional sources |
A product that needs to exclude one of these matches on the hostname after the response arrives. Given the measured mix, excluding social removes roughly five in six of the citations behind a discussion answer, so plan the empty state as carefully as the populated one.
How Many Sources Sit Behind an Answer
Answers draw on far more sources than any interface shows, which is why the array is capped and the true total is reported separately.
| Field | What it is |
|---|---|
sources[] |
The returned list, trimmed to sources_limit |
sources_limit |
The cap you request. Defaults to 10, accepts up to 100, and 0 returns an empty array with the count still populated |
sources_count |
The true number behind the answer, before the cap |
sources_truncated |
True whenever the array is shorter than that count |
The gap is wide: published pages average 3.32 linked sources while a single answer’s sources_count can run into the dozens. Together those fields make an honest citation display possible: show what came back, and state the count that did not, rather than implying the visible handful is the whole basis.
# Count only, no array transferred
GET /v5/cmc-ai/coins/latest?slug=bitcoin&sources_limit=0
# Raise the cap to see more of what an answer drew on
GET /v5/cmc-ai/coins/latest?slug=bitcoin&sources_limit=100
Parameter names and defaults verified against the shipped Pro API reference. The family is Enterprise-gated in Phase 1, so these are not callable on a lower plan.
A citation line built from those fields, rather than from the array length:
def citation_line(insight):
"""Build the line from the fields, never from len(sources)."""
shown = len(insight["sources"])
total = insight["sources_count"]
if not insight.get("sources_truncated"):
return f"{total} source{'s' if total != 1 else ''}"
return f"Showing {shown} of {total} sources"
Where an Answer Says It Does Not Know
Generated answers disclose their own gaps rather than filling them. On the live codebase answer for Bitcoin, the text states that specific patch notes for one release “are not detailed in the provided sources” and reasons from what such a release generally consolidates. On the news answer, a corporate purchase is described as reported, with the note that transaction details “remain unconfirmed by an official filing”.
For anyone assessing whether to republish an answer, that hedging marks the boundary of what the sources support.
Checking an Answer Yourself
The published pages are the reference implementation. Open the answer, read the claim, follow the source link, compare. Four questions render per covered coin on the latest updates page, so news, discussion, codebase and roadmap answers can be checked side by side, and price analysis covers the price-move questions.
Each is timestamped and bylined to CMC AI, and each shows the disclaimer “CMC AI can make mistakes. Not financial advice.” Keep both at comparable prominence, and keep the source links live.
Where to Go Next
For the questions these answers respond to and the keys that identify them, read the question keys reference. For what each call costs, read the per-endpoint credit reference.
FAQ
Does the API return the sources behind each answer?
Yes. Each insight carries a sources[] array of URLs, plus sources_count giving the true total behind the answer and sources_truncated indicating whether the array was cut.
What kind of sources are they, mostly?
Two measurements, and the difference between them matters. Across 206 linked sources on 62 coin pages, all of one question type, 84% were posts on x.com, 10% were CoinMarketCap pages, and the remaining 6% were news outlets, exchanges and market-data providers. Widening to four question types across 10 assets and 40 pages on 11 September 2026 gives a different picture: of 172 answer-source links, x.com accounts for 88, or 51%. The rest spread across finance.yahoo.com (11), www.tradingview.com (10), u.today (8), github.com (7), crypto.news (5) and a long tail of crypto publications. So the 84% figure is real but question-specific. Anyone quoting a single concentration number should say which question type it describes.
Why is the array shorter than the source count?
Because the array is capped, by default at 10. sources_count always reports the full number so a citation display can be accurate about what it is not showing.
Can I get the count without the URLs?
Yes. sources_limit=0 returns an empty array with sources_count still populated.
Can I exclude social posts?
Not through the API. Sources arrive in one array with no kind attached, so filter on the hostname after the response. Expect to discard most of the list, since social is the largest group by a wide margin.
Are duplicate sources removed?
Yes. URLs are normalised before deduplication, which forces https, strips tracking and rendering parameters and removes fragments. Across 206 published source links, none carried a query string and all used https. One documented step has a measured exception: www. is stripped except on hosts that redirect a bare request to their www. form, which was 7.6% of links across a 172-link sample and only two hosts. Normalise the host on your side before deduplicating.
Do sources include CoinMarketCap’s own pages?
Yes, covering CoinMarketCap headlines, Academy articles and Community posts. That was 10% of measured links.
Do all answer types link their sources?
No. The discussion answer links each source with its name, type and timestamp. The news, codebase, roadmap and price-move answers name sources in parentheses without a link.


