{
"id": "place.pod.episode",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"showUri",
"title",
"description",
"audioUrl",
"createdAt"
],
"properties": {
"title": {
"type": "string",
"maxLength": 200,
"description": "Title of the episode."
},
"showUri": {
"type": "string",
"format": "uri",
"description": "AT Protocol URI of the parent place.pod.show record."
},
"audioUrl": {
"type": "string",
"format": "uri",
"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. Defaults to false if omitted."
},
"imageUrl": {
"type": "string",
"format": "uri",
"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."
},
"chaptersUrl": {
"type": "string",
"format": "uri",
"description": "URL to a chapters file. Accepts JSON or WebVTT formats."
},
"description": {
"type": "string",
"description": "Summary or show notes for the episode. May contain basic formatting.",
"maxGraphemes": 4000
},
"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 of the audio file. Common values: audio/mpeg, audio/wav, audio/aac."
},
"episodeNumber": {
"type": "integer",
"description": "Episode number within the season or series."
},
"transcriptUrl": {
"type": "string",
"format": "uri",
"description": "URL to a transcript file. Improves accessibility and searchability."
},
"audioSizeBytes": {
"type": "integer",
"description": "File size of the audio asset in bytes. Useful for download progress indicators."
},
"durationSeconds": {
"type": "integer",
"description": "Length of the episode in whole seconds. Strongly recommended for player UX."
}
}
},
"description": "A single podcast episode."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"description": "A single podcast episode."
}