---
title: "Get entity mentions in transcript"
method: GET
path: "/v1/podcasts/episodes/{id}/transcript/mentions"
tags: ["Podcast Transcripts", "tier:standard"]
---

# Get entity mentions in transcript

`GET /v1/podcasts/episodes/{id}/transcript/mentions`

## Request

- Base URL: `https://api.particle.pro`
- URL: `https://api.particle.pro/v1/podcasts/episodes/{id}/transcript/mentions`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Finds all mentions of a specific entity within an episode's transcript and returns each mention with surrounding dialogue context. Useful for seeing exactly where and how an entity is discussed.

## Path parameters

- `id` string, required: Episode slug or ID

## Query parameters

- `entity_id` string: Entity identifier (KGE ID or slug). When omitted, returns mentions for all entities.
- `context_lines` integer: Lines of dialogue context returned on each side of every mention line. A single mention yields up to 2*context_lines+1 lines (clamped at transcript boundaries). Adjacent or overlapping windows merge into one chunk.
- `limit` integer: Results per page. When entity_id is set, paginates the mentions[] (windows) for that entity; otherwise paginates the top-level entities[].
- `cursor` string: Opaque pagination cursor from a previous response.

## Response `200`

OK

- EntityMentionsResponse
  - `cursor` string: Pass to the next request to fetch the next page.
  - `entities` EntityMentionsForEntity[], nullable, required: Entity mention results. One per entity when entity_id is specified, multiple (paginated) when showing all.
    - `entity` EntityCompact, required
      - `company` EntityCompany
        - `domain` string: Company website domain
        - `id` string, required: Company identifier
        - `ticker` string: Primary stock ticker symbol
      - `description` string: Short description
      - `id` string, required: Entity ID
      - `image_url` string: Entity image URL
      - `name` string, required: Entity name
      - `person` EntityPerson
        - `company` string: Current company name
        - `id` string, required: Person identifier
        - `image_url` string: Person headshot URL
        - `title` string: Current role title
      - `slug` string, required: Human-readable slug identifier
      - `type` EntityType
        - `name` string, required: Human-friendly display label (e.g. 'Company').
        - `slug` string, required: Stable identifier, safe to pass to the type query parameter (e.g. 'company').
      - `wikipedia_url` string: Wikipedia URL
    - `mention_variants` string[], nullable, required: Distinct mention strings matched (e.g., ["Donald Trump", "Trump"]).
    - `mentions` EntityMention[], nullable, required: Context windows. Each window contains up to 2*context_lines+1 lines around a mention; nearby windows merge into a single window, so multiple is_mention=true lines may appear in one entry.
      - `end_seconds` number, double, required: End time of the last line in seconds
      - `lines` EntityMentionLine[], nullable, required: Dialogue lines in this context window
        - `end_seconds` number, double, required: End time in seconds
        - `is_mention` boolean, required: Whether this line contains a mention of the target entity
        - `matched_terms` string[], nullable: Mention variants that occur in this line, longest-first, for clients to highlight. Set only on lines with is_mention=true. Each term is spelled as the variant was recorded; a multi-word variant ("Jason Stark") matches case-insensitively, so locate it case-insensitively, while a single-token variant matches the line's text exactly — "US" is reported for "US" but never for "us", so acronyms and short names don't highlight their common-word homographs. Whole-token matches only: a variant never matches inside a longer word. Only the longest term is reported at any position, so terms never overlap.
        - `number` integer, required: Line number (1-indexed)
        - `role` string: Speaker role. One of the canonical buckets documented on the episode speakers endpoint (HOST, GUEST, PANELIST, CORRESPONDENT, MODERATOR, NARRATOR, ANNOUNCER, VOICE_ACTOR, SOUNDBITE_SPEAKER, AUDIENCE, ADVERTISER, PRODUCER, UNKNOWN, OTHER).
        - `speaker` string, required: Speaker name or ID
        - `start_seconds` number, double, required: Start time in seconds
        - `text` string, required: Spoken text
      - `start_seconds` number, double, required: Start time of the first line in seconds
    - `total_mention_count` integer, required: Unfiltered total: number of dialogue lines containing at least one mention of this entity in the episode. Equals the sum of is_mention=true over the un-paginated mentions[]; independent of which page is requested.
  - `episode_id` string, required: Parent episode ID
  - `has_more` boolean, required: When entity_id is set, true if more mention windows exist beyond this page; otherwise true if more entities exist.

## Other responses

- `402`: Payment Required. Read error_code. payment_required is the x402 path: either a keyless request being challenged — pay $0.03 in USDC per request (requirements in the PAYMENT-REQUIRED header) or send a pp_ API key — or a supplied payment that failed settlement (details in the PAYMENT-RESPONSE header; retry the same signature before signing a new one). See https://docs.particle.pro/x402. Any other code means the credential was accepted but does not cover this request (a plan or session gate such as premium_required or paid_plan_confirmation_required); its resolve says how to obtain access, and no payment header is sent.
- `default`: Error

---

[API](https://skmtc.dev/particle/apis/particle-api.md) · [All operations](https://skmtc.dev/particle/apis/particle-api/llms.txt) · [OpenAPI document](https://skmtc.dev/particle/apis/particle-api/revisions/416ba82ab9d7?raw)
