---
title: "Get a podcast's format profile"
method: GET
path: "/v1/podcasts/{id}/format"
tags: ["Podcasts", "tier:standard"]
---

# Get a podcast's format profile

`GET /v1/podcasts/{id}/format`

## Request

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

Returns the full format breakdown for a podcast: how often episodes feature guests, detected production formats (interview, panel, call_in, solo_narrated), advertiser and video presence, episode length distribution, publishing cadence, the publish-day histogram, and the sample sizes behind each attribute. The compact form of this data is embedded as the `format` field on podcast responses; use this endpoint for the exact rates and distributions. Returns 404 when the podcast is not found or its format profile has not been computed yet.

## Path parameters

- `id` string, required: Podcast slug (e.g., 'all-in'), internal ID, or numeric iTunes ID

## Response `200`

OK

- PodcastFormatProfile
  - `ad_episode_rate` number, double, required: Share of analyzed episodes carrying advertiser reads, in [0,1]
  - `analyzed_episodes` integer, required: Number of episodes with speaker analysis — the sample behind guest_frequency, signals, has_ads, and the rates below
  - `avg_episode_minutes` integer: Average episode length in minutes. Omitted when no episode durations are known.
  - `call_in_episode_rate` number, double, required: Share of analyzed episodes with listener callers, in [0,1]
  - `computed_at` string, date-time, required: When the profile was last recomputed
  - `episode_count` integer, required: Total episodes tracked for this podcast
  - `episode_minutes_median` integer: Median episode length in minutes
  - `episode_minutes_p25` integer: 25th percentile episode length in minutes
  - `episode_minutes_p75` integer: 75th percentile episode length in minutes
  - `episodes_per_week` number, double: Publishing cadence over the trailing 90 days, in episodes per week (e.g. 5.0 for a weekday daily, 0.5 for a fortnightly show). Omitted until the show has been tracked long enough to measure reliably.
  - `first_episode_published_at` string, date-time: Publish date of the earliest tracked episode
  - `guest_episode_rate` number, double, required: Share of analyzed episodes featuring at least one guest, in [0,1]
  - `guest_frequency` string: How often episodes feature a guest: never, rare, occasional, regular, or always. Derived from the share of analyzed episodes with at least one guest speaker. Omitted when too few episodes have been analyzed to judge. Filter the catalog with the guest_frequency query parameter on GET /v1/podcasts.
  - `has_ads` boolean: Whether episodes carry advertiser reads. Omitted when too few episodes have been analyzed to judge. The full advertising profile (sponsors, read types, ad load) is served by GET /v1/podcasts/{id}/advertising.
  - `has_video` boolean, required: Whether any episode has a discovered video version (e.g. a YouTube release).
  - `latest_episode_published_at` string, date-time: Publish date of the most recent tracked episode
  - `panel_episode_rate` number, double, required: Share of analyzed episodes with panelists, in [0,1]
  - `publish_days` PodcastFormatPublishDays, required
    - `friday` integer, required: Episodes published on a Friday
    - `monday` integer, required: Episodes published on a Monday
    - `saturday` integer, required: Episodes published on a Saturday
    - `sunday` integer, required: Episodes published on a Sunday
    - `thursday` integer, required: Episodes published on a Thursday
    - `tuesday` integer, required: Episodes published on a Tuesday
    - `wednesday` integer, required: Episodes published on a Wednesday
  - `publishing_status` string: Whether the show is still releasing episodes: active (published within the last 90 days) or dormant. Omitted when no publish dates are known.
  - `signals` string[], nullable: Production formats detected from the show's speaker-role mix: interview, panel, call_in, and/or solo_narrated. A show can carry several (a panel show with call-in segments). Omitted when too few episodes have been analyzed to judge.

## Other responses

- `402`: Payment Required. Read error_code. payment_required is the x402 path: either a keyless request being challenged — pay $0.03 in USDC per request (requirements in the PAYMENT-REQUIRED header) or send a pp_ API key — or a supplied payment that failed settlement (details in the PAYMENT-RESPONSE header; retry the same signature before signing a new one). See https://docs.particle.pro/x402. Any other code means the credential was accepted but does not cover this request (a plan or session gate such as premium_required or paid_plan_confirmation_required); its resolve says how to obtain access, and no payment header is sent.
- `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)
