Get an episode
/v1/episodes/{episode_id}AuthorizationBearer token · headerrequiredAPI key issued from /settings/api-keys in the Jellypod studio. Send as Authorization: Bearer <key>.
episode_idstring<uuid>requiredEpisode UUID
Episode with its progress. While progress.poll_after_seconds is above zero, the Retry-After header carries the same wait.
dataEpisodeDetailrequiredA podcast episode with publishing metadata, audio/video URLs when available, and its production progress.
Show propertiesHide properties
audio_urlstring | nullrequiredcreated_atstringrequireddescriptionstring | nullrequiredgenerationobject | nullrequiredShow propertiesHide properties
completed_atstring | nullrequirederror_messagestringstarted_atstringrequiredstatestringrequiredgeneratingcompletedfailedskipped_sourcesobject[]Show propertiesHide properties
objectidstringrequiredtitlestring | nullrequiredurlstring | nullrequiredreasonstringrequiredhost_idsstring[] | nullrequiredidstring<uuid>requiredimage_urlstring | nullrequiredpodcast_idstring<uuid>requiredpublished_atstring | nullrequiredscheduled_atstring | nullrequiredsource_idsstring<uuid>[]requiredstatusEpisodeStatusrequiredLifecycle state stored on the episode row. Generation progress is reported separately on the generation field, generating/completed/failed are not status values.
draftpublishedscheduledtitlestring | nullrequiredupdated_atstringrequiredurlstring | nullrequiredvideo_urlstring | nullrequiredoutputsobjectrequiredShow propertiesHide properties
audioobjectrequiredShow propertiesHide properties
currentbooleanrequireddownload_urlstring<uri> | nullrequirederrorstring | nullrequiredstatusstringrequirednot_requestedpreparingavailablefailedvideoobjectrequiredShow propertiesHide properties
currentbooleanrequireddownload_urlstring<uri> | nullrequirederrorstring | nullrequiredstatusstringrequirednot_requestedpreparingavailablefailedprogressEpisodeProgressrequiredWhere the episode stands across generation and rendering. MCP get_content reports the same progress.
Show propertiesHide properties
errorstring | nullrequiredWhy generation or rendering failed, when it did.
needs_attentionobject | nullrequiredGaps a usable episode still has, such as lines without audio or skipped sources. Fix them in Studio; null when there are none.
Show propertiesHide properties
missing_visualsintegerrequiredskipped_sourcesintegerrequiredunvoiced_linesintegerrequiredphasestring | nullrequiredThe work still in flight, such as rendering or finalizing_outputs. Null once the episode is idle, completed, or failed.
poll_after_secondsnumberrequiredSeconds to wait before reading the episode again. Zero means it will not change on its own.
render_requiredbooleanrequiredTrue when the content is ready but has no playable or downloadable output and nothing is preparing one, as after a caption or watermark edit. Outputs stay unavailable until a new render or export is requested. Call POST /episodes/{episode_id}/export to produce one.
statusstringrequiredWhether the requested episode work is still running. completed means generation and all requested files finished. Individual output status reports each file before the request finishes.
idlegeneratingcompletedfailedValidation failed or malformed request.
detailstringLonger human-readable explanation when available.
errorsobject[]Per-field validation failures. Present when type is validation_error.
Show propertiesHide properties
objectfieldstringrequiredmessagestringrequiredreasonstringScript import failure when one or more Speakers have no saved Character match.
unresolved_speakersrecoveryobjectShow propertiesHide properties
actionstringrequiredcorrect_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_resultidempotency_keystringreusenewpoll_after_secondsnumbertoolstringlist_characterslist_contentget_contentsave_podcastrequest_idstringCorrelation id, also returned in the X-Request-Id response header. Include in support requests.
speakersstring[]Speaker labels needing a saved Character match when reason is unresolved_speakers.
statusintegerrequiredHTTP status code mirrored from the response.
titlestringrequiredShort human-readable summary.
typestringrequiredMachine-readable error class. Suitable for switch/match in client code.
bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_errorMissing or invalid API key.
detailstringLonger human-readable explanation when available.
errorsobject[]Per-field validation failures. Present when type is validation_error.
Show propertiesHide properties
objectfieldstringrequiredmessagestringrequiredreasonstringScript import failure when one or more Speakers have no saved Character match.
unresolved_speakersrecoveryobjectShow propertiesHide properties
actionstringrequiredcorrect_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_resultidempotency_keystringreusenewpoll_after_secondsnumbertoolstringlist_characterslist_contentget_contentsave_podcastrequest_idstringCorrelation id, also returned in the X-Request-Id response header. Include in support requests.
speakersstring[]Speaker labels needing a saved Character match when reason is unresolved_speakers.
statusintegerrequiredHTTP status code mirrored from the response.
titlestringrequiredShort human-readable summary.
typestringrequiredMachine-readable error class. Suitable for switch/match in client code.
bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_errorAuthenticated, but this API key does not have access to this resource.
detailstringLonger human-readable explanation when available.
errorsobject[]Per-field validation failures. Present when type is validation_error.
Show propertiesHide properties
objectfieldstringrequiredmessagestringrequiredreasonstringScript import failure when one or more Speakers have no saved Character match.
unresolved_speakersrecoveryobjectShow propertiesHide properties
actionstringrequiredcorrect_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_resultidempotency_keystringreusenewpoll_after_secondsnumbertoolstringlist_characterslist_contentget_contentsave_podcastrequest_idstringCorrelation id, also returned in the X-Request-Id response header. Include in support requests.
speakersstring[]Speaker labels needing a saved Character match when reason is unresolved_speakers.
statusintegerrequiredHTTP status code mirrored from the response.
titlestringrequiredShort human-readable summary.
typestringrequiredMachine-readable error class. Suitable for switch/match in client code.
bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_errorResource not found.
detailstringLonger human-readable explanation when available.
errorsobject[]Per-field validation failures. Present when type is validation_error.
Show propertiesHide properties
objectfieldstringrequiredmessagestringrequiredreasonstringScript import failure when one or more Speakers have no saved Character match.
unresolved_speakersrecoveryobjectShow propertiesHide properties
actionstringrequiredcorrect_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_resultidempotency_keystringreusenewpoll_after_secondsnumbertoolstringlist_characterslist_contentget_contentsave_podcastrequest_idstringCorrelation id, also returned in the X-Request-Id response header. Include in support requests.
speakersstring[]Speaker labels needing a saved Character match when reason is unresolved_speakers.
statusintegerrequiredHTTP status code mirrored from the response.
titlestringrequiredShort human-readable summary.
typestringrequiredMachine-readable error class. Suitable for switch/match in client code.
bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_errorRate limit exceeded. Wait Retry-After seconds before retrying; RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset describe the window.
detailstringLonger human-readable explanation when available.
errorsobject[]Per-field validation failures. Present when type is validation_error.
Show propertiesHide properties
objectfieldstringrequiredmessagestringrequiredreasonstringScript import failure when one or more Speakers have no saved Character match.
unresolved_speakersrecoveryobjectShow propertiesHide properties
actionstringrequiredcorrect_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_resultidempotency_keystringreusenewpoll_after_secondsnumbertoolstringlist_characterslist_contentget_contentsave_podcastrequest_idstringCorrelation id, also returned in the X-Request-Id response header. Include in support requests.
speakersstring[]Speaker labels needing a saved Character match when reason is unresolved_speakers.
statusintegerrequiredHTTP status code mirrored from the response.
titlestringrequiredShort human-readable summary.
typestringrequiredMachine-readable error class. Suitable for switch/match in client code.
bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_errorInternal server error.
detailstringLonger human-readable explanation when available.
errorsobject[]Per-field validation failures. Present when type is validation_error.
Show propertiesHide properties
objectfieldstringrequiredmessagestringrequiredreasonstringScript import failure when one or more Speakers have no saved Character match.
unresolved_speakersrecoveryobjectShow propertiesHide properties
actionstringrequiredcorrect_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_resultidempotency_keystringreusenewpoll_after_secondsnumbertoolstringlist_characterslist_contentget_contentsave_podcastrequest_idstringCorrelation id, also returned in the X-Request-Id response header. Include in support requests.
speakersstring[]Speaker labels needing a saved Character match when reason is unresolved_speakers.
statusintegerrequiredHTTP status code mirrored from the response.
titlestringrequiredShort human-readable summary.
typestringrequiredMachine-readable error class. Suitable for switch/match in client code.
bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_error