Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.particle.pro/llms.txt

Use this file to discover all available pages before exploring further.

GET /v1/podcasts/mentions returns every line of dialogue across the catalog where a resolved entity is named, grouped by episode and ordered by recency. Each item in data is one episode plus all of its mention windows. A mention window is a contiguous range of dialogue around a name, with is_mention flagged on the lines that actually contain it. This is the right endpoint when the answer doesn’t depend on the wording of your query — only on who is being named.
You want…Use this
Every line where a person or company is mentioned/v1/podcasts/mentions?entity_id=…
Episodes featuring an entity, restricted to one podcast/v1/podcasts/mentions?entity_id=…&podcast_id=…
Mentions filtered by participation (host vs guest vs mention)/v1/podcasts/mentions?entity_id=…&role=guest
Dialogue about a topic across the catalog (paraphrase tolerant)/v1/podcasts/search?semantic_search=…
Dialogue containing exact tokens or phrases/v1/podcasts/search?keyword_search=…

Examples

# Every line about Sam Altman across the catalog, with 2 lines of context.
curl --get "https://api.particle.pro/v1/podcasts/mentions" \
  --data-urlencode "entity_id=sam-altman" \
  -H "X-API-Key: $PARTICLE_API_KEY"
# Only lines where Sam Altman appears as a guest.
curl --get "https://api.particle.pro/v1/podcasts/mentions" \
  --data-urlencode "entity_id=sam-altman" \
  --data-urlencode "role=guest" \
  -H "X-API-Key: $PARTICLE_API_KEY"
# Mentions of OpenAI inside a single podcast.
curl --get "https://api.particle.pro/v1/podcasts/mentions" \
  --data-urlencode "company_id=openai" \
  --data-urlencode "podcast_id=all-in" \
  -H "X-API-Key: $PARTICLE_API_KEY"

Response

{
  "entity": {"id": "…", "slug": "sam-altman", "name": "Sam Altman"},
  "data": [
    {
      "episode": {
        "id": "…",
        "title": "…",
        "published_at": "2026-04-28T10:00:00Z",
        "podcast": {"id": "…", "title": "All-In"}
      },
      "mention_count": 8,
      "mention_variants": ["Sam Altman", "Altman"],
      "windows": [
        {
          "segment": {"id": "…", "type": "INTERVIEW", "title": "…"},
          "start_seconds": 942.0,
          "end_seconds": 988.5,
          "lines": [
            {"number": 137, "speaker": "Kara Swisher",   "role": "HOST",  "start_seconds": 942.0, "end_seconds": 948.2, "text": "…"},
            {"number": 138, "speaker": "Scott Galloway", "role": "HOST",  "start_seconds": 948.5, "end_seconds": 955.1, "text": "…", "is_mention": true},
            {"number": 139, "speaker": "Kara Swisher",   "role": "HOST",  "start_seconds": 955.5, "end_seconds": 988.5, "text": "…"}
          ]
        }
      ]
    }
  ],
  "has_more": true,
  "cursor": "s.AbCd…"
}
One episode = one item in data. windows[] is ordered by time within the episode. mention_count is the number of lines that triggered is_mention=true. mention_variants is the distinct strings observed for the entity (e.g., ["Sam Altman", "Altman"]) — useful for UI labels. If an episode mentions the entity more than 50 times, the page surfaces the first 50 windows and sets truncated: true on the episode. The next-page cursor still advances to a different episode — windows never split across pages.

Filters

ParamNotes
entity_idSlug or ID. Required when company_id is unset.
company_idSlug, domain, or ID. Resolves to the company’s linked entity.
podcast_idRestrict to mentions in one podcast.
episode_idRestrict to a single episode.
roleguest, host, panelist, correspondent, mention.
since / untilEpisode published_at window. ISO date.
context_lines0–20, default 2. Lines of surrounding dialogue per window.

Pagination

Standard limit (1–100, default 25) + opaque cursor. The unit of pagination is the episode — a single episode never splits across pages, so a page may return fewer total dialogue lines than another with the same limit. Pass the cursor from the previous response back as ?cursor=… for the next page.