Nest Changelog
1.14.6
2/10/2023
1.15.0 PRE
2/2/2023
19 changed endpoints Collapse changed endpoints
GET /songs/{id}/playlists
Get all playlists that contain this song
Response Body
{ data: List<{ catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, videoLength?: { id?: number, name?: string, }, }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /songs/{id}/playlists
Get all playlists that contain this song
Response Body
{ data: List<{ catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, videoLength?: { id?: number, name?: string, }, }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /playlists
Get a list of playlists
Response Body
{ data: List<{ catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, trackCount?: number, videoLength?: { id?: number, name?: string, }, }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /playlists
Get a list of playlists
Response Body
{ data: List<{ catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, trackCount?: number, videoLength?: { id?: number, name?: string, }, }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
POST /playlists
Create a new playlist
Response Body
{ data: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, videoLength?: { id?: number, name?: string, }, }, }
POST /playlists
Create a new playlist
Response Body
{ data: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, videoLength?: { id?: number, name?: string, }, }, }
GET /playlists/{playlist}
Get a single playlist by ID
Response Body
{ data: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, tracks?: List<{ createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, 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: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, tracks?: List<{ createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, 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
{ catalog: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries: List<{ code?: string, }>, createdBy: { id?: number, name?: string, }, dateCreated: number, dateUpdated: number, id: number, instructors: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged: bool, legacyContentExplicit: bool, name: string, schedule: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios: List<{ id?: number, name?: string, precedence?: number, }>, tags: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, videoLength: { id?: number, name?: string, }, }
Response Body
{ data: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, tracks?: List<{ createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, 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
{ catalog: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries: List<{ code?: string, }>, createdBy: { id?: number, name?: string, }, dateCreated: number, dateUpdated: number, id: number, instructors: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged: bool, legacyContentExplicit: bool, name: string, schedule: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios: List<{ id?: number, name?: string, precedence?: number, }>, tags: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, videoLength: { id?: number, name?: string, }, }
Response Body
{ data: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, tracks?: List<{ createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, 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: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, tracks?: List<{ createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, 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: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, name?: string, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, tracks?: List<{ createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, 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/items
Get list of content items
Response Body
{ data: List<{ catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, featuredRow?: string, format?: { code?: string, }, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, keywords?: string, medium?: 'reflect' | 'standard', name?: string, playlist?: { id?: number, }, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, sortOrder?: number, sourceUrl?: string, sourceVideo?: { type?: 'hls' | 'dash', url?: string, }, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /content/items
Get list of content items
Response Body
{ data: List<{ catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, featuredRow?: string, format?: { code?: string, }, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, keywords?: string, medium?: 'reflect' | 'standard', name?: string, playlist?: { id?: number, }, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, sortOrder?: number, sourceUrl?: string, sourceVideo?: { type?: 'hls' | 'dash', url?: string, }, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
POST /content/items
Create a content item
Response Body
{ data: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, featuredRow?: string, format?: { code?: string, }, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, keywords?: string, medium?: 'reflect' | 'standard', name?: string, playlist?: { id?: number, }, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, sortOrder?: number, sourceUrl?: string, sourceVideo?: { type?: 'hls' | 'dash', url?: string, }, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
POST /content/items
Create a content item
Response Body
{ data: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, featuredRow?: string, format?: { code?: string, }, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, keywords?: string, medium?: 'reflect' | 'standard', name?: string, playlist?: { id?: number, }, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, sortOrder?: number, sourceUrl?: string, sourceVideo?: { type?: 'hls' | 'dash', url?: string, }, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
GET /content/items/{guid}
Get a specific content item
Response Body
{ data: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, featuredRow?: string, format?: { code?: string, }, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, keywords?: string, medium?: 'reflect' | 'standard', name?: string, playlist?: { id?: number, }, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, sortOrder?: number, sourceUrl?: string, sourceVideo?: { type?: 'hls' | 'dash', url?: string, }, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
GET /content/items/{guid}
Get a specific content item
Response Body
{ data: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, featuredRow?: string, format?: { code?: string, }, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, keywords?: string, medium?: 'reflect' | 'standard', name?: string, playlist?: { id?: number, }, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, sortOrder?: number, sourceUrl?: string, sourceVideo?: { type?: 'hls' | 'dash', url?: string, }, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
PATCH /content/items/{guid}
Update a content item
Response Body
{ data: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, featuredRow?: string, format?: { code?: string, }, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, keywords?: string, medium?: 'reflect' | 'standard', name?: string, playlist?: { id?: number, }, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, sortOrder?: number, sourceUrl?: string, sourceVideo?: { type?: 'hls' | 'dash', url?: string, }, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
PATCH /content/items/{guid}
Update a content item
Response Body
{ data: { catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, featuredRow?: string, format?: { code?: string, }, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, keywords?: string, medium?: 'reflect' | 'standard', name?: string, playlist?: { id?: number, }, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number, type?: 'reflect' | 'connect', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, sortOrder?: number, sourceUrl?: string, sourceVideo?: { type?: 'hls' | 'dash', url?: string, }, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
GET /content/tags
List of tags
Response Body
{ data: List<{ description?: string, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string,- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /content/tags
List of tags
Response Body
{ data: List<{ description?: string, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string,+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /content/tags/{value}
Get one content tag by value.
Response Body
{ data: { modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }, }
GET /content/tags/{value}
Get one content tag by value.
Response Body
{ data: { modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }, }
PUT /content/tags/{value}
Create a New Tag
Request Body
{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', }
Response Body
{ data: { modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }, }
PUT /content/tags/{value}
Create a New Tag
Request Body
{ modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', }
Response Body
{ data: { modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }, }
PATCH /content/tags/{value}
Edit a tag
Response Body
{ data: { modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }, }
PATCH /content/tags/{value}
Edit a tag
Response Body
{ data: { modality?: 'ride' | 'row' | 'run' | 'off' | 'all',+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }, }
GET /collections/items
List collections
Response Body
{ data: List<{ available?: { end?: number, start?: number, }, badge?: { guid?: string, },- catalog?: { - code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', - },classCount?: number, countries?: List<{ code?: string, sortOrder: number, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, medium?: 'reflect' | 'standard', name?: string, sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /collections/items
List collections
Response Body
{ data: List<{ available?: { end?: number, start?: number, }, badge?: { guid?: string, },classCount?: number, countries?: List<{ code?: string, sortOrder: number, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, medium?: 'reflect' | 'standard', name?: string, sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
POST /collections/items
Create a new Collection
Request Body
{ available?: { end?: number, start?: number, }, badge?: { guid?: string, },- catalog?: { - code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', - },countries?: List<{ code?: string, sortOrder: number, }>, description?: string, durationDays?: number, episodeWord?: string, medium?: 'reflect' | 'standard', name?: string, schedule?: List<{ guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { guid?: string, },- catalog?: { - code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', - },countries?: List<{ code?: string, sortOrder: number, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, medium?: 'reflect' | 'standard', name?: string, schedule?: List<{ guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string,- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
POST /collections/items
Create a new Collection
Request Body
{ available?: { end?: number, start?: number, }, badge?: { guid?: string, },countries?: List<{ code?: string, sortOrder: number, }>, description?: string, durationDays?: number, episodeWord?: string, medium?: 'reflect' | 'standard', name?: string, schedule?: List<{ guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { guid?: string, },countries?: List<{ code?: string, sortOrder: number, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, medium?: 'reflect' | 'standard', name?: string, schedule?: List<{ guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string,
+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
GET /collections/items/{guid}
Get a collection by guid
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { guid?: string, },- catalog?: { - code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', - },countries?: List<{ code?: string, sortOrder: number, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, medium?: 'reflect' | 'standard', name?: string, schedule?: List<{ guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string,- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
GET /collections/items/{guid}
Get a collection by guid
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { guid?: string, },countries?: List<{ code?: string, sortOrder: number, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, medium?: 'reflect' | 'standard', name?: string, schedule?: List<{ guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string,
+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
PATCH /collections/items/{guid}
Update a Collection
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { guid?: string, },- catalog?: { - code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', - },countries?: List<{ code?: string, sortOrder: number, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, medium?: 'reflect' | 'standard', name?: string, schedule?: List<{ guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string,- translations: record,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
PATCH /collections/items/{guid}
Update a Collection
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { guid?: string, },countries?: List<{ code?: string, sortOrder: number, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, medium?: 'reflect' | 'standard', name?: string, schedule?: List<{ guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string,
+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
PUT /collections/items/{guid}/schedule/{scheduleGuid}
Add a content schedule item to a collection
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { guid?: string, },- catalog?: { - code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', - },countries?: List<{ code?: string, sortOrder: number, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, medium?: 'reflect' | 'standard', name?: string, sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
PUT /collections/items/{guid}/schedule/{scheduleGuid}
Add a content schedule item to a collection
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { guid?: string, },countries?: List<{ code?: string, sortOrder: number, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, medium?: 'reflect' | 'standard', name?: string, sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
GET /workouts/users/{userId}/history
Get aggregations of workout history
Guard: admin, self
Response Body
{ data: { durations?: List<{ count?: { completed?: number, total?: number, }, name?: string, value?: number, }>, formats?: List<{ count?: { completed?: number, total?: number, }, text?: string, value?: string, }>, modalities?: List<{ count?: { completed?: number, total?: number, }, text?: string, value?: string, }>, }, }