Skip to content

API reference

KeyedEpisode ​

Type: object, no additional properties

  • created_at (required): string | null, format: date-time, pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$

  • description (required): string | null

    Plain text.

  • duration_seconds (required): number | null

  • episode_number (required): integer | null, minimum: -9007199254740991, maximum: 9007199254740991

  • episode_type (required): string | null

  • explicit (required): boolean

  • id (required): string, format: uuid, pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

  • media (required): KeyedEpisodeMedia | null

    Only for a published episode whose publish time has passed; null otherwise.

  • podcast_id (required): string, format: uuid, pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

  • published_at (required): string | null, format: date-time, pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$

  • rss_guid (required): string | null

    The GUID in the show's public RSS feed, which for imported episodes is usually the original GUID. Null unless status is published and published_at has passed, or when unknown or withheld by credential restrictions.

  • scheduled_for (required): string | null, format: date-time, pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$

  • season_number (required): integer | null, minimum: -9007199254740991, maximum: 9007199254740991

  • show_notes (required): string | null

    Plain text.

  • show_notes_html (required): string | null

    Sanitised HTML (p, br, strong, em, u, a, ul, ol, li, h1 to h6, blockquote; links https, http or mailto only). Still untrusted: sanitise again before rendering.

  • slug (required): string | null

  • source (required): object, no additional properties

    One-way import matching fingerprints from the earliest completed snapshot or stored external metadata. Native episodes without either have null fields. Apply the published normalisation rules before hashing candidate values; the contract includes parity vectors.

    • enclosure_sha256 (required): string | null, pattern: ^[0-9a-f]{64}$

      SHA-256 of the normalised source enclosure URL. Null when unknown, invalid, without an import/external source, or before publication. No raw source URL is returned. Full normalisation rules and parity vectors are in info.description.

    • guid_sha256 (required): string | null, pattern: ^[0-9a-f]{64}$

      SHA-256 of the original source GUID after trimming surrounding whitespace only. Available for authorised reads of unpublished episodes too. Null when unknown or there is no import/external source. This field returns only a fingerprint.

  • status (required): string | null, possible values: "pending_confirmation", "draft", "scheduled", "published", "archived"

  • subtitle (required): string | null

  • title (required): string

Was this page helpful?