Nest Changelog
1.33.6
7/18/2023
1.34.0 PRE
7/10/2023
35 changed endpoints Collapse changed endpoints
GET /users/{userId}/workouts/items
Get workout summaries for user
Response Body
{ data: List<{ content?: { description?: string, duration?: number, guid?: string, image?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, }>, legacy?: { id?: number,- type?: 'reflect' | 'connect',}, name?: string, type?: 'live' | 'vod' | 'encore' | 'freestyle', }, dateEnd?: number, dateStart?: number, duration?: { percentage?: number, text?: string, value?: number, }, guid?: string, output?: number, percentile?: number, ranking?: { place?: number, total?: number, }, stats?: { calories: number, distance: number, heartRate: number, heartRateMax: number, hrPoints: number, incline: number, joules: number, resistance: number, rpm: number, speed: number, spm: number, }, status?: 'incomplete' | 'complete', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /users/{userId}/workouts/items
Get workout summaries for user
Response Body
{ data: List<{ content?: { description?: string, duration?: number, guid?: string, image?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, }>, legacy?: { id?: number,+ type?: 'reflect' | 'connect' | 'strength', }, name?: string, type?: 'live' | 'vod' | 'encore' | 'freestyle', }, dateEnd?: number, dateStart?: number, duration?: { percentage?: number, text?: string, value?: number, }, guid?: string, output?: number, percentile?: number, ranking?: { place?: number, total?: number, }, stats?: { calories: number, distance: number, heartRate: number, heartRateMax: number, hrPoints: number, incline: number, joules: number, resistance: number, rpm: number, speed: number, spm: number, }, status?: 'incomplete' | 'complete', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /users/{userId}/workouts/aggregations
Get workout aggregations for user
Response Body
{ data: { furthestDistance?: number, highestOutput?: number, mostRecent?: { content?: { description?: string, duration?: number, guid?: string, image?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, }>, legacy?: { id?: number,- type?: 'reflect' | 'connect',}, name?: string, type?: 'live' | 'vod' | 'encore' | 'freestyle', }, dateEnd?: number, dateStart?: number, duration?: { percentage?: number, text?: string, value?: number, }, guid?: string, output?: number, percentile?: number, ranking?: { place?: number, total?: number, }, stats?: { calories: number, distance: number, heartRate: number, heartRateMax: number, hrPoints: number, incline: number, joules: number, resistance: number, rpm: number, speed: number, spm: number, }, status?: 'incomplete' | 'complete', }, personalBest?: { content?: { description?: string, duration?: number, guid?: string, image?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, }>, legacy?: { id?: number,
- type?: 'reflect' | 'connect',}, name?: string, type?: 'live' | 'vod' | 'encore' | 'freestyle', }, dateEnd?: number, dateStart?: number, duration?: { percentage?: number, text?: string, value?: number, }, guid?: string, output?: number, percentile?: number, ranking?: { place?: number, total?: number, }, stats?: { calories: number, distance: number, heartRate: number, heartRateMax: number, hrPoints: number, incline: number, joules: number, resistance: number, rpm: number, speed: number, spm: number, }, status?: 'incomplete' | 'complete', }, totalClasses?: number, totalDistance?: number, totalDuration?: number, }, }
GET /users/{userId}/workouts/aggregations
Get workout aggregations for user
Response Body
{ data: { furthestDistance?: number, highestOutput?: number, mostRecent?: { content?: { description?: string, duration?: number, guid?: string, image?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, }>, legacy?: { id?: number,+ type?: 'reflect' | 'connect' | 'strength', }, name?: string, type?: 'live' | 'vod' | 'encore' | 'freestyle', }, dateEnd?: number, dateStart?: number, duration?: { percentage?: number, text?: string, value?: number, }, guid?: string, output?: number, percentile?: number, ranking?: { place?: number, total?: number, }, stats?: { calories: number, distance: number, heartRate: number, heartRateMax: number, hrPoints: number, incline: number, joules: number, resistance: number, rpm: number, speed: number, spm: number, }, status?: 'incomplete' | 'complete', }, personalBest?: { content?: { description?: string, duration?: number, guid?: string, image?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, }>, legacy?: { id?: number,
+ type?: 'reflect' | 'connect' | 'strength', }, name?: string, type?: 'live' | 'vod' | 'encore' | 'freestyle', }, dateEnd?: number, dateStart?: number, duration?: { percentage?: number, text?: string, value?: number, }, guid?: string, output?: number, percentile?: number, ranking?: { place?: number, total?: number, }, stats?: { calories: number, distance: number, heartRate: number, heartRateMax: number, hrPoints: number, incline: number, joules: number, resistance: number, rpm: number, speed: number, spm: number, }, status?: 'incomplete' | 'complete', }, totalClasses?: number, totalDistance?: number, totalDuration?: number, }, }
GET /collections/items
List collections. Does not return user-favorites. Cache refresh: 10 minutes.
Response Body
{ data: List<{ available?: { end?: number, start?: number, }, badge?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, classCount?: number, countries?: List<{ code?: string, }>, 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, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', 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. Does not return user-favorites. Cache refresh: 10 minutes.
Response Body
{ data: List<{ available?: { end?: number, start?: number, }, badge?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, classCount?: number, countries?: List<{ code?: string, }>, 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' | 'strength', name?: string, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', 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?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, countries?: List<{ code?: string, }>, description?: string, durationDays?: number, episodeWord?: string,- medium?: 'reflect' | 'standard',name?: string, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', schedule?: List<{ guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, countries?: List<{ code?: string, }>, 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, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', schedule?: List<{ contentGuid?: string, guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
POST /collections/items
Create a new Collection
Request Body
{ available?: { end?: number, start?: number, }, badge?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, countries?: List<{ code?: string, }>, description?: string, durationDays?: number, episodeWord?: string,+ medium?: 'reflect' | 'standard' | 'strength', name?: string, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', schedule?: List<{ guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, countries?: List<{ code?: string, }>, 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' | 'strength', name?: string, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', schedule?: List<{ contentGuid?: string, guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
GET /collections/items/{guid}
Get a collection by guid. Cached every 10 minutes.
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, countries?: List<{ code?: string, }>, 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, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', schedule?: List<{ contentGuid?: string, guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
GET /collections/items/{guid}
Get a collection by guid. Cached every 10 minutes.
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, countries?: List<{ code?: string, }>, 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' | 'strength', name?: string, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', schedule?: List<{ contentGuid?: string, guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', 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?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, countries?: List<{ code?: string, }>, 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, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', schedule?: List<{ contentGuid?: string, guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', 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?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, countries?: List<{ code?: string, }>, 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' | 'strength', name?: string, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', schedule?: List<{ contentGuid?: string, guid?: string, sortOrder?: number, }>, sortOrder?: number, tags?: List<{ description?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
GET /collections/items/{guid}/schedule
Get schedules inside of a Collection
Response Body
{ data: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { description?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ bio?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, flags?: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>, id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, status?: 'active' | 'inactive', studio?: { id?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, }>, name?: string, studios?: List<{ code?: string, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, streetAddress?: { city?: string, country?: { code?: string, name?: string, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, updatedBy?: { id?: number, }, }>, }, guid?: string, legacy?: { id?: number,- type?: 'reflect' | 'connect',}, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /collections/items/{guid}/schedule
Get schedules inside of a Collection
Response Body
{ data: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { description?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ bio?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, flags?: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>, id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, status?: 'active' | 'inactive', studio?: { id?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, }>, name?: string, studios?: List<{ code?: string, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, streetAddress?: { city?: string, country?: { code?: string, name?: string, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, updatedBy?: { id?: number, }, }>, }, guid?: string, legacy?: { id?: number,+ type?: 'reflect' | 'connect' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
PUT /collections/items/{guid}/schedule/{scheduleGuid}
Add a content schedule item to a collection
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, countries?: List<{ code?: string, }>, 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, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', 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?: { eventCode?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, translations?: record, }, countries?: List<{ code?: string, }>, 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' | 'strength', name?: string, planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free', sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash', }, }
GET /content/library
Search for content in the Library. Cache Policy: No cache.
Response Body
{ data: List<{ catalog?: { audio?: 'labelMusic' | 'royaltyFree' | 'userProvided', code?: string, hasMusic?: bool, }, contentGuid?: string, countries?: List<{ code?: string, }>, dateLive?: number, description?: string, format?: { code?: string, }, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, }>, legacy?: { id?: number, }, length?: number,- medium?: 'reflect' | 'standard',name?: string, playback?: { type?: 'hls' | 'dash', url?: string, }, playlistId?: number, scheduleGuid?: string, status?: 'draft' | 'published' | 'trash', studios?: List<{ id?: number, name?: string, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', userData?: { favorite?: { content?: bool, }, workout?: { status?: 'finished' | 'DNF', }, }, }>, embedded: { aggregations?: { durations?: List<{ count?: number, text?: string, value?: number, }>, instructors?: List<{ id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, }>, tags?: List<{ buckets?: List<{ count?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, text?: string, value?: string, }>, value?: string, }>, }, }, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /content/library
Search for content in the Library. Cache Policy: No cache.
Response Body
{ data: List<{ catalog?: { audio?: 'labelMusic' | 'royaltyFree' | 'userProvided', code?: string, hasMusic?: bool, }, contentGuid?: string, countries?: List<{ code?: string, }>, dateLive?: number, description?: string, format?: { code?: string, }, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, }>, legacy?: { id?: number, }, length?: number,+ medium?: 'reflect' | 'standard' | 'strength', name?: string, playback?: { type?: 'hls' | 'dash', url?: string, }, playlistId?: number, scheduleGuid?: string, status?: 'draft' | 'published' | 'trash', studios?: List<{ id?: number, name?: string, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', userData?: { favorite?: { content?: bool, }, workout?: { status?: 'finished' | 'DNF', }, }, }>, embedded: { aggregations?: { durations?: List<{ count?: number, text?: string, value?: number, }>, instructors?: List<{ id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, }>, tags?: List<{ buckets?: List<{ count?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, text?: string, value?: string, }>, value?: string, }>, }, }, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /content/library/upcoming
Search for upcoming live or encore content in the Library. Cache Policy: No cache.
Response Body
{ data: List<{ catalog?: { audio?: 'labelMusic' | 'royaltyFree' | 'userProvided', code?: string, hasMusic?: bool, }, contentGuid?: string, countries?: List<{ code?: string, }>, dateLive?: number, description?: string, format?: { code?: string, }, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, }>, legacy?: { id?: number, }, length?: number,- medium?: 'reflect' | 'standard',name?: string, playback?: { type?: 'hls' | 'dash', url?: string, }, playlistId?: number, scheduleGuid?: string, status?: 'draft' | 'published' | 'trash', studios?: List<{ id?: number, name?: string, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', userData?: { favorite?: { content?: bool, }, workout?: { status?: 'finished' | 'DNF', }, }, }>, embedded: { aggregations?: { durations?: List<{ count?: number, text?: string, value?: number, }>, instructors?: List<{ id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, }>, tags?: List<{ buckets?: List<{ count?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, text?: string, value?: string, }>, value?: string, }>, }, }, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /content/library/upcoming
Search for upcoming live or encore content in the Library. Cache Policy: No cache.
Response Body
{ data: List<{ catalog?: { audio?: 'labelMusic' | 'royaltyFree' | 'userProvided', code?: string, hasMusic?: bool, }, contentGuid?: string, countries?: List<{ code?: string, }>, dateLive?: number, description?: string, format?: { code?: string, }, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, }>, legacy?: { id?: number, }, length?: number,+ medium?: 'reflect' | 'standard' | 'strength', name?: string, playback?: { type?: 'hls' | 'dash', url?: string, }, playlistId?: number, scheduleGuid?: string, status?: 'draft' | 'published' | 'trash', studios?: List<{ id?: number, name?: string, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', userData?: { favorite?: { content?: bool, }, workout?: { status?: 'finished' | 'DNF', }, }, }>, embedded: { aggregations?: { durations?: List<{ count?: number, text?: string, value?: number, }>, instructors?: List<{ id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, }>, tags?: List<{ buckets?: List<{ count?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, text?: string, value?: string, }>, value?: string, }>, }, }, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /content/items
Admin only. 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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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
Admin only. 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' | 'strength', 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' | 'strength', }, 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', + strengthRoutine?: { + guid?: string, + }, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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
Request Body
{ catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, description?: string, featuredRow?: string, format?: { code?: string, }, instructors?: List<{ id?: number, precedence?: number, }>,- medium?: 'reflect' | 'standard',name?: string, sortOrder?: number, status?: 'draft' | 'published',
studios?: List<{ id?: number, precedence?: number, }>, tags?: List<{ value?: string, }>, videoLength?: { id?: number, }, }
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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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
Request Body
{ catalog?: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries?: List<{ code?: string, }>, description?: string, featuredRow?: string, format?: { code?: string, }, instructors?: List<{ id?: number, precedence?: number, }>,+ medium?: 'reflect' | 'standard' | 'strength', name?: string, sortOrder?: number, status?: 'draft' | 'published', + strengthRoutine: { + guid?: string, + }, studios?: List<{ id?: number, precedence?: number, }>, tags?: List<{ value?: string, }>, videoLength?: { id?: number, }, }
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' | 'strength', 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' | 'strength', }, 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', + strengthRoutine?: { + guid?: string, + }, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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. Cache Policy: Hot
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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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. Cache Policy: Hot
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' | 'strength', 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' | 'strength', }, 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', + strengthRoutine?: { + guid?: string, + }, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, updatedBy?: { id?: number, }, + userData?: { + favorite?: { + content?: bool, + }, + workout?: { + status?: 'finished' | 'DNF', + }, + }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
PATCH /content/items/{guid}
Update a content item
Request Body
{ catalog: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries: List<{ code?: string, }>, description: string, featuredRow: string, format: { code?: string, }, instructors: List<{ id?: number, precedence?: number, }>,- medium: 'reflect' | 'standard',name: string, playlist: { id?: number, }, sortOrder: number, status: 'draft' | 'published',
studios: List<{ id?: number, precedence?: number, }>, tags: List<{ value?: string, }>, videoLength: { id?: number, }, videoStatus: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }
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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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
Request Body
{ catalog: { code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free', }, countries: List<{ code?: string, }>, description: string, featuredRow: string, format: { code?: string, }, instructors: List<{ id?: number, precedence?: number, }>,+ medium: 'reflect' | 'standard' | 'strength', name: string, playlist: { id?: number, }, sortOrder: number, status: 'draft' | 'published', + strengthRoutine: { + guid?: string, + }, studios: List<{ id?: number, precedence?: number, }>, tags: List<{ value?: string, }>, videoLength: { id?: number, }, videoStatus: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }
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' | 'strength', 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' | 'strength', }, 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', + strengthRoutine?: { + guid?: string, + }, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
GET /content/schedule
Get list of scheduled content.
Response Body
{ data: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { description?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ bio?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, flags?: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>, id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, status?: 'active' | 'inactive', studio?: { id?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, }>, name?: string, studios?: List<{ code?: string, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, streetAddress?: { city?: string, country?: { code?: string, name?: string, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, updatedBy?: { id?: number, }, }>, }, guid?: string, legacy?: { id?: number,- type?: 'reflect' | 'connect',}, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /content/schedule
Get list of scheduled content.
Response Body
{ data: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { description?: string, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ bio?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, flags?: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>, id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, status?: 'active' | 'inactive', studio?: { id?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, }>, name?: string, studios?: List<{ code?: string, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, streetAddress?: { city?: string, country?: { code?: string, name?: string, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, updatedBy?: { id?: number, }, }>, }, guid?: string, legacy?: { id?: number,+ type?: 'reflect' | 'connect' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
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: { id?: 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?: { id?: number,- type?: 'reflect' | 'connect',}, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, 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: { id?: number,+ type?: 'reflect' | 'connect' | 'strength', }, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }
Response Body
{ data: { available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number,+ type?: 'reflect' | 'connect' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }, }
GET /content/schedule/{scheduleId}
Get a piece of scheduled content by its guid (not its content guid!). Cache Policy: 10 minutes
Response Body
{ data: { 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', }, }
GET /content/schedule/{scheduleId}
Get a piece of scheduled content by its guid (not its content guid!). Cache Policy: 10 minutes
Response Body
{ data: { available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number,+ type?: 'reflect' | 'connect' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }, }
PATCH /content/schedule/{guid}
Edit a schedule entry for a piece of content
Request Body
{ available: { end?: number, live?: number, start?: number, }, legacy: { id?: number,- type?: 'reflect' | 'connect',}, }
Response Body
{ data: { 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', }, }
PATCH /content/schedule/{guid}
Edit a schedule entry for a piece of content
Request Body
{ available: { end?: number, live?: number, start?: number, }, legacy: { id?: number,+ type?: 'reflect' | 'connect' | 'strength', }, }
Response Body
{ data: { available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy?: { id?: number,+ type?: 'reflect' | 'connect' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }, }
GET /workouts/items/{guid}/summary
Get summary view of a workout
Response Body
{ data: { content?: { description?: string, duration?: number, guid?: string, image?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, }>, legacy?: { id?: number,- type?: 'reflect' | 'connect',}, name?: string, type?: 'live' | 'vod' | 'encore' | 'freestyle', }, dateEnd?: number, dateStart?: number, duration?: { percentage?: number, text?: string, value?: number, }, guid?: string, output?: number, percentile?: number, ranking?: { place?: number, total?: number, }, stats?: { calories: number, distance: number, heartRate: number, heartRateMax: number, hrPoints: number, incline: number, joules: number, resistance: number, rpm: number, speed: number, spm: number, }, status?: 'incomplete' | 'complete', user?: { id?: number, }, }, }
GET /workouts/items/{guid}/summary
Get summary view of a workout
Response Body
{ data: { content?: { description?: string, duration?: number, guid?: string, image?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ id?: number, name?: string, }>, legacy?: { id?: number,+ type?: 'reflect' | 'connect' | 'strength', }, name?: string, type?: 'live' | 'vod' | 'encore' | 'freestyle', }, dateEnd?: number, dateStart?: number, duration?: { percentage?: number, text?: string, value?: number, }, guid?: string, output?: number, percentile?: number, ranking?: { place?: number, total?: number, }, stats?: { calories: number, distance: number, heartRate: number, heartRateMax: number, hrPoints: number, incline: number, joules: number, resistance: number, rpm: number, speed: number, spm: number, }, status?: 'incomplete' | 'complete', user?: { id?: 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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios: List<{ id?: number, name?: string, precedence?: number, }>, tags: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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 /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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', 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' | 'strength', }, playback?: List<{ type?: 'hls' | 'dash', url?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoLength?: { id?: number, name?: string, }, }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /favorites/{userId}/items
List users favorite content items.
Response Body
{ data: List<{ content?: { format?: { code?: string, }, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ bio?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, flags?: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>, id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, status?: 'active' | 'inactive', studio?: { id?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, }>,- medium?: 'reflect' | 'standard',name?: string, scheduleGuid?: string, status?: 'draft' | 'published' | 'trash', tags?: List<{ description?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, }, dateCreated?: number, }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /favorites/{userId}/items
List users favorite content items.
Response Body
{ data: List<{ content?: { format?: { code?: string, }, guid?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, instructors?: List<{ bio?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, flags?: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>, id?: number, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, name?: string, status?: 'active' | 'inactive', studio?: { id?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, }>,+ medium?: 'reflect' | 'standard' | 'strength', name?: string, scheduleGuid?: string, status?: 'draft' | 'published' | 'trash', tags?: List<{ description?: string, images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', text?: string, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, }, dateCreated?: number, }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /legacy/{id}/content
Get content for legacy class
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<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
GET /legacy/{id}/content
Get content for legacy class
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' | 'strength', 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' | 'strength', }, 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', + strengthRoutine?: { + guid?: string, + }, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, value?: number, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
POST /strength-routine/items
Create a new strength routine.
Request Body
{ circuit?: bool, description: string, duration: number, name?: string, routineMovements: List<{ duration: number, mode?: 'standard' | 'interval', movement?: { guid?: string, }, restAfter?: number, restBetweenSets?: number, sets?: List<{- description?: string, - interval?: {duration?: number, }, reps?: List<{ description?: string, restAfter?: number, weight?: number, }>, }>, }>, visibility?: 'public' | 'private', }
Response Body
{ data: { circuit?: bool, createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, duration?: number, guid?: string, modifiedBy?: number, name?: string, routineMovements?: List<{ duration?: number, mode?: 'standard' | 'interval', movement?: { createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string,tags?: List<{
- description?: string,images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- text?: string,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, restAfter?: number, restBetweenSets?: number, sets?: List<{ description?: string, interval?: { duration?: number, }, reps?: List<{ description?: string, restAfter?: number, weight?: number, }>, }>, }>, visibility?: 'public' | 'private', }, }
POST /strength-routine/items
Create a new strength routine.
Request Body
{ circuit?: bool, description: string, duration: number, name?: string, routineMovements: List<{ duration: number, mode?: 'standard' | 'interval', movement?: { guid?: string, }, restAfter?: number, restBetweenSets?: number, sets?: List<{+ description: string, + interval: { duration?: number, }, reps?: List<{ description?: string, restAfter?: number, weight?: number, }>, }>, }>, visibility?: 'public' | 'private', }
Response Body
{ data: { circuit?: bool, createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, duration?: number, guid?: string, modifiedBy?: number, name?: string, routineMovements?: List<{ duration?: number, mode?: 'standard' | 'interval', movement?: { createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string, + status?: 'draft' | 'published', tags?: List<{images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all',
+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, restAfter?: number, restBetweenSets?: number, sets?: List<{ description?: string, interval?: { duration?: number, }, reps?: List<{ description?: string, restAfter?: number, weight?: number, }>, }>, }>, visibility?: 'public' | 'private', }, }
GET /strength-routine/items/{guid}
Load an individual strength routine by guid.
Response Body
{ data: { circuit?: bool, createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, duration?: number, guid?: string, modifiedBy?: number, name?: string, routineMovements?: List<{ duration?: number, mode?: 'standard' | 'interval', movement?: { createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string,tags?: List<{
- description?: string,images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all',- text?: string,type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, restAfter?: number, restBetweenSets?: number, sets?: List<{ description?: string, interval?: { duration?: number, }, reps?: List<{ description?: string, restAfter?: number, weight?: number, }>, }>, }>, visibility?: 'public' | 'private', }, }
GET /strength-routine/items/{guid}
Load an individual strength routine by guid.
Response Body
{ data: { circuit?: bool, createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, duration?: number, guid?: string, modifiedBy?: number, name?: string, routineMovements?: List<{ duration?: number, mode?: 'standard' | 'interval', movement?: { createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string, + status?: 'draft' | 'published', tags?: List<{images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all',
+ translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, restAfter?: number, restBetweenSets?: number, sets?: List<{ description?: string, interval?: { duration?: number, }, reps?: List<{ description?: string, restAfter?: number, weight?: number, }>, }>, }>, visibility?: 'public' | 'private', }, }
POST /strength-routine/movement/items
Producer and above only. Create a new strength routine movement
Request Body
{- description?: string,name?: string,
tags: List<{ value?: string, }>, }
Response Body
{ data: { createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string,tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
POST /strength-routine/movement/items
Producer and above only. Create a new strength routine movement
Request Body
{+ description: string, name?: string, + status: 'draft' | 'published', tags: List<{ value?: string, }>, }
Response Body
{ data: { createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string, + status?: 'draft' | 'published', tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
GET /strength-routine/movement/items
List strength routine movements. Paginated.
Response Body
{ data: List<{ createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string,tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
GET /strength-routine/movement/items
List strength routine movements. Paginated.
Response Body
{ data: List<{ createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string, + status?: 'draft' | 'published', tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: number, }, }, }
PATCH /strength-routine/movement/items/{guid}
Admin only. Edit a specific strength routine movement
Request Body
{ description: string, name: string,tags: List<{ value?: string, }>, }
Response Body
{ data: { createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string,tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
PATCH /strength-routine/movement/items/{guid}
Admin only. Edit a specific strength routine movement
Request Body
{ description: string, name: string, + status: 'draft' | 'published', tags: List<{ value?: string, }>, }
Response Body
{ data: { createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string, + status?: 'draft' | 'published', tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }
3 added endpoints Collapse added endpoints
PATCH /strength-routine/items/{guid}
Edit a strength routine.
Guard: loggedIn
Request Body
{ circuit: bool, description: string, duration: number, name: string, routineMovements: List<{ duration: number, mode?: 'standard' | 'interval', movement?: { guid?: string, }, restAfter?: number, restBetweenSets?: number, sets?: List<{ description: string, interval: { duration?: number, }, reps?: List<{ description?: string, restAfter?: number, weight?: number, }>, }>, }>, visibility: 'public' | 'private', }
Response Body
{ data: { circuit?: bool, createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, duration?: number, guid?: string, modifiedBy?: number, name?: string, routineMovements?: List<{ duration?: number, mode?: 'standard' | 'interval', movement?: { createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string, status?: 'draft' | 'published', tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, restAfter?: number, restBetweenSets?: number, sets?: List<{ description?: string, interval?: { duration?: number, }, reps?: List<{ description?: string, restAfter?: number, weight?: number, }>, }>, }>, visibility?: 'public' | 'private', }, }
DELETE /strength-routine/items/{guid}
Delete a strength routine.
Guard: loggedIn
Request Body
{ circuit: bool, description: string, duration: number, name: string, routineMovements: List<{ duration: number, mode?: 'standard' | 'interval', movement?: { guid?: string, }, restAfter?: number, restBetweenSets?: number, sets?: List<{ description: string, interval: { duration?: number, }, reps?: List<{ description?: string, restAfter?: number, weight?: number, }>, }>, }>, visibility: 'public' | 'private', }
GET /strength-routine/movement/items/{guid}
Return a single strength routine movement.
Guard: loggedIn
Response Body
{ data: { createdBy?: { id?: number, }, dateCreated?: number, dateModified?: number, description?: string, guid?: string, name?: string, status?: 'draft' | 'published', tags?: List<{ images?: { default?: string, hd?: string, portrait?: string, sd?: string, square?: string, }, modality?: 'ride' | 'row' | 'run' | 'off' | 'all', translations?: record, type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus' | 'muscleGroup', value?: string, }>, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed', }, }