---
title: "Stream episodes (POST)"
method: POST
path: "/v1/podcasts/episodes/stream"
tags: ["Podcast Episodes", "tier:standard"]
---

# Stream episodes (POST)

`POST /v1/podcasts/episodes/stream`

## Request

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

Identical to the GET form (**Enterprise plan only**), but accepts the podcast filter in a JSON body so you can pass a large `podcast_ids` set (up to 1000) without hitting query-string limits. The `milestone`, `cursor`, and `since` controls remain query parameters.

## Query parameters

- `milestone` 'discovered' | 'transcribed' | 'segmented' | 'fully_ingested': Hydration milestone to stream. Episodes are delivered once they reach this stage. Milestones are ordered discovered < transcribed < segmented < fully_ingested.
- `cursor` string: Opaque cursor from a prior event envelope. When supplied, the stream replays everything after it then continues live.
- `since` string: ISO 8601 date or date-time to backfill from when no cursor is supplied. Ignored if cursor is set.
- `include` string[], nullable: Heavy relations to embed in each episode (comma-separated). transcript is the dialogue transcript; segments and clips are the AI-derived sets; entities are the knowledge graph entities discussed, with the transcript lines that mention each; ads are the advertising spots detected; 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, entities and ads→fully_ingested); requesting one earlier is a terminal error.

## Request body

- StreamEpisodesPostRequestBody
  - `podcast_ids` string[], nullable: Filter to a set of podcasts by slug or ID. An episode is delivered if its podcast matches any of them. Unknown values are ignored; if none match you receive a terminal error rather than the full firehose.
  - `popularity_threshold` number, double: 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.

## Response `200`

OK

## Other responses

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