place.pod.episode

pod.place

{
  "id": "place.pod.episode",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "showUri",
          "title",
          "audioUrl",
          "createdAt",
          "guid",
          "audioMimeType",
          "audioSizeBytes"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "maxLength": 255,
            "description": "Globally unique, immutable episode identifier required by Apple and PSP."
          },
          "link": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048,
            "description": "Public webpage for the episode, corresponding to the RSS item link."
          },
          "title": {
            "type": "string",
            "maxLength": 200,
            "description": "Title of the episode."
          },
          "people": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 100
            },
            "description": "Structured episode credits such as hosts, guests, and producers."
          },
          "showUri": {
            "type": "string",
            "format": "uri",
            "description": "AT Protocol URI of the parent place.pod.show record."
          },
          "audioUrl": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048,
            "description": "Direct URL to the audio file. Must be publicly accessible and use HTTPS."
          },
          "explicit": {
            "type": "boolean",
            "description": "Whether this specific episode contains explicit content."
          },
          "imageUrl": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048,
            "description": "Episode-specific artwork URL. Falls back to show cover if omitted."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "ISO 8601 timestamp of when the episode record was created."
          },
          "soundbites": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 255
            },
            "description": "Optional Podcasting 2.0 highlights with start times and durations."
          },
          "chaptersUrl": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048,
            "description": "URL to a chapters file."
          },
          "description": {
            "type": "string",
            "description": "Summary or show notes for the episode. May contain basic formatting.",
            "maxGraphemes": 4000
          },
          "episodeType": {
            "type": "string",
            "maxLength": 20,
            "description": "Apple episode type. Full is the default when omitted.",
            "knownValues": [
              "full",
              "trailer",
              "bonus"
            ]
          },
          "publishedAt": {
            "type": "string",
            "format": "datetime",
            "description": "ISO 8601 timestamp when the episode was published. May differ from createdAt."
          },
          "seasonNumber": {
            "type": "integer",
            "description": "Season number the episode belongs to."
          },
          "audioMimeType": {
            "type": "string",
            "maxLength": 100,
            "description": "MIME type for the RSS enclosure, such as audio/mpeg or audio/mp4."
          },
          "episodeNumber": {
            "type": "integer",
            "description": "Episode number within the season or series."
          },
          "transcriptUrl": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048,
            "description": "URL to a transcript file."
          },
          "audioSizeBytes": {
            "type": "integer",
            "minimum": 0,
            "description": "Audio file size in bytes for the RSS enclosure length attribute."
          },
          "durationSeconds": {
            "type": "integer",
            "minimum": 0,
            "description": "Length of the episode in whole seconds. Strongly recommended for player UX."
          },
          "chaptersMimeType": {
            "type": "string",
            "maxLength": 100,
            "description": "MIME type for chaptersUrl; required when exporting podcast:chapters."
          },
          "transcriptMimeType": {
            "type": "string",
            "maxLength": 100,
            "description": "MIME type for transcriptUrl; required when exporting podcast:transcript."
          },
          "alternateEnclosures": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Optional Podcasting 2.0 alternate media files with technical metadata."
          }
        }
      },
      "description": "A single podcast episode."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "A single podcast episode."
}

Validate Record

Validate a record against place.pod.episode

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:djyfh7w2dpxt7w7cpagfeyie
CID
bafyreibrghevgz2cce46kncbaax2qpgjqiizevycepsqu5th4yenxur26q
Indexed At
2026-07-26 16:24 UTC
AT-URI
at://did:plc:djyfh7w2dpxt7w7cpagfeyie/com.atproto.lexicon.schema/place.pod.episode

Version History (2 versions)

Lexicon Garden

@