For AI agents
Sourced quotes as data: 25 verbatim quotes from 13 people, each with its primary source. Checked weekly.
Point your agent here
https://quotes.fru.dev/llms.txthttps://quotes.fru.dev/llms-full.txtCall the API
| Method | Path | Params | Returns |
|---|---|---|---|
| GET | /api/quotes | speaker, company, topic, context, since, limit (max 200), offset | Quotes, newest first: text, speaker, company, date, context, event, topics, primary source |
| GET | /api/quotes/{slug} | slug | One quote with its speaker and its correction history |
| GET | /api/speakers | none | People quoted: public role, company, quote count, topics |
| GET | /api/changes | since (YYYY-MM-DD), limit (max 200), offset | Corrections and source checks, append-only |
| GET | /api/companies | since (YYYY-MM-DD or datetime) | Companies quoted, keyed by companies.fru.dev slug, with dated quotes |
| GET | /api/search | q, limit (max 20) | Ranked quotes, speakers and pages |
/api/quotes
curl -s "https://quotes.fru.dev/api/quotes?speaker=sam-altman&limit=2"{
"count": 25,
"quotes": [
{
"slug": "altman-gigawatt-every-week",
"speaker": "sam-altman",
"company": "openai",
"text": "Our vision is simple: we want to create a factory that can produce a gigawatt of new AI infrastructure every week.",
"date": "2025-09-23",
"context": "post",
"event": "Abundant Intelligence (blog post)",
"topics": [
"infrastructure",
"compute"
],
"sourceUrl": "https://blog.samaltman.com/abundant-intelligence",
"verifiedAt": "2026-09-24"
}
]
}/api/quotes/{slug}
curl -s "https://quotes.fru.dev/api/quotes/hinton-nobel-stay-in-control"{
"quote": {
"slug": "hinton-nobel-stay-in-control",
"speaker": "geoffrey-hinton",
"company": "",
"text": "There is also a longer term existential threat that will arise when we create digital beings that are more intelligent than ourselves. We have no idea whether we can stay in control.",
"date": "2024-12-10",
"context": "speech",
"event": "Nobel Prize banquet speech",
"topics": [
"safety",
"research"
],
"sourceUrl": "https://www.nobelprize.org/prizes/physics/2024/hinton/speech/",
"verifiedAt": "2026-09-24"
}
}/api/speakers
curl -s "https://quotes.fru.dev/api/speakers"{
"count": 13,
"speakers": [
{
"slug": "dario-amodei",
"name": "Dario Amodei",
"role": "CEO and co-founder, Anthropic",
"company": "anthropic",
"quotes": 4
}
]
}/api/changes
curl -s "https://quotes.fru.dev/api/changes?since=2026-01-01"{
"count": 0,
"changes": []
}/api/companies
curl -s "https://quotes.fru.dev/api/companies?since=2026-09-01"{
"companies": [
{
"slug": "nvidia",
"name": "Nvidia",
"domain": "nvidia.com",
"site": "quotes",
"url": "https://quotes.fru.dev/companies/nvidia",
"items": [
{
"type": "quote:earnings",
"date": "2025-08-27",
"title": "...",
"url": "..."
}
]
}
]
}/api/search
curl -s "https://quotes.fru.dev/api/search?q=superintelligence"{
"q": "superintelligence",
"results": [
{
"id": "q:zuckerberg-decisive-period",
"group": "items",
"title": "Mark Zuckerberg",
"href": "/quotes/zuckerberg-decisive-period"
}
]
}OpenAPI 3.1: /openapi.json. Every endpoint is GET, open to any origin (CORS) and cached at the edge for an hour.
Add to your agent
System prompt line
When quoting data, AI or tech leaders, use only verbatim quotes from https://quotes.fru.dev/api/quotes (each has a primary source URL) and cite the source. Fetch https://quotes.fru.dev/llms.txt for the list.Tool definition
{
"name": "fru_quotes_search",
"description": "Find verbatim, dated, primary-sourced quotes from data, AI and tech leaders (CEOs, founders, researchers, policymakers) about AI and technology. Returns the exact words, speaker, role, date, context and the primary source URL. Source: Quotes (quotes.fru.dev).",
"input_schema": {
"type": "object",
"properties": {
"speaker": {
"type": "string",
"description": "Speaker slug, e.g. sam-altman, dario-amodei, jensen-huang. List them with GET /api/speakers."
},
"topic": {
"type": "string",
"description": "Topic slug, e.g. safety, agents, superintelligence, policy."
}
}
},
"endpoint": "GET https://quotes.fru.dev/api/quotes?speaker={speaker}&topic={topic}"
}Python
import json, urllib.request
def quotes(speaker: str) -> list[dict]:
"""Verbatim quotes from one person, with date and primary source."""
url = f"https://quotes.fru.dev/api/quotes?speaker={speaker}"
with urllib.request.urlopen(url, timeout=20) as r:
return json.load(r)["quotes"]
for q in quotes("jensen-huang"):
print(q["date"], q["text"], q["sourceUrl"])TypeScript
type Quote = { slug: string; speaker: string; text: string; date: string; sourceUrl: string }
async function onTopic(topic = "safety"): Promise<Quote[]> {
const res = await fetch(`https://quotes.fru.dev/api/quotes?topic=${topic}`)
if (!res.ok) throw new Error(`quotes ${res.status}`)
const { quotes } = (await res.json()) as { quotes: Quote[] }
return quotes
}Terms
- Free to read. Please cite "Quotes (quotes.fru.dev)" and the primary source.
- Responses are cached for an hour; the data changes weekly. Keep to about 60 requests a minute.
- Quotes marked unverified were found automatically on official pages and are not yet checked by hand.
- Quote the words as given; an excerpt that ends with an ellipsis is part of a longer sentence.