Ask a language model about a company and it answers from training data that is months old. Paste whole articles into the prompt and you spend your context window on boilerplate, ads and five versions of the same story. What a model needs is the facts, each with a date and a source it can cite.
That is exactly what a statement is. This guide builds a context block for "what is happening with Nvidia" from the API and shows what each step returns.
1. Fetch the facts
/v2/statements searches every statement in the 62-day window. Filter by symbol and keep only what the extraction
model judged important:
You need a RapidAPI key to run the examples: the free plan is enough.
import requests
API = "https://finance-pulse.p.rapidapi.com"
HEADERS = {"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY", "X-RapidAPI-Host": "finance-pulse.p.rapidapi.com"}
resp = requests.get(f"{API}/v2/statements", headers=HEADERS,
params={"symbol": "NVDA", "importance_min": "high", "limit": 20})
statements = resp.json()["data"]
const API = "https://finance-pulse.p.rapidapi.com";
const HEADERS = { "X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY", "X-RapidAPI-Host": "finance-pulse.p.rapidapi.com" };
const resp = await fetch(`${API}/v2/statements?symbol=NVDA&importance_min=high&limit=20`, { headers: HEADERS });
const statements = (await resp.json()).data;
curl -G https://finance-pulse.p.rapidapi.com/v2/statements \
--data-urlencode "symbol=NVDA" --data-urlencode "importance_min=high" --data-urlencode "limit=20" \
-H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" -H "X-RapidAPI-Host: finance-pulse.p.rapidapi.com"
Each item is one fact, newest first by publication time:
{
"data": [
{
"statement": "Ron DeSantis accuses Nvidia CEO Jensen Huang of equating superintelligence factories with surveillance centers",
"published_at": "2026-10-01T09:32:53Z",
"sentiment": "bearish",
"importance": "high",
"source_domain": "benzinga.com",
"source_url": "https://www.benzinga.com/news/politics/26/10/62099064/ron-desantis-takes-aim-at-nvidia-ceo-jensen-huang-superintelligence-factories-surveillance-centers",
"topic_id": "0a8cc33b-7a0c-4794-b20d-b32674d36e7e",
"topic_name": "Ron DeSantis accuses Nvidia CEO Jensen Huang of equating superintelligence factories with surveillance centers"
},
{
"statement": "Nvidia expects to grow at a strong pace again in 2027",
"published_at": "2026-10-01T09:18:00Z",
"sentiment": "bullish",
"importance": "high",
"source_domain": "nasdaq.com",
"source_url": "https://www.nasdaq.com/articles/3-best-stocks-buy-october",
"topic_id": "b8629511-c8a0-4fd2-8328-be91de6727b4",
"topic_name": "Nvidia Q1 FY2027 revenue of $81.61B, up 85% year over year"
},
… 18 more
],
"next_cursor": "WzE3OTA3MDkwODAsIjM3OTUyNjRlLWI3YmItNTZmMC1hNjM2LWZmYjlkOTI2ZGI0NyJd"
}
2. Turn them into a prompt block
One line per fact, with its source and date, is all the structure a model needs to cite:
lines = [f"- {s['statement']} ({s['source_domain']}, {s['published_at'][:10]})" for s in statements]
context = "Recent reporting on Nvidia (NVDA):\n" + "\n".join(lines)
print(context)
Recent reporting on Nvidia (NVDA):
- Ron DeSantis accuses Nvidia CEO Jensen Huang of equating superintelligence factories with surveillance centers (benzinga.com, 2026-10-01)
- Nvidia expects to grow at a strong pace again in 2027 (nasdaq.com, 2026-10-01)
- Cathie Wood is contacting Nvidia executives to discuss a potential IPO. (deraktionaer.de, 2026-10-01)
- Nvidia second-quarter revenue rose 265% year over year on AI chip demand (finance.yahoo.com, 2026-10-01)
- Nvidia's forward price-to-earnings ratio has dropped 38% (nasdaq.com, 2026-10-01)
- Nvidia's stock is up 22% this year (nasdaq.com, 2026-10-01)
- Foreign investors bought more than 6,699 Nvidia GPUs yesterday. (ec.ltn.com.tw, 2026-10-01)
…
Twenty such lines cost a few hundred tokens. Ask the model to answer only from these facts and to cite the domain, and every claim in its answer can be traced to an article.
3. Group facts into developments
A flat list mixes several stories. Every statement carries a topic_id; fetch those topics in one call to see which
developments the facts belong to and how widely each was reported:
topic_ids = sorted({s["topic_id"] for s in statements})
topics = requests.get(f"{API}/v2/topics", headers=HEADERS,
params={"ids": ",".join(topic_ids)}).json()["data"]
for t in sorted(topics, key=lambda t: -t["sources"]):
print(f"{t['sources']:>3} outlets {t['sentiment_score']:+.2f} {t['name']}")
32 outlets +0.82 Nvidia AI Chip Demand Surges
22 outlets +0.00 Nvidia CEO Jensen Huang calls AI fears overblown
18 outlets -0.11 Nvidia stock faces significant market pressure
15 outlets +0.88 Nvidia announces largest stock buyback in history
14 outlets +0.62 Nebius Group acquires AI startup Eigen AI for $643 million
9 outlets +0.77 Nvidia raises dividend and adds $80 billion buyback
7 outlets +1.00 Nvidia stock price rises amid analyst upgrades
…
Now the prompt can be organised by development, and the number of outlets tells the model (and you) how much weight each deserves: a story covered by 33 outlets is not the same as a single blog post.
4. Drill into one development
/v2/topics/{topic_id} returns the topic with its source mix and its newest 20 statements, plus a cursor for the rest:
topic = requests.get(f"{API}/v2/topics/{topics[0]['id']}", headers=HEADERS).json()["data"]
print(topic["name"], topic["sources"], "outlets", topic["source_mix"])
source_mix separates reported facts (news) from opinion (speculative) and reddit, which you may want to keep
out of a factual context block: add source_type=news to the statements query.
Where to go next
- Keep the context fresh without re-reading everything: Never miss a statement.
- Measure attention instead of reading it: A news-attention and sentiment series.
Run this yourself: get a free API key on RapidAPI ↗. The free plan is enough for every example in this guide.