curl -H "X-API-Key: $PARTICLE_API_KEY" \
"https://api.particle.pro/v1/podcasts/episodes/stream?milestone=transcribed"[
{
"data": {
"cursor": "<string>",
"episode": {
"duration_seconds": 123,
"explicit": true,
"has_transcript": true,
"id": "<string>",
"title": "<string>",
"audio_url": "<string>",
"clip_count": 123,
"clips": [
{
"duration_seconds": 123,
"end_seconds": 123,
"engagement_score": 123,
"id": "<string>",
"start_seconds": 123,
"title": "<string>",
"audio_url": "<string>",
"description": "<string>",
"episode": {
"id": "<string>",
"title": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"published_at": "2023-11-07T05:31:56Z",
"slug": "<string>"
},
"intro_statement": "<string>",
"segment": {
"id": "<string>",
"title": "<string>",
"type": "<string>"
},
"speaker": {
"name": "<string>",
"entity": {
"id": "<string>",
"name": "<string>",
"slug": "<string>",
"company": {
"id": "<string>",
"domain": "<string>",
"ticker": "<string>"
},
"description": "<string>",
"image_url": "<string>",
"person": {
"id": "<string>",
"company": "<string>",
"image_url": "<string>",
"title": "<string>"
},
"type": {
"name": "<string>",
"slug": "<string>"
},
"wikipedia_url": "<string>"
},
"person": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"image_url": "<string>",
"slug": "<string>"
},
"role": "<string>"
}
}
],
"description": "<string>",
"entity_count": 123,
"episode_number": 123,
"image_url": "<string>",
"language": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"published_at": "2023-11-07T05:31:56Z",
"segment_count": 123,
"segments": [
{
"duration_seconds": 123,
"end_seconds": 123,
"id": "<string>",
"number": 123,
"start_seconds": 123,
"title": "<string>",
"type": "<string>",
"audio_url": "<string>",
"description": "<string>",
"episode": {
"id": "<string>",
"title": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"published_at": "2023-11-07T05:31:56Z",
"slug": "<string>"
},
"read_type": "<string>",
"summary": "<string>"
}
],
"slug": "<string>",
"speakers": [
{
"name": "<string>",
"description": "<string>",
"descriptor": "<string>",
"entity": {
"id": "<string>",
"name": "<string>",
"slug": "<string>",
"company": {
"id": "<string>",
"domain": "<string>",
"ticker": "<string>"
},
"description": "<string>",
"image_url": "<string>",
"person": {
"id": "<string>",
"company": "<string>",
"image_url": "<string>",
"title": "<string>"
},
"type": {
"name": "<string>",
"slug": "<string>"
},
"wikipedia_url": "<string>"
},
"person": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"image_url": "<string>",
"slug": "<string>"
},
"role": "<string>",
"speaking_duration_seconds": 123
}
],
"topics": [
{
"id": "<string>",
"name": "<string>",
"slug": "<string>",
"ancestry": "<string>",
"ancestry_path": "<string>",
"episode_count": 123
}
],
"transcript": {
"duration_seconds": 123,
"episode_id": "<string>",
"lines": [
{
"end_seconds": 123,
"number": 123,
"speaker": "<string>",
"start_seconds": 123,
"text": "<string>",
"role": "<string>"
}
],
"language": "<string>"
},
"url": "<string>",
"videos": [
{
"url": "<string>",
"duration_seconds": 123,
"height": 123,
"mime_type": "<string>",
"width": 123
}
]
},
"milestone": "<string>"
},
"event": "<string>",
"id": 123,
"retry": 123
}
]{
"detail": "<string>",
"error_code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"resolve": {
"message": "<string>",
"action": "<string>",
"endpoint": "<string>",
"method": "<string>",
"url": "<string>"
},
"status": 123,
"title": "<string>",
"type": "about:blank"
}Stream episodes
Server-Sent Events stream of podcast episodes as they are ingested. Enterprise plan only — other plans should poll GET /v1/podcasts/episodes/feed instead. Subscribe to a single hydration milestone (default transcribed); each episode is delivered once it reaches that stage. Optionally filter by podcast_ids (slug or ID) and/or popularity_threshold. Supply cursor or since to backfill, then the stream continues live. Delivery is at-least-once — dedupe on the episode id. For more than 100 explicit podcast ids, use the POST form.
curl -H "X-API-Key: $PARTICLE_API_KEY" \
"https://api.particle.pro/v1/podcasts/episodes/stream?milestone=transcribed"[
{
"data": {
"cursor": "<string>",
"episode": {
"duration_seconds": 123,
"explicit": true,
"has_transcript": true,
"id": "<string>",
"title": "<string>",
"audio_url": "<string>",
"clip_count": 123,
"clips": [
{
"duration_seconds": 123,
"end_seconds": 123,
"engagement_score": 123,
"id": "<string>",
"start_seconds": 123,
"title": "<string>",
"audio_url": "<string>",
"description": "<string>",
"episode": {
"id": "<string>",
"title": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"published_at": "2023-11-07T05:31:56Z",
"slug": "<string>"
},
"intro_statement": "<string>",
"segment": {
"id": "<string>",
"title": "<string>",
"type": "<string>"
},
"speaker": {
"name": "<string>",
"entity": {
"id": "<string>",
"name": "<string>",
"slug": "<string>",
"company": {
"id": "<string>",
"domain": "<string>",
"ticker": "<string>"
},
"description": "<string>",
"image_url": "<string>",
"person": {
"id": "<string>",
"company": "<string>",
"image_url": "<string>",
"title": "<string>"
},
"type": {
"name": "<string>",
"slug": "<string>"
},
"wikipedia_url": "<string>"
},
"person": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"image_url": "<string>",
"slug": "<string>"
},
"role": "<string>"
}
}
],
"description": "<string>",
"entity_count": 123,
"episode_number": 123,
"image_url": "<string>",
"language": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"published_at": "2023-11-07T05:31:56Z",
"segment_count": 123,
"segments": [
{
"duration_seconds": 123,
"end_seconds": 123,
"id": "<string>",
"number": 123,
"start_seconds": 123,
"title": "<string>",
"type": "<string>",
"audio_url": "<string>",
"description": "<string>",
"episode": {
"id": "<string>",
"title": "<string>",
"podcast": {
"id": "<string>",
"title": "<string>",
"best_rank": {
"captured_at": "2023-11-07T05:31:56Z",
"chart_type": "top_podcasts",
"rank": 123,
"category_slug": "<string>",
"country": "<string>"
},
"image_url": "<string>",
"popularity": 123,
"publisher": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"slug": "<string>"
},
"published_at": "2023-11-07T05:31:56Z",
"slug": "<string>"
},
"read_type": "<string>",
"summary": "<string>"
}
],
"slug": "<string>",
"speakers": [
{
"name": "<string>",
"description": "<string>",
"descriptor": "<string>",
"entity": {
"id": "<string>",
"name": "<string>",
"slug": "<string>",
"company": {
"id": "<string>",
"domain": "<string>",
"ticker": "<string>"
},
"description": "<string>",
"image_url": "<string>",
"person": {
"id": "<string>",
"company": "<string>",
"image_url": "<string>",
"title": "<string>"
},
"type": {
"name": "<string>",
"slug": "<string>"
},
"wikipedia_url": "<string>"
},
"person": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"image_url": "<string>",
"slug": "<string>"
},
"role": "<string>",
"speaking_duration_seconds": 123
}
],
"topics": [
{
"id": "<string>",
"name": "<string>",
"slug": "<string>",
"ancestry": "<string>",
"ancestry_path": "<string>",
"episode_count": 123
}
],
"transcript": {
"duration_seconds": 123,
"episode_id": "<string>",
"lines": [
{
"end_seconds": 123,
"number": 123,
"speaker": "<string>",
"start_seconds": 123,
"text": "<string>",
"role": "<string>"
}
],
"language": "<string>"
},
"url": "<string>",
"videos": [
{
"url": "<string>",
"duration_seconds": 123,
"height": 123,
"mime_type": "<string>",
"width": 123
}
]
},
"milestone": "<string>"
},
"event": "<string>",
"id": 123,
"retry": 123
}
]{
"detail": "<string>",
"error_code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"resolve": {
"message": "<string>",
"action": "<string>",
"endpoint": "<string>",
"method": "<string>",
"url": "<string>"
},
"status": 123,
"title": "<string>",
"type": "about:blank"
}Authorizations
Pass your API key in the X-API-Key header (recommended).
Query Parameters
Hydration milestone to stream. Episodes are delivered once they reach this stage. Milestones are ordered discovered < transcribed < segmented < fully_ingested.
discovered, transcribed, segmented, fully_ingested Filter to a set of podcasts by slug or ID (comma-separated). An episode is delivered if its podcast matches any of them. Unknown values are ignored; if none match you receive a terminal error. For more than 100, use the POST form.
Filter to podcasts whose popularity percentile is at least this value, in (0,1). Omit (or 0) for no popularity filter. Popularity is normalized 0–1 across the catalog, so 0.9 ≈ the top 10%. Combines with podcast_ids as a union.
x >= 0Opaque cursor from a prior event envelope. When supplied, the stream replays everything after it then continues live.
ISO 8601 date or date-time to backfill from when no cursor is supplied. Ignored if cursor is set.
Heavy relations to embed in each episode (comma-separated). transcript is the dialogue transcript; segments and clips are the AI-derived sets; all means everything available at the chosen milestone. A field is only valid when its data is guaranteed at the milestone (transcript→transcribed, segments→segmented, clips→fully_ingested); requesting one earlier is a terminal error.
transcript, segments, clips, all Was this page helpful?