Nest Changelog
1.1.50
6/6/2022
1.1.51
6/13/2022
16 changed endpoints Collapse changed endpoints
GET /songs/{id}/playlists 
Get all playlists that contain this song
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}GET /songs/{id}/playlists 
Get all playlists that contain this song
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}GET /playlists 
Get a list of playlists
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}GET /playlists 
Get a list of playlists
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}POST /playlists 
Create a new playlist
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}POST /playlists 
Create a new playlist
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}GET /playlists/{playlist} 
Get a single playlist by ID
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tracks?: List<{
dateCreated?: number,
flag?: string,
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags: record,
},
trackOrder?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}GET /playlists/{playlist} 
Get a single playlist by ID
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tracks?: List<{
dateCreated?: number,
flag?: string,
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags: record,
},
trackOrder?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}PATCH /playlists/{id} 
Update an existing playlist
Request Body
{
countries: List<{
code?: string,
}>,
createdBy: {
id?: number,
},
dateCreated: number,
dateUpdated: number,
id: number,
instructors: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged: bool,
name: string,
schedule: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
}>,
studios: List<{
id?: number,
name?: string,
precedence?: number,
}>,
videoLength: {
id?: number,
name?: string,
},
}Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}PATCH /playlists/{id} 
Update an existing playlist
Request Body
{
countries: List<{
code?: string,
}>,
createdBy: {
id?: number,
},
dateCreated: number,
dateUpdated: number,
id: number,
instructors: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged: bool,
name: string,
schedule: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios: List<{
id?: number,
name?: string,
precedence?: number,
}>,
videoLength: {
id?: number,
name?: string,
},
}Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}POST /playlists/{playlist}/import 
Import all songs from a playlist to another playlist
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tracks?: List<{
dateCreated?: number,
flag?: string,
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags: record,
},
trackOrder?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}POST /playlists/{playlist}/import 
Import all songs from a playlist to another playlist
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tracks?: List<{
dateCreated?: number,
flag?: string,
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags: record,
},
trackOrder?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}GET /content/library 
Search for content in the Library
Response Body
{
data: {
aggregations?: List<{
buckets?: List<{
}>,
key?: string,
}>,
count?: number,
pagination?: {
skip?: number,
take?: number,
},
results?: List<{
countries?: List<{
code?: string,
}>,
dateLive?: number,
description?: string,
guid?: string,
image?: string,
instructors?: List<string>,
length?: number,
name?: string,
studios?: List<string>,
tags?: List<{
text?: string,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
- type?: 'live' | 'vod' | 'encore',
}>,
},
}GET /content/library 
Search for content in the Library
Response Body
{
data: {
aggregations?: List<{
buckets?: List<{
}>,
key?: string,
}>,
count?: number,
pagination?: {
skip?: number,
take?: number,
},
results?: List<{
countries?: List<{
code?: string,
}>,
dateLive?: number,
description?: string,
guid?: string,
image?: string,
instructors?: List<string>,
length?: number,
name?: string,
studios?: List<string>,
tags?: List<{
text?: string,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
},
}GET /content/items 
Get list of content items
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
duration?: number,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
sourceUrl?: string,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
},
}GET /content/items 
Get list of content items
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
duration?: number,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
+ schedule?: List<{
+ available?: {
+ end?: number,
+ live?: number,
+ start?: number,
+ },
+ content?: {
+ guid?: string,
+ },
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
+ }>,
sourceUrl?: string,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
},
}POST /content/items 
Create a content item
Request Body
{
countries?: List<{
code?: string,
}>,
description?: string,
- image: string,
instructors?: List<{
id?: number,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
status?: 'draft' | 'published',
studios?: List<{
id?: number,
precedence?: number,
}>,
tags?: List<{
value?: string,
}>,
videoLength?: {
id?: number,
},
}Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
duration?: number,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
sourceUrl?: string,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
},
}POST /content/items 
Create a content item
Request Body
{
countries?: List<{
code?: string,
}>,
description?: string,
+ image: {
+ data?: string,
+ filename?: string,
+ },
instructors?: List<{
id?: number,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
status?: 'draft' | 'published',
studios?: List<{
id?: number,
precedence?: number,
}>,
tags?: List<{
value?: string,
}>,
videoLength?: {
id?: number,
},
}Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
duration?: number,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
+ schedule?: List<{
+ available?: {
+ end?: number,
+ live?: number,
+ start?: number,
+ },
+ content?: {
+ guid?: string,
+ },
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
+ }>,
sourceUrl?: string,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
},
}GET /content/items/{guid} 
Get a specific content item
Guard: none
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
duration?: number,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
sourceUrl?: string,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
},
}GET /content/items/{guid} 
Get a specific content item
Guard: loggedIn
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
duration?: number,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
+ schedule?: List<{
+ available?: {
+ end?: number,
+ live?: number,
+ start?: number,
+ },
+ content?: {
+ guid?: string,
+ },
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
+ }>,
sourceUrl?: string,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
},
}PATCH /content/items/{guid} 
Update a content item
Request Body
{
countries: List<{
code?: string,
}>,
description: string,
- image: string,
instructors: List<{
id?: number,
precedence?: number,
}>,
name: string,
playlist: {
id?: number,
},
status: 'draft' | 'published',
studios: List<{
id?: number,
precedence?: number,
}>,
tags: List<{
value?: string,
}>,
videoLength: {
id?: number,
},
}Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
duration?: number,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
sourceUrl?: string,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
},
}PATCH /content/items/{guid} 
Update a content item
Request Body
{
countries: List<{
code?: string,
}>,
description: string,
+ image: {
+ data?: string,
+ filename?: string,
+ },
instructors: List<{
id?: number,
precedence?: number,
}>,
name: string,
playlist: {
id?: number,
},
status: 'draft' | 'published',
studios: List<{
id?: number,
precedence?: number,
}>,
tags: List<{
value?: string,
}>,
videoLength: {
id?: number,
},
}Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
duration?: number,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
+ schedule?: List<{
+ available?: {
+ end?: number,
+ live?: number,
+ start?: number,
+ },
+ content?: {
+ guid?: string,
+ },
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
+ }>,
sourceUrl?: string,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
},
}GET /content/recommendations 
Get content recommended for this user.
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
duration?: number,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
sourceUrl?: string,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
},
}GET /content/recommendations 
Get content recommended for this user.
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
duration?: number,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
+ schedule?: List<{
+ available?: {
+ end?: number,
+ live?: number,
+ start?: number,
+ },
+ content?: {
+ guid?: string,
+ },
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
+ }>,
sourceUrl?: string,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
},
}GET /content/schedule 
Get list of scheduled content.
Guard: loggedIn
Response Body
{
data: {
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
},
}GET /content/schedule 
Get list of scheduled content.
Guard: none
Response Body
{
data: {
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
},
}POST /content/schedule 
Create a new schedule entry for a piece of content
Request Body
{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
}Response Body
{
data: {
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
},
}POST /content/schedule 
Create a new schedule entry for a piece of content
Request Body
{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}Response Body
{
data: {
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
},
}GET /content/schedule/{scheduleId} 
Get a piece of scheduled content by its guid (not its content guid!).
Response Body
{
data: {
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
},
}GET /content/schedule/{scheduleId} 
Get a piece of scheduled content by its guid (not its content guid!).
Response Body
{
data: {
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
},
}PATCH /content/schedule/{guid} 
Edit a schedule entry for a piece of content
Response Body
{
data: {
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
- type?: 'live' | 'vod' | 'encore',
},
}PATCH /content/schedule/{guid} 
Edit a schedule entry for a piece of content
Response Body
{
data: {
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
},
}8 added endpoints Collapse added endpoints
GET /users/{userId}/account 
Return the current state of the user’s account with payment status
Guard: selfOrAdmin
Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
status?: 'accepted' | 'blocked' | 'requested',
},
subscription?: {
activation?: {
isActivated?: bool,
},
billingProvider?: {
accountId?: string,
customerId?: string,
name?: 'stripe' | 'ios' | 'android' | 'amazon',
orderId?: string,
},
cancellation?: {
dateCancelled?: number,
feedback?: string,
reason?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
id?: number,
},
price?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
promotion?: {
id?: number,
},
renewal?: 'auto' | 'paused' | 'cancelled' | 'failed',
source?: {
accountId?: string,
lineItemId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
orderId?: string,
productId?: string,
},
status?: 'pending' | 'trialing' | 'active' | 'expired',
term?: {
dateEnd?: number,
dateStart?: number,
},
token?: string,
trial?: {
dateEnd?: number,
dateStart?: number,
},
updatedBy?: {
id?: number,
},
user?: {
id?: number,
},
utm?: {
campaign?: string,
content?: string,
medium?: string,
source?: string,
},
},
},
}POST /users/{userId}/account/quote 
Guard: selfOrAdmin
Request Body
{
addOns: List<number>,
internalNote: string,
planId?: number,
publicNote: string,
}Response Body
{
data: {
charges?: {
billedToday?: {
discount?: number,
subtotal?: number,
total?: number,
},
credit?: {
currentCredit?: number,
futureCredit?: number,
},
recurring?: {
dateStart?: number,
frequencyDays?: number,
price?: number,
},
},
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProviders?: List<{
accountId?: string,
name?: 'stripe' | 'ios' | 'android' | 'amazon',
priceId?: string,
productId?: string,
}>,
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
musicRights?: {
productId?: string,
vendor?: 'audibleMagic',
},
name?: string,
sku?: string,
sortOrder?: number,
sources?: List<{
accountId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
}>,
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
},
}GET /playlists/{playlistId}/tracks 
Get tracks from a given playlist
Guard: loggedIn
Response Body
{
data: {
dateCreated?: number,
flag?: string,
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags: record,
},
trackOrder?: number,
},
}GET /playlists/{playlistId}/tracks/{songId} 
Get song from a playlist
Guard: instructor
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
id?: number,
},
trackOrder?: number,
},
}DELETE /playlists/{playlistId}/tracks/{songId} 
Remove song from a playlist
Guard: instructor
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
id?: number,
},
trackOrder?: number,
},
}6 deleted endpoints Collapse deleted endpoints
GET /playlists/{playlist}/tracks 
Get tracks from a given playlist
Guard: loggedIn
Response Body
{
data: {
dateCreated?: number,
flag?: string,
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags: record,
},
trackOrder?: number,
},
}GET /playlists/{playlist}/tracks/{song} 
Get song from a playlist
Guard: instructor
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
id?: number,
},
trackOrder?: number,
},
}DELETE /playlists/{playlist}/tracks/{song} 
Remove song from a playlist
Guard: instructor
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
id?: number,
},
trackOrder?: number,
},
}