Skip to main content
Every transcribed episode has two transcript representations:
  • Dialogue — speaker-attributed lines with sentence-level timestamps (fast to retrieve)
  • Word-level — every word individually timestamped with speaker attribution (larger payload)
Both are accessible for full episodes, individual segments, and individual clips.

Dialogue transcript

The default format. Each line is a speaker turn with start/end timestamps.
curl "https://api.particle.pro/v1/podcasts/episodes/6OdMXSZK8XxM89hbS3eanr/transcript" \
  -H "X-API-Key: YOUR_API_KEY"
episode_id
string
required
The parent episode ID.
language
string
ISO 639-1 language code.
duration_seconds
number
required
Total episode duration.
lines
DialogueLine[]
required
Example response
{
  "episode_id": "6OdMXSZK8XxM89hbS3eanr",
  "language": "en",
  "duration_seconds": 4832.5,
  "lines": [
    {
      "number": 1,
      "speaker": "Kevin Roose",
      "role": "HOST",
      "start_seconds": 0.0,
      "end_seconds": 4.2,
      "text": "Welcome back to Hard Fork. I'm Kevin Roose."
    },
    {
      "number": 2,
      "speaker": "Casey Newton",
      "role": "CO_HOST",
      "start_seconds": 4.5,
      "end_seconds": 8.1,
      "text": "And I'm Casey Newton. Today we're talking about AI regulation."
    }
  ]
}

Output formats

Use the format query parameter. All three formats support speaker filtering and time-range clipping.
The default. Structured JSON with speaker attribution, roles, and timestamps per line.
curl ".../transcript?format=dialogue"
Best for: building conversation UIs, speaker analysis, programmatic processing.

Filter by speaker

Extract everything a specific person said:
curl ".../transcript?speaker=Casey+Newton" \
  -H "X-API-Key: YOUR_API_KEY"
Only lines from that speaker are returned. Works with all three output formats.

Time-range clipping

Extract a portion of the transcript by time range:
# Get the transcript from 5 minutes to 15 minutes
curl ".../transcript?start=300&end=900" \
  -H "X-API-Key: YOUR_API_KEY"
Combine with speaker filtering to get exactly what one person said during a specific discussion:
curl ".../transcript?speaker=Casey+Newton&start=300&end=900&format=text"

Word-level transcript

For applications that need per-word timing — karaoke-style highlighting, precision audio editing, or word-aligned search:
curl "https://api.particle.pro/v1/podcasts/episodes/6OdMXSZK8XxM89hbS3eanr/transcript/words?start=0&end=10" \
  -H "X-API-Key: YOUR_API_KEY"
Example response
{
  "episode_id": "6OdMXSZK8XxM89hbS3eanr",
  "language": "en",
  "words": [
    {"text": "Welcome", "type": "word", "start_seconds": 0.0, "end_seconds": 0.4, "speaker": "Kevin Roose"},
    {"text": " ", "type": "spacing", "start_seconds": 0.4, "end_seconds": 0.45},
    {"text": "back", "type": "word", "start_seconds": 0.45, "end_seconds": 0.7, "speaker": "Kevin Roose"},
    {"text": " ", "type": "spacing", "start_seconds": 0.7, "end_seconds": 0.75},
    {"text": "to", "type": "word", "start_seconds": 0.75, "end_seconds": 0.9, "speaker": "Kevin Roose"}
  ]
}
Word-level transcripts for long episodes can be very large. Always use start and end parameters to request only the time range you need.

Segment and clip transcripts

Segments and clips have their own transcript endpoints that return the dialogue scoped to that time range:
# Segment transcript
curl "https://api.particle.pro/v1/podcasts/segments/9fLwNa2mK7Rp4xYb/transcript" \
  -H "X-API-Key: YOUR_API_KEY"

# Clip transcript
curl "https://api.particle.pro/v1/podcasts/clips/3hR8jUVn5cQwDzXe/transcript?format=srt" \
  -H "X-API-Key: YOUR_API_KEY"
These support the same format parameter as the episode transcript.