Skip to content
Jellypod
Esc
↑↓navigate↵open⌘Jpreview

Get streaming analytics for an episode

GET/v1/episodes/{episode_id}/analytics
Authorization
AuthorizationBearer token · headerrequired

API key issued from /settings/api-keys in the Jellypod studio. Send as Authorization: Bearer <key>.

Path parameters
episode_idstring<uuid>required

Episode UUID

Responses
200

Episode analytics

dataEpisodeAnalyticsrequired

Streaming metrics for a single episode. Audio download windows are measured since publish; video view windows are rolling.

Show properties
downloadsEpisodeDownloadsrequired
Show properties
first_7_daysnumberrequired

Audio downloads in the first 7 days after publish.

min 0
first_30_daysnumberrequired

Audio downloads in the first 30 days after publish.

min 0
totalnumberrequired

All-time audio downloads (OP3).

min 0
video_viewsEpisodeVideoViewsrequired
Show properties
last_7_daysnumberrequired

Web video views in the last 7 days.

min 0
last_30_daysnumberrequired

Web video views in the last 30 days.

min 0
totalnumberrequired

Web video views over the last 90 days (Mux retention window).

min 0
as_ofstringrequired

ISO-8601 time these metrics were computed.

completebooleanrequired

Whether every analytics source answered in full. When false an upstream (OP3 or Mux) was degraded, so the numbers are a floor rather than a total; retry later for a complete read.

episode_idstring<uuid>required
400

Validation failed or malformed request.

detailstring

Longer human-readable explanation when available.

errorsobject[]

Per-field validation failures. Present when type is validation_error.

Show properties
Array of object
fieldstringrequired
messagestringrequired
reasonstring

Script import failure when one or more Speakers have no saved Character match.

Allowed:unresolved_speakers
recoveryobject
Show properties
actionstringrequired
Allowed:correct_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_result
idempotency_keystring
Allowed:reusenew
poll_after_secondsnumber
min 0
toolstring
Allowed:list_characterslist_contentget_contentsave_podcast
request_idstring

Correlation 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.

statusintegerrequired

HTTP status code mirrored from the response.

titlestringrequired

Short human-readable summary.

typestringrequired

Machine-readable error class. Suitable for switch/match in client code.

Allowed:bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_error
401

Missing or invalid API key.

detailstring

Longer human-readable explanation when available.

errorsobject[]

Per-field validation failures. Present when type is validation_error.

Show properties
Array of object
fieldstringrequired
messagestringrequired
reasonstring

Script import failure when one or more Speakers have no saved Character match.

Allowed:unresolved_speakers
recoveryobject
Show properties
actionstringrequired
Allowed:correct_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_result
idempotency_keystring
Allowed:reusenew
poll_after_secondsnumber
min 0
toolstring
Allowed:list_characterslist_contentget_contentsave_podcast
request_idstring

Correlation 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.

statusintegerrequired

HTTP status code mirrored from the response.

titlestringrequired

Short human-readable summary.

typestringrequired

Machine-readable error class. Suitable for switch/match in client code.

Allowed:bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_error
403

Authenticated, but this API key does not have access to this resource.

detailstring

Longer human-readable explanation when available.

errorsobject[]

Per-field validation failures. Present when type is validation_error.

Show properties
Array of object
fieldstringrequired
messagestringrequired
reasonstring

Script import failure when one or more Speakers have no saved Character match.

Allowed:unresolved_speakers
recoveryobject
Show properties
actionstringrequired
Allowed:correct_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_result
idempotency_keystring
Allowed:reusenew
poll_after_secondsnumber
min 0
toolstring
Allowed:list_characterslist_contentget_contentsave_podcast
request_idstring

Correlation 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.

statusintegerrequired

HTTP status code mirrored from the response.

titlestringrequired

Short human-readable summary.

typestringrequired

Machine-readable error class. Suitable for switch/match in client code.

Allowed:bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_error
404

Resource not found.

detailstring

Longer human-readable explanation when available.

errorsobject[]

Per-field validation failures. Present when type is validation_error.

Show properties
Array of object
fieldstringrequired
messagestringrequired
reasonstring

Script import failure when one or more Speakers have no saved Character match.

Allowed:unresolved_speakers
recoveryobject
Show properties
actionstringrequired
Allowed:correct_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_result
idempotency_keystring
Allowed:reusenew
poll_after_secondsnumber
min 0
toolstring
Allowed:list_characterslist_contentget_contentsave_podcast
request_idstring

Correlation 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.

statusintegerrequired

HTTP status code mirrored from the response.

titlestringrequired

Short human-readable summary.

typestringrequired

Machine-readable error class. Suitable for switch/match in client code.

Allowed:bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_error
429

Rate limit exceeded. Wait Retry-After seconds before retrying; RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset describe the window.

detailstring

Longer human-readable explanation when available.

errorsobject[]

Per-field validation failures. Present when type is validation_error.

Show properties
Array of object
fieldstringrequired
messagestringrequired
reasonstring

Script import failure when one or more Speakers have no saved Character match.

Allowed:unresolved_speakers
recoveryobject
Show properties
actionstringrequired
Allowed:correct_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_result
idempotency_keystring
Allowed:reusenew
poll_after_secondsnumber
min 0
toolstring
Allowed:list_characterslist_contentget_contentsave_podcast
request_idstring

Correlation 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.

statusintegerrequired

HTTP status code mirrored from the response.

titlestringrequired

Short human-readable summary.

typestringrequired

Machine-readable error class. Suitable for switch/match in client code.

Allowed:bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_error
500

Internal server error.

detailstring

Longer human-readable explanation when available.

errorsobject[]

Per-field validation failures. Present when type is validation_error.

Show properties
Array of object
fieldstringrequired
messagestringrequired
reasonstring

Script import failure when one or more Speakers have no saved Character match.

Allowed:unresolved_speakers
recoveryobject
Show properties
actionstringrequired
Allowed:correct_inputchoose_characterscheck_accountpoll_contentopen_studiocheck_contentreconnectretrycheck_result
idempotency_keystring
Allowed:reusenew
poll_after_secondsnumber
min 0
toolstring
Allowed:list_characterslist_contentget_contentsave_podcast
request_idstring

Correlation 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.

statusintegerrequired

HTTP status code mirrored from the response.

titlestringrequired

Short human-readable summary.

typestringrequired

Machine-readable error class. Suitable for switch/match in client code.

Allowed:bad_requestvalidation_errorunauthorizedforbiddennot_foundconflictmethod_not_allowedunsupported_media_typeunprocessable_entityrate_limitedbad_gatewayinternal_error
Try it
Server
Authorization
Parameters
Request
curl -X GET 'https://api.jellypod.com/v1/episodes/497f6eca-6276-4993-bfeb-53cbbbba6f08/analytics' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Accept: application/json'
Response
{
  "data": {
    "downloads": {
      "first_7_days": 0,
      "first_30_days": 0,
      "total": 0
    },
    "video_views": {
      "last_7_days": 0,
      "last_30_days": 0,
      "total": 0
    },
    "as_of": "string",
    "complete": true,
    "episode_id": "a7b62598-1927-4181-99d5-5d746c0bbcfe"
  }
}