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

# Get word-level transcript

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

## Request

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

Returns the word-level timestamped transcript for a podcast episode. Use start/end to extract a time range, limit/cursor to paginate (defaults to all words), and exclude_spacing=true to drop the inter-word whitespace tokens that NLP/LLM consumers don't need.

## Path parameters

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

## Query parameters

- `start` number, double: Start of the time range in seconds. Returns every word that overlaps the range.
- `end` number, double: End of the time range in seconds. Returns every word that overlaps the range. Defaults to the end of the episode.
- `limit` integer: Max words per page. Omit to return all matching words.
- `cursor` string: Opaque pagination cursor from a previous response.
- `exclude_spacing` boolean: Drop type:"spacing" tokens (whitespace between words). Pass true for NLP, search, and LLM consumption — roughly halves the payload. Leave false for caption/karaoke rendering where inter-word timing matters.

## Response `200`

OK

- WordTranscriptResponse
  - `cursor` string: Pass to next request for more results
  - `episode_id` string, required: Parent episode ID
  - `has_more` boolean, required: Whether more words exist beyond this page
  - `language` string: Transcript language code
  - `words` TranscriptWord[], nullable, required: Word-level timestamped transcript
    - `end_seconds` number, double, required: End time in seconds
    - `speaker` string: Speaker name or ID
    - `start_seconds` number, double, required: Start time in seconds
    - `text` string, required: Word text
    - `type` string: Token type: word, spacing, audio_event

## 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)
