---
title: "Get streaming analytics for a podcast"
method: GET
path: "/v1/podcasts/{podcast_id}/analytics"
tags: ["Analytics"]
---

# Get streaming analytics for a podcast

`GET /v1/podcasts/{podcast_id}/analytics`

## Request

- Base URL: `https://api.jellypod.com`
- URL: `https://api.jellypod.com/v1/podcasts/{podcast_id}/analytics`
- Auth: HTTP bearer

## Path parameters

- `podcast_id` string, uuid, required: Podcast UUID

## Response `200`

Podcast analytics

- object
  - `data` PodcastAnalytics, required: Streaming metrics for a podcast: combined totals, per-app download breakdown, and per-episode metrics.
    - `analytics_enabled` boolean, required: Whether download tracking is enabled. When false, audio metrics are 0.
    - `as_of` string, required: ISO-8601 time these metrics were computed.
    - `complete` boolean, required: Whether every analytics source answered in full. When false an upstream (OP3 or Mux) was degraded, so the numbers are a floor rather than a total; retry later for a complete read.
    - `episodes` object[], required
      - `downloads` object, required
        - `first_7_days` number, required: Audio downloads in the first 7 days after publish.
        - `first_30_days` number, required: Audio downloads in the first 30 days after publish.
        - `total` number, required: All-time audio downloads (OP3).
      - `video_views` object, required
        - `last_7_days` number, required: Web video views in the last 7 days.
        - `last_30_days` number, required: Web video views in the last 30 days.
        - `total` number, required: Web video views over the last 90 days (Mux retention window).
      - `episode_id` string, uuid, required
    - `plays_by_app` object, required: Audio downloads grouped by client app (Spotify, Apple Podcasts, Overcast, ...). Show-level.
    - `podcast_id` string, uuid, required
    - `totals` object, required
      - `downloads` number, required: All-time audio downloads (OP3).
      - `last_7_days` number, required: Combined plays in the last 7 days.
      - `last_30_days` number, required: Combined plays in the last 30 days.
      - `plays` number, required: All-time audio downloads + web video views.
      - `video_views` number, required: Web video views (Mux, last 90 days).

## Other responses

- `400`: Validation failed or malformed request.
- `401`: Missing or invalid API key.
- `403`: Authenticated, but this API key does not have access to this resource.
- `404`: Resource not found.
- `429`: Rate limit exceeded. Response includes `Retry-After`, `RateLimit`, and `RateLimit-Policy` headers (IETF draft).
- `500`: Internal server error.

---

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