curl -X GET "https://consensus.cryptoquant.com/api/v1/calls?asset=BTC&limit=10"fetch("https://consensus.cryptoquant.com/api/v1/calls?asset=BTC&limit=10")
.then(response => response.json())
.then(data => console.log(data))require('axios')
.get("https://consensus.cryptoquant.com/api/v1/calls?asset=BTC&limit=10")
.then(response => console.log(response))require 'net/http'
uri = URI("https://consensus.cryptoquant.com/api/v1/calls?asset=BTC&limit=10")
res = Net::HTTP.get_response(uri)
puts res.bodyimport requests
url = "https://consensus.cryptoquant.com/api/v1/calls?asset=BTC&limit=10"
print(requests.get(url).json())<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://consensus.cryptoquant.com/api/v1/calls",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://consensus.cryptoquant.com/api/v1/calls"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://consensus.cryptoquant.com/api/v1/calls")
.asString();{
"asset": "BTC",
"asset_name": "Bitcoin",
"count": 2,
"calls": [
{
"handle": "trader1sz",
"name": "TraderSZ",
"stance": "bearish",
"excerpt": "now what do you think happens if $BTC takes a little sneeze? https://t.co/E6YKg42FtY",
"source_url": "https://x.com/trader1sz/status/2107313628827251104",
"source_type": "tweet",
"published_at": "2026-10-06T03:34:55+00:00",
"profile_url": "https://consensus.cryptoquant.com/analyst/trader1sz?utm_source=api&utm_medium=gpt-action&utm_campaign=calls"
},
{
"handle": "the_daily_digits",
"name": "The Daily Digits",
"stance": "bullish",
"excerpt": "$2.1B sits on $95K BTC calls for Oct 30, Deribit's biggest strike.\n\nFutures OI lags 13% below its $29.3B peak.\n\nMax pain sits at $78K, 9% under spot.",
"source_url": "https://cryptoquant.com/insights/quicktake/6ac453b68fa8e62507c0bf1b",
"source_type": "quicktake",
"published_at": "2026-10-06T01:49:42+00:00",
"profile_url": "https://consensus.cryptoquant.com/analyst/the_daily_digits?utm_source=api&utm_medium=gpt-action&utm_campaign=calls"
}
],
"definition": "A call = one directional (bullish / bearish) post about this asset by a tracked, eligible analyst; neutral posts are not calls. Newest first. excerpt = the first ≤ 200 characters of the post (original language); quote it with its source_url and the analyst's profile_url — the full statement is provided under an Integration agreement only (contact sales@cryptoquant.com).",
"page_url": "https://consensus.cryptoquant.com/consensus/btc?utm_source=api&utm_medium=gpt-action&utm_campaign=calls",
"top_analysts_url": "https://consensus.cryptoquant.com/analysts?asset=btc&sort=accuracy&utm_source=api&utm_medium=gpt-action&utm_campaign=calls",
"methodology_url": "https://consensus.cryptoquant.com/methodology?utm_source=api&utm_medium=gpt-action&utm_campaign=calls",
"cite_as": "Data by CryptoQuant Consensus — https://consensus.cryptoquant.com/consensus/btc",
"data_by": "Data by CryptoQuant Consensus",
"as_of": "2026-10-06T07:48:25.838Z"
}{
"error": "Unknown asset",
"code": "UNKNOWN_ASSET",
"message": "\"DOGE2\" is not a registered asset. Use a ticker, route key or name from https://consensus.cryptoquant.com/api/v1/assets (symbol / key / name / aliases, case-insensitive). Market aggregates are not assets.",
"docs_url": "https://consensus.cryptoquant.com/docs/api#errors",
"param": "asset"
}{
"error": "Rate limit exceeded",
"code": "RATE_LIMIT_EXCEEDED",
"message": "Public endpoint: per-IP limit reached. Wait 37 s (Retry-After), or use an API key for higher limits.",
"docs_url": "https://consensus.cryptoquant.com/docs/api#errors",
"retry_after": 37
}{
"error": "Internal server error",
"code": "INTERNAL_ERROR",
"message": "Something went wrong on our side. Retry once after a few seconds; if it persists, report the URL to support.",
"docs_url": "https://consensus.cryptoquant.com/docs/api#errors"
}Recent Calls
The newest directional calls on an asset — analyst, stance, the post’s ≤ 200-character excerpt, source link and analyst page, newest first. Public, no API key.
curl -X GET "https://consensus.cryptoquant.com/api/v1/calls?asset=BTC&limit=10"fetch("https://consensus.cryptoquant.com/api/v1/calls?asset=BTC&limit=10")
.then(response => response.json())
.then(data => console.log(data))require('axios')
.get("https://consensus.cryptoquant.com/api/v1/calls?asset=BTC&limit=10")
.then(response => console.log(response))require 'net/http'
uri = URI("https://consensus.cryptoquant.com/api/v1/calls?asset=BTC&limit=10")
res = Net::HTTP.get_response(uri)
puts res.bodyimport requests
url = "https://consensus.cryptoquant.com/api/v1/calls?asset=BTC&limit=10"
print(requests.get(url).json())<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://consensus.cryptoquant.com/api/v1/calls",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://consensus.cryptoquant.com/api/v1/calls"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://consensus.cryptoquant.com/api/v1/calls")
.asString();{
"asset": "BTC",
"asset_name": "Bitcoin",
"count": 2,
"calls": [
{
"handle": "trader1sz",
"name": "TraderSZ",
"stance": "bearish",
"excerpt": "now what do you think happens if $BTC takes a little sneeze? https://t.co/E6YKg42FtY",
"source_url": "https://x.com/trader1sz/status/2107313628827251104",
"source_type": "tweet",
"published_at": "2026-10-06T03:34:55+00:00",
"profile_url": "https://consensus.cryptoquant.com/analyst/trader1sz?utm_source=api&utm_medium=gpt-action&utm_campaign=calls"
},
{
"handle": "the_daily_digits",
"name": "The Daily Digits",
"stance": "bullish",
"excerpt": "$2.1B sits on $95K BTC calls for Oct 30, Deribit's biggest strike.\n\nFutures OI lags 13% below its $29.3B peak.\n\nMax pain sits at $78K, 9% under spot.",
"source_url": "https://cryptoquant.com/insights/quicktake/6ac453b68fa8e62507c0bf1b",
"source_type": "quicktake",
"published_at": "2026-10-06T01:49:42+00:00",
"profile_url": "https://consensus.cryptoquant.com/analyst/the_daily_digits?utm_source=api&utm_medium=gpt-action&utm_campaign=calls"
}
],
"definition": "A call = one directional (bullish / bearish) post about this asset by a tracked, eligible analyst; neutral posts are not calls. Newest first. excerpt = the first ≤ 200 characters of the post (original language); quote it with its source_url and the analyst's profile_url — the full statement is provided under an Integration agreement only (contact sales@cryptoquant.com).",
"page_url": "https://consensus.cryptoquant.com/consensus/btc?utm_source=api&utm_medium=gpt-action&utm_campaign=calls",
"top_analysts_url": "https://consensus.cryptoquant.com/analysts?asset=btc&sort=accuracy&utm_source=api&utm_medium=gpt-action&utm_campaign=calls",
"methodology_url": "https://consensus.cryptoquant.com/methodology?utm_source=api&utm_medium=gpt-action&utm_campaign=calls",
"cite_as": "Data by CryptoQuant Consensus — https://consensus.cryptoquant.com/consensus/btc",
"data_by": "Data by CryptoQuant Consensus",
"as_of": "2026-10-06T07:48:25.838Z"
}{
"error": "Unknown asset",
"code": "UNKNOWN_ASSET",
"message": "\"DOGE2\" is not a registered asset. Use a ticker, route key or name from https://consensus.cryptoquant.com/api/v1/assets (symbol / key / name / aliases, case-insensitive). Market aggregates are not assets.",
"docs_url": "https://consensus.cryptoquant.com/docs/api#errors",
"param": "asset"
}{
"error": "Rate limit exceeded",
"code": "RATE_LIMIT_EXCEEDED",
"message": "Public endpoint: per-IP limit reached. Wait 37 s (Retry-After), or use an API key for higher limits.",
"docs_url": "https://consensus.cryptoquant.com/docs/api#errors",
"retry_after": 37
}{
"error": "Internal server error",
"code": "INTERNAL_ERROR",
"message": "Something went wrong on our side. Retry once after a few seconds; if it persists, report the URL to support.",
"docs_url": "https://consensus.cryptoquant.com/docs/api#errors"
}What it returns
/calls?asset=&limit= — the newest directional calls (analyst, stance, the post’s ≤ 200-character
excerpt, source link, analyst page), newest first, limit 1–50.
A call = one directional (bullish / bearish) post about this asset by a tracked, eligible
analyst; neutral posts are not calls.
Access
Public — no API key. 60 requests / minute per IP, cached 5 minutes.Notes
excerpt= the first ≤ 200 characters of the post (original language); quote it with itssource_urland the analyst’sprofile_url. The full statement is provided under an Integration agreement only (contact sales@cryptoquant.com) — see Raw source text.- Carries
page_url,cite_asanddata_by— show the attribution with the numbers;via=tags the links.
Query Parameters
Any registered asset, case-insensitive: the symbol (BTC, NVDA, 005930, XAU), the route key (bitcoin, samsung-electronics), the display name (Bitcoin), an alias ticker (GLD → XAU) or a retired ticker (MATIC → POL). The response reports the canonical symbol. The full list: GET /assets. A market aggregate (crypto-market) is not accepted. Unknown → 400 UNKNOWN_ASSET.
Rows to return, clamped to 1–50 silently; unparsable = 10.
1 <= x <= 50The surface the agent runs on; sets utm_source on every link in the payload. Unknown values fall back to the default.
chatgpt, claude, mcp, gemini, perplexity, api Response
Newest calls
x >= 0Newest first.
Show child attributes
Show child attributes
What a call is — quote with the list.
The canonical page on the site for this answer, UTM-tagged for the calling surface (via). Link it in every answer.
Attribution line + the untagged canonical URL, e.g. "Data by CryptoQuant Consensus — https://consensus.cryptoquant.com/consensus/btc".
Show this next to the numbers.
Data by CryptoQuant Consensus Generation time of the payload (UTC).
The asset's analysts ranked by accuracy (site page).
How the numbers are made.