---
title: "Get episode metadata"
method: GET
path: "/api/episodes/{episode_id}"
tags: ["Episodes"]
---

# Get episode metadata

`GET /api/episodes/{episode_id}`

## Request

- Base URL: `https://www.audioscrape.com`
- URL: `https://www.audioscrape.com/api/episodes/{episode_id}`
- Auth: HTTP bearer

Returns the episode + its parent podcast. Heavy fields are opt-in via `?include=` — pass `transcript`, `entities`, or both to load them in the same response. Useful when you want details without paying the cost of fetching a 500KB+ transcript by default.

## Path parameters

- `episode_id` string, required

## Query parameters

- `include` string

## Response `200`

Episode + podcast, plus any requested optional fields

- EpisodeDetail
  - `entities` EntityRef[], required
    - `entity_type` string, required
    - `mention_count` integer, required
    - `name` string, required
    - `slug` string, required
  - `episode` EpisodeFull, required
    - `description` string, required
    - `duration_seconds` integer, nullable
    - `enclosure_url` string, nullable
    - `id` integer, required
    - `processing_status` string, required: Pipeline lifecycle of this item: `queued` | `processing` | `completed` | `completed_no_speech` | `failed` | `cancelled`, or `not_transcribed` for catalog items never queued for transcription. `completed_no_speech` means processing finished and the audio contained no speech, so no transcript will ever exist: stop polling for one (GH#435).
    - `publish_date` string, required
    - `slug` string, required
    - `title` string, required
  - `podcast` PodcastRef
    - `id` integer, required
    - `image_url` string, nullable
    - `slug` string, required
    - `title` string, required
  - `transcript` Transcript
    - `partial` TranscriptPartial
      - `pieces_done` integer, required
      - `pieces_total` integer, required
      - `seconds_total` integer, required
      - `seconds_transcribed` integer, required
      - `speakers_final` boolean, required
    - `segments` TranscriptSegment[], required
      - `end` number, double, required
      - `speaker` string, nullable
      - `start` number, double, required
      - `text` string, required
    - `speakers` string[], required
    - `total_segments` integer, required

## Other responses

- `401`: Missing or invalid API key
- `402`: No active subscription (paid endpoint requires a subscription)
- `403`: Endpoint not available on the caller's plan
- `404`: Episode not found
- `429`: Monthly quota exhausted (response includes `usage: { current, limit }`)

---

[API](https://skmtc.dev/audioscrape/apis/audioscrape-rest-api.md) · [All operations](https://skmtc.dev/audioscrape/apis/audioscrape-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/audioscrape/apis/audioscrape-rest-api/revisions/29b5788227cf?raw)
