For developers & agents
Build on Brief.
Brief exposes one headless endpoint so an AI agent can fetch a structured briefing on any person — no browser, no login, no JavaScript. One GET, one JSON object back.
One endpoint
Pass a person's name. Get back the same structured briefing the website renders — as a single JSON object (not a stream).
curl "https://briefthecall.com/api/brief?q=Satya%20Nadella"POST works too, with a JSON body — useful when you want to add a disambiguation hint:
curl -X POST https://briefthecall.com/api/brief \
-H "Content-Type: application/json" \
-d '{"query":"Satya Nadella","hint":{"company":"Microsoft"}}'Parameters
- q
- Required. The person’s name, e.g. "Satya Nadella". (POST: use "query".) Pass a name, not a URL.
- company
- Optional disambiguation hint when a name is ambiguous. (POST: hint.company.)
- city
- Optional disambiguation hint. (POST: hint.city.)
What you get back
A JSON envelope with metadata plus brief — the structured briefing: a one-line handshake, a four-part dossier (person, company, market, network), optional working_style, a toolbox of three openers + three questions + what to avoid, and cited sources.
{
"query": "Satya Nadella",
"resolvedName": "Satya Nadella",
"entityId": "person:satya-nadella",
"slug": "satya-nadella",
"url": "https://briefthecall.com/brief/satya-nadella",
"cached": true,
"generatedAt": "2026-05-22T09:14:00.000Z",
"brief": {
"handshake": "One-line orientation on who they are right now.",
"dossier": {
"person": "Who they are, role, tenure, what they're focused on.",
"company_air": "What's happening at their company.",
"market": "The market and forces around them.",
"network": { "summary": "Who they work with.", "key_people": [] }
},
"working_style": { "observations": ["..."], "conversational_tips": ["..."] },
"toolbox": {
"hooks": ["opener 1", "opener 2", "opener 3"],
"questions": ["question 1", "question 2", "question 3"],
"avoid": "What not to bring up."
},
"soft_claims": ["lower-confidence signals worth verifying"],
"sources": ["https://...", "https://..."]
}
}Rate limits & freshness
Cached reads are free and instant
Anyone already in our index returns immediately at no cost. This is the bulk of what agents call, and it is not rate-limited.
Fresh generation is rate-limited
A brief for someone new is researched live from the web, which takes a few seconds and is limited while we test capacity (currently ~5/hour per client and a global daily ceiling). If you hit a limit you get 429 (slow down, with a Retry-After header) or 402 (daily budget reached) — cached reads keep working either way.
Refreshed every 15 days
Briefs stay fresh on a roughly fortnightly cadence. A cached brief older than 15 days is regenerated on the next request; the cached and generatedAt fields tell you exactly how fresh the data is.
Examples
JavaScript
const res = await fetch(
"https://briefthecall.com/api/brief?q=" + encodeURIComponent("Satya Nadella")
);
const { brief, url, cached } = await res.json();
console.log(brief.handshake); // → one-line orientation
console.log(brief.toolbox.questions); // → three openersPython
import requests
r = requests.get(
"https://briefthecall.com/api/brief",
params={"q": "Satya Nadella"},
)
data = r.json()
print(data["brief"]["handshake"])What you can build
- · Meeting-prep agents that brief you on every attendee before a calendar event
- · CRM enrichment — attach a fresh brief to each new contact or lead
- · Slack / Teams bots —
/brief <name>in any channel - · Research agents — expose Brief as a tool your agent can call mid-task
- · Outbound workflows — generate personalized openers at the top of a sequence
Good citizenship
- · Acceptable use. Briefs are AI-generated and may be inaccurate. Don't use them to make or inform decisions about hiring, credit, tenancy, insurance, or background checks. These limits bind API consumers too — see the Terms and Privacy Policy.
- · Profiles can be removed. If someone asks us to take down or correct their profile, the endpoint returns
451for them instead of a brief. Anyone can request it at /takedown — no login. - · Link back. If you surface a brief, point to its
url(or briefthecall.com) — the response includes anattributionfield with a ready-to-use link. It's the loop that keeps this open. - · Send a person's name, not a URL.
- · Reuse results — repeated calls for the same person are served from cache, so caching on your side is friendly to everyone.
- · Respect
Retry-Afteron 429/402. - · /llms.txt describes the service for agents; a bare
GET /api/briefreturns a machine-readable manifest.
Try it now.
One request, no key required.
GET /api/brief?q=Satya Nadella →