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 openers

Python

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 451 for 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 an attribution field 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-After on 429/402.
  • · /llms.txt describes the service for agents; a bare GET /api/brief returns a machine-readable manifest.

Try it now.

One request, no key required.

GET /api/brief?q=Satya Nadella →