Search the podcast catalog by what is said in episodes — by meaning (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.
semantic_search), by exact phrase (keyword_search), or both at once (hybrid ranking). Each result is one segment of one episode with bounded transcript windows pinpointing the highest-relevance lines and any highlight clips that overlap the segment.
Use this for “find dialogue about a topic”. For “every line naming a person or company” use podcasts/get_entity_mentions instead — entity_slug and company_slug here narrow ranked results, they don’t drive the ranking.
Inputs
At least one ofsemantic_search or keyword_search is required.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
semantic_search | string | one of | — | Vector-similarity search by meaning. Express the query the way you’d describe the topic to a colleague — paraphrase tolerant. Combine with keyword_search for hybrid ranking. |
keyword_search | string | one of | — | BM25 lexical search over dialogue. Use when an exact token must appear (tickers, drug names, model numbers). |
entity_slug | string | no | — | Entity slug or ID. Filters results to episodes featuring this entity. |
company_slug | string | no | — | Company slug, domain, or ID. Resolves to the company’s linked entity and applies as a filter. |
podcast_slug | string | no | — | Podcast slug or ID. |
episode_slug | string | no | — | Filter to a specific episode by slug or ID. |
segment_type | string | no | — | Segment type filter. One of: INTRO, PERSONAL_BANTER, TOPIC_DISCUSSION, INTERVIEW, TRANSITION, AD, OUTRO. |
role | string | no | — | Speaker/mention role filter on the entity_slug or company_slug filter. One of: guest, host, panelist, correspondent, mention. |
since | string | no | — | Only segments from episodes published on or after this ISO 8601 date. |
until | string | no | — | Only segments from episodes published on or before this ISO 8601 date. |
sort | string | no | relevance | Sort order. One of: relevance, recency. |
limit | integer (1–50) | no | 10 | Results per page. |
cursor | string | no | — | Opaque pagination cursor. |
Output
A markdown document with## Dialogue matches (N) and one ### Segment title section per match. Each section carries **Episode:**, **Podcast:**, **Published:**, **Episode slug:**, **Segment type:**, **Match:** (the source: semantic, keyword, or hybrid) lines, then one or more bullets formatted Window @ start–end (or Preview @ … for truncated windows) followed by indented dialogue lines. The line that ranked highest for the query is bolded; surrounding context is plain. When highlight clips overlap the segment, they appear under an Overlapping clips: line as bullets. Older results paginate with cursor=<value>.
The bolded line means “this is the highest-ranked line for the current query”. This is a different signal from the bolded line in podcasts/get_entity_mentions, which means “this line names the resolved entity” — they answer different questions and can both be true within the same episode for different reasons.
Sample (semantic_search="how AI affects the labor market", limit=2):
**Episode slug:** is what you can feed into podcasts/get_episode for the full transcript or into podcasts/get_entity_mentions (format=detail, episode_slug) for mention windows around a specific person.
Example
semantic_search and keyword_search:
Related
- REST equivalent:
GET /v1/podcasts/search. - For “every line naming X” use
podcasts/get_entity_mentions. - For metadata-only episode discovery (no dialogue), use
podcasts/list_episodes.