Nest Changelog
1.34.7
7/18/2023
1.34.9 PRE
8/14/2023
30 changed endpoints Collapse changed endpoints
POST /webhooks/subscription-schedule-updated 
Request Body
{
accountId?: string,
created?: number,
currentPhase: {
end_date?: number,
start_date?: number,
},
endBehavior?: 'cancel' | 'none' | 'release' | 'renew',
id?: string,
phases?: List<{
cancelAtEnd?: bool,
endDate?: number,
priceId?: string,
prorationBehavior?: string,
startDate?: number,
}>,
sourceSubscriptionCode?: string,
sourceUserCode?: string,
}POST /webhooks/subscription-schedule-updated 
Request Body
{
accountId?: string,
created?: number,
currentPhase: {
end_date?: number,
start_date?: number,
},
endBehavior?: 'cancel' | 'none' | 'release' | 'renew',
id?: string,
phases?: List<{
cancelAtEnd?: bool,
endDate?: number,
+ isFreePhase: bool,
priceId?: string,
prorationBehavior?: string,
startDate?: number,
}>,
sourceSubscriptionCode?: string,
sourceUserCode?: string,
}GET /users/{userId}/workouts/history 
Get aggregations of user workout history
Guard: admin, family
Response Body
{
data: {
durations?: List<{
count?: {
completed?: number,
total?: number,
},
name?: string,
value?: number,
}>,
formats?: List<{
count?: {
completed?: number,
total?: number,
},
text?: string,
value?: string,
}>,
modalities?: List<{
count?: {
completed?: number,
total?: number,
},
text?: string,
value?: string,
}>,
},
}GET /users/{userId}/workouts/history 
Get aggregations of user workout history. Groups by format, modality and duration. Counts total taken and total completed. Format and Modality are further grouped by duration for that format and modality.
Guard: customerService, family
Response Body
{
data: {
durations?: List<{
count?: {
completed?: number,
total?: number,
},
name?: string,
value?: number,
}>,
formats?: List<{
count?: {
completed?: number,
total?: number,
},
+ durations?: List<{
+ count?: {
+ completed?: number,
+ total?: number,
+ },
+ name?: string,
+ value?: number,
+ }>,
text?: string,
value?: string,
}>,
modalities?: List<{
count?: {
completed?: number,
total?: number,
},
+ durations?: List<{
+ count?: {
+ completed?: number,
+ total?: number,
+ },
+ name?: string,
+ value?: number,
+ }>,
text?: string,
value?: string,
}>,
},
}GET /strength-routine/items/{guid} 
Load an individual strength routine by guid.
Guard: loggedIn
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.
Guard: loggedIn, service
Response Body
{
data: {
circuit?: bool,
createdBy?: {
id?: number,
},
+ createdByEchelon?: bool,
dateCreated?: number,
dateModified?: number,
description?: string,
duration?: number,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
+ language?: 'en' | 'fr' | 'es' | 'de' | 'ko' | 'tr',
+ level?: {
+ 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,
+ },
modifiedBy?: number,
name?: string,
routineMovements?: List<{
duration?: number,
mode?: 'standard' | 'interval',
movement?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateModified?: number,
description?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
name?: string,
+ playback?: {
+ type?: 'hls' | 'dash',
+ url?: string,
+ },
status?: 'draft' | 'published',
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,
}>,
+ translations?: record,
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',
},
}PATCH /strength-routine/items/{guid} 
Edit a 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',
},
}PATCH /strength-routine/items/{guid} 
Edit a strength routine.
Request Body
{
circuit: bool,
description: string,
duration: number,
+ language: 'en' | 'fr' | 'es' | 'de' | 'ko' | 'tr',
+ level: string,
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,
},
+ createdByEchelon?: bool,
dateCreated?: number,
dateModified?: number,
description?: string,
duration?: number,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
+ language?: 'en' | 'fr' | 'es' | 'de' | 'ko' | 'tr',
+ level?: {
+ 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,
+ },
modifiedBy?: number,
name?: string,
routineMovements?: List<{
duration?: number,
mode?: 'standard' | 'interval',
movement?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateModified?: number,
description?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
name?: string,
+ playback?: {
+ type?: 'hls' | 'dash',
+ url?: string,
+ },
status?: 'draft' | 'published',
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,
}>,
+ translations?: record,
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.
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',
}DELETE /strength-routine/items/{guid} 
Delete a strength routine.
Request Body
{
circuit: bool,
description: string,
duration: number,
+ language: 'en' | 'fr' | 'es' | 'de' | 'ko' | 'tr',
+ level: string,
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',
}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',
},
}POST /strength-routine/movement/items 
Producer and above only. Create a new strength routine movement. Not translated.
Request Body
{
status: 'draft' | 'published',
tags: List<{
value?: string,
}>,
+ translations?: record,
}Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateModified?: number,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
+ playback?: {
+ type?: 'hls' | 'dash',
+ url?: 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,
}>,
+ translations?: record,
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,
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,
},
},
}GET /strength-routine/movement/items 
List strength routine movements. Translated. Paginated.
Response Body
{
data: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
dateModified?: number,
description?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
name?: string,
+ playback?: {
+ type?: 'hls' | 'dash',
+ url?: string,
+ },
status?: 'draft' | 'published',
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,
}>,
+ translations?: record,
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,
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',
},
}PATCH /strength-routine/movement/items/{guid} 
Admin only. Edit a specific strength routine movement
Request Body
{
status: 'draft' | 'published',
tags: List<{
value?: string,
}>,
+ translations: record,
+ videoStatus: 'uploadCompleted',
}Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateModified?: number,
description?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
name?: string,
+ playback?: {
+ type?: 'hls' | 'dash',
+ url?: string,
+ },
status?: 'draft' | 'published',
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,
}>,
+ translations?: record,
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed',
},
}GET /strength-routine/movement/items/{guid} 
Return a single strength routine movement.
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/{guid} 
Return a single strength routine movement.
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateModified?: number,
description?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
name?: string,
+ playback?: {
+ type?: 'hls' | 'dash',
+ url?: string,
+ },
status?: 'draft' | 'published',
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,
}>,
+ translations?: record,
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed',
},
}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 
Search for content in the Library.
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',
+ mediumLinked?: {
+ guid?: string,
+ },
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/library/upcoming 
Search for upcoming live or encore content in the Library.
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',
+ mediumLinked?: {
+ guid?: string,
+ },
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' | '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,
},
},
}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',
+ mediumLinked?: {
+ guid?: string,
+ },
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',
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' | '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',
},
}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',
+ mediumLinked: {
+ guid?: string,
+ },
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' | 'strength',
+ mediumLinked?: {
+ guid?: string,
+ },
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',
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',
},
}GET /content/items/{guid} 
Get a specific content item.
Response Body
{
data: {
catalog?: {
code?: 'SpinCo' | 'LabelMusic' | 'RoyaltyFree' | 'Select' | 'Flex' | 'FlexLabelMusic' | 'FitPass' | 'FitPassLabelMusic' | 'InstructorAudioOnly' | 'Just' | 'Free',
},
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
duration?: number,
featuredRow?: string,
format?: {
code?: string,
},
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
keywords?: string,
medium?: 'reflect' | 'standard' | 'strength',
+ mediumLinked?: {
+ guid?: string,
+ },
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',
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' | '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',
},
}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',
+ mediumLinked: {
+ guid?: string,
+ },
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' | 'strength',
+ mediumLinked?: {
+ guid?: string,
+ },
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',
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 /workouts/formats/{format}/percentiles/{duration} 
Get workouts percentiles for format + duration combos.
Response Body
{
data: List<{
position?: number,
value?: number,
}>,
}GET /workouts/formats/{format}/percentiles/{duration} 
Get workouts percentiles for format + duration combos.
Response Body
{
data: List<{
position?: number,
+ users?: List<{
+ age?: number,
+ city?: string,
+ color?: List<string>,
+ firstName?: string,
+ gender?: string,
+ lastName?: string,
+ nickname?: string,
+ profileImage?: string,
+ status?: string,
+ userId?: number,
+ }>,
value?: number,
}>,
}POST /subscriptions/{id}/quote 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Response Body
{
data: {
campaign?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateExpires?: number,
delayBillingDays?: number,
guid?: string,
name?: string,
partner?: {
id?: number,
name?: string,
},
utmCampaign?: string,
utmSource?: string,
},
dateFirstBilling?: number,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
redemptionCode?: {
batchGuid?: string,
campaignCode?: string,
code?: string,
createdBy?: {
id?: number,
},
dateCreated?: number,
- delayBillingDays: number,
eligibilityRequirements?: record,
offer?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
type?: 'trial' | 'bundle',
},
discount?: {
discountStripeCouponCode?: string,
introDiscount?: number,
introDiscountPaymentCount?: number,
},
guid?: string,
name?: string,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
status?: 'draft' | 'published',
},
- plans: List<{
- id?: number,
- }>,
redeemedBy?: {
id?: number,
},
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription?: {
id?: number,
},
vendor?: 'Incomm',
},
},
}POST /subscriptions/{id}/quote 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Response Body
{
data: {
campaign?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateExpires?: number,
delayBillingDays?: number,
guid?: string,
name?: string,
partner?: {
id?: number,
name?: string,
},
utmCampaign?: string,
utmSource?: string,
},
dateFirstBilling?: number,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
redemptionCode?: {
batchGuid?: string,
campaignCode?: string,
code?: string,
createdBy?: {
id?: number,
},
dateCreated?: number,
eligibilityRequirements?: record,
offer?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
type?: 'trial' | 'bundle',
},
discount?: {
discountStripeCouponCode?: string,
introDiscount?: number,
introDiscountPaymentCount?: number,
},
guid?: string,
name?: string,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
status?: 'draft' | 'published',
},
redeemedBy?: {
id?: number,
},
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription?: {
id?: number,
},
vendor?: 'Incomm',
},
},
}GET /redemption-codes 
Get a list of redemption codes
Response Body
{
data: List<{
batchGuid?: string,
campaignCode?: string,
code?: string,
createdBy?: {
id?: number,
},
dateCreated?: number,
- delayBillingDays: number,
eligibilityRequirements?: record,
offer?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
type?: 'trial' | 'bundle',
},
discount?: {
discountStripeCouponCode?: string,
introDiscount?: number,
introDiscountPaymentCount?: number,
},
guid?: string,
name?: string,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
status?: 'draft' | 'published',
},
- plans: List<{
- id?: number,
- }>,
redeemedBy?: {
id?: number,
},
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription?: {
id?: number,
},
vendor?: 'Incomm',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}GET /redemption-codes 
Get a list of redemption codes
Response Body
{
data: List<{
batchGuid?: string,
campaignCode?: string,
code?: string,
createdBy?: {
id?: number,
},
dateCreated?: number,
eligibilityRequirements?: record,
offer?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
type?: 'trial' | 'bundle',
},
discount?: {
discountStripeCouponCode?: string,
introDiscount?: number,
introDiscountPaymentCount?: number,
},
guid?: string,
name?: string,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
status?: 'draft' | 'published',
},
redeemedBy?: {
id?: number,
},
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription?: {
id?: number,
},
vendor?: 'Incomm',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}PUT /redemption-codes 
Create one or more redemption codes. Used for importing pre-generated codes.
Request Body
{
campaignCode?: string,
codes?: List<{
code?: string,
referenceNumber: string,
}>,
- delayBillingDays: number,
eligibilityRequirements: record,
- offer: {
guid?: string,
},
- planIds: List<number>,
retailerId?: number,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
vendor?: 'Incomm',
}PUT /redemption-codes 
Create one or more redemption codes. Used for importing pre-generated codes.
Request Body
{
campaignCode?: string,
codes?: List<{
code?: string,
referenceNumber: string,
}>,
eligibilityRequirements: record,
+ offer?: {
guid?: string,
},
retailerId?: number,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
vendor?: 'Incomm',
}PATCH /redemption-codes 
Request Body
{
data?: {
campaignCode: string,
- delayBillingDays: number,
eligibilityRequirements: record,
offer: {
guid?: string,
},
- plans: List<{
- id?: number,
- }>,
redeemedBy: {
id?: number,
},
referenceNumber: string,
retailer: {
id?: number,
},
serialNumber: string,
status: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription: {
id?: number,
},
vendor: 'Incomm',
},
where?: {
batchGuid: string,
campaignCode: string,
codes: List<string>,
prefix: string,
retailerId: number,
vendor: 'Incomm',
},
}PATCH /redemption-codes 
Request Body
{
data?: {
campaignCode: string,
eligibilityRequirements: record,
offer: {
guid?: string,
},
redeemedBy: {
id?: number,
},
referenceNumber: string,
retailer: {
id?: number,
},
serialNumber: string,
status: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription: {
id?: number,
},
vendor: 'Incomm',
},
where?: {
batchGuid: string,
campaignCode: string,
codes: List<string>,
prefix: string,
retailerId: number,
vendor: 'Incomm',
},
}GET /redemption-codes/{code} 
Get a single Redemption Code
Response Body
{
data: {
batchGuid?: string,
campaignCode?: string,
code?: string,
createdBy?: {
id?: number,
},
dateCreated?: number,
- delayBillingDays: number,
eligibilityRequirements?: record,
offer?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
type?: 'trial' | 'bundle',
},
discount?: {
discountStripeCouponCode?: string,
introDiscount?: number,
introDiscountPaymentCount?: number,
},
guid?: string,
name?: string,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
status?: 'draft' | 'published',
},
- plans: List<{
- id?: number,
- }>,
redeemedBy?: {
id?: number,
},
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription?: {
id?: number,
},
vendor?: 'Incomm',
},
}GET /redemption-codes/{code} 
Get a single Redemption Code
Response Body
{
data: {
batchGuid?: string,
campaignCode?: string,
code?: string,
createdBy?: {
id?: number,
},
dateCreated?: number,
eligibilityRequirements?: record,
offer?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
type?: 'trial' | 'bundle',
},
discount?: {
discountStripeCouponCode?: string,
introDiscount?: number,
introDiscountPaymentCount?: number,
},
guid?: string,
name?: string,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
status?: 'draft' | 'published',
},
redeemedBy?: {
id?: number,
},
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription?: {
id?: number,
},
vendor?: 'Incomm',
},
}PATCH /redemption-codes/{code} 
Update an individual Redemption Code
Request Body
{
campaignCode: string,
- delayBillingDays: number,
eligibilityRequirements: record,
offer: {
guid?: string,
},
- plans: List<{
- id?: number,
- }>,
redeemedBy: {
id?: number,
},
referenceNumber: string,
retailer: {
id?: number,
},
serialNumber: string,
status: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription: {
id?: number,
},
vendor: 'Incomm',
}Response Body
{
data: {
batchGuid?: string,
campaignCode?: string,
code?: string,
createdBy?: {
id?: number,
},
dateCreated?: number,
- delayBillingDays: number,
eligibilityRequirements?: record,
offer?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
type?: 'trial' | 'bundle',
},
discount?: {
discountStripeCouponCode?: string,
introDiscount?: number,
introDiscountPaymentCount?: number,
},
guid?: string,
name?: string,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
status?: 'draft' | 'published',
},
- plans: List<{
- id?: number,
- }>,
redeemedBy?: {
id?: number,
},
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription?: {
id?: number,
},
vendor?: 'Incomm',
},
}PATCH /redemption-codes/{code} 
Update an individual Redemption Code
Request Body
{
campaignCode: string,
eligibilityRequirements: record,
offer: {
guid?: string,
},
redeemedBy: {
id?: number,
},
referenceNumber: string,
retailer: {
id?: number,
},
serialNumber: string,
status: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription: {
id?: number,
},
vendor: 'Incomm',
}Response Body
{
data: {
batchGuid?: string,
campaignCode?: string,
code?: string,
createdBy?: {
id?: number,
},
dateCreated?: number,
eligibilityRequirements?: record,
offer?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
type?: 'trial' | 'bundle',
},
discount?: {
discountStripeCouponCode?: string,
introDiscount?: number,
introDiscountPaymentCount?: number,
},
guid?: string,
name?: string,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
status?: 'draft' | 'published',
},
redeemedBy?: {
id?: number,
},
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
subscription?: {
id?: number,
},
vendor?: 'Incomm',
},
}GET /redemption-codes/{code}/redemption 
Check if a redemption code is available to be redeemed. Returns the status of a redemption code, not a redemption code itself.
Response Body
{
data: {
billingPeriodStarts: string,
campaignCode?: string,
code?: string,
- delayBillingDays: number,
eligibilityRequirements?: record,
offer?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
type?: 'trial' | 'bundle',
},
discount?: {
discountStripeCouponCode?: string,
introDiscount?: number,
introDiscountPaymentCount?: number,
},
guid?: string,
name?: string,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
status?: 'draft' | 'published',
},
- plans: List<{
- id?: number,
- }>,
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
vendor?: 'Incomm',
},
}GET /redemption-codes/{code}/redemption 
Check if a redemption code is available to be redeemed. Returns the status of a redemption code, not a redemption code itself.
Response Body
{
data: {
billingPeriodStarts: string,
campaignCode?: string,
code?: string,
eligibilityRequirements?: record,
offer?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
type?: 'trial' | 'bundle',
},
discount?: {
discountStripeCouponCode?: string,
introDiscount?: number,
introDiscountPaymentCount?: number,
},
guid?: string,
name?: string,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
status?: 'draft' | 'published',
},
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
vendor?: 'Incomm',
},
}POST /redemption-codes/create 
Create one or more redemption codes
Request Body
{
campaignCode: string,
codeLength?: number,
count?: number,
- delayBillingDays: number,
eligibilityRequirements: record,
- offer: {
guid?: string,
},
- plans: List<{
- id?: number,
- }>,
prefix: string,
retailer?: {
id?: number,
},
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
vendor?: 'Incomm',
}POST /redemption-codes/create 
Create one or more redemption codes
Request Body
{
campaignCode: string,
codeLength?: number,
count?: number,
eligibilityRequirements: record,
+ offer?: {
guid?: string,
},
prefix: string,
retailer?: {
id?: number,
},
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
vendor?: 'Incomm',
}POST /users/{userId}/account/payment 
Update the account payment method on a Stripe subscription
Request Body
{
billingAddress: {
city: string,
country: {
code?: string,
},
postalCode: string,
region: {
code?: string,
},
streetLine1: string,
streetLine2: string,
},
cardTokenId: string,
firstName: string,
lastName: string,
phoneNumber: string,
}POST /users/{userId}/account/payment 
Update the account payment method on a Stripe subscription
Request Body
{
billingAddress: {
city: string,
country: {
code?: string,
},
postalCode: string,
region: {
code?: string,
},
streetLine1: string,
streetLine2: string,
},
cardTokenId: string,
firstName: string,
lastName: string,
+ paymentMethodId: string,
phoneNumber: string,
}POST /users/{userId}/account/add-phase 
Request Body
{
durationDays?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
planId: number,
publicNote: string,
reason: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
- startDate: number,
}POST /users/{userId}/account/add-phase 
Request Body
{
durationDays?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
planId: number,
publicNote: string,
reason: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
}GET /users/{userId}/collections 
List collections for this user. Default active.
Response Body
{
data: List<{
collection?: {
guid?: string,
},
dateJoined?: number,
- guid?: string,
status?: 'active' | 'completed' | 'abandoned' | 'cancelled',
- workouts?: List<{
- contentGuid?: string,
- date?: number,
- workoutGuid?: string,
- }>,
}>,
}GET /users/{userId}/collections 
List collections for this user. Default active.
Response Body
{
data: List<{
collection?: {
guid?: string,
},
dateJoined?: number,
status?: 'active' | 'completed' | 'abandoned' | 'cancelled',
+ userData?: {
+ progress?: {
+ completed?: number,
+ count?: number,
+ },
+ workouts?: List<{
+ contentGuid?: string,
+ date?: number,
+ workoutGuid?: string,
+ }>,
+ },
}>,
}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',
},
}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',
+ mediumLinked?: {
+ guid?: string,
+ },
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',
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',
},
}11 added endpoints Collapse added endpoints
GET /users/findByEmail/{email}/dateActivated 
Does user exist and are they activated.
Guard: service
Response Body
{
data: {
dateActivated?: number,
},
}GET /users/{userId}/strength-workouts/items 
Get strength workout summaries for a user
Guard: customerService, family
Response Body
{
data: List<{
completion?: number,
dateEnd?: number,
dateStart?: number,
guid?: string,
movementStats?: List<{
interval?: bool,
movement?: {
guid?: string,
name?: string,
},
setStats?: List<{
calories?: number,
completed?: bool,
duration?: number,
heartRate?: number,
number?: number,
power?: number,
reps?: {
completed?: number,
planned?: number,
},
resistanceMode?: 'standard' | 'concentric' | 'eccentric' | 'isokinetic' | 'chain',
rest?: number,
tension?: number,
volume?: number,
}>,
totalStats?: {
calories?: number,
duration?: number,
heartRate?: number,
power?: number,
reps?: {
completed?: number,
planned?: number,
},
rest?: number,
sets?: number,
tension?: number,
volume?: number,
},
}>,
user?: {
id?: number,
},
workoutStats?: {
calories?: number,
duration?: number,
heartRate?: number,
power?: number,
reps?: {
completed?: number,
planned?: number,
},
rest?: number,
sets?: number,
tension?: number,
volume?: number,
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}POST /strength-workouts/items 
Documentation only
Guard: admin
Request Body
{
activity?: List<unknown>,
device?: {
appVersion?: string,
model?: string,
osVersion?: string,
},
localTime?: string,
peripherals?: List<{
firmwareVersion?: string,
guid?: string,
hardwareVersion?: string,
modelId?: string,
name?: string,
serialNo?: string,
type?: string,
}>,
routine?: {
guid?: string,
},
user?: {
id?: number,
},
}Response Body
{
data: {
guid?: string,
},
}POST /strength-workouts/process 
Internal use only - post processed workout from lambda
Guard: service
Request Body
{
completion?: number,
dateDeleted?: number,
dateEnd?: number,
dateStart?: number,
guid?: string,
movementStats?: List<{
interval?: bool,
movementGuid?: string,
setStats?: List<{
calories?: number,
completed?: bool,
duration?: number,
heartRate?: number,
number?: number,
power?: number,
reps?: {
completed?: number,
planned?: number,
},
resistanceMode?: 'standard' | 'concentric' | 'eccentric' | 'isokinetic' | 'chain',
rest?: number,
tension?: number,
volume?: number,
}>,
totalStats?: {
calories?: number,
duration?: number,
heartRate?: number,
power?: number,
reps?: {
completed?: number,
planned?: number,
},
rest?: number,
sets?: number,
tension?: number,
volume?: number,
},
}>,
strengthRoutineGuid?: string,
timeOffset?: number,
userId?: number,
workoutStats?: {
calories?: number,
duration?: number,
heartRate?: number,
power?: number,
reps?: {
completed?: number,
planned?: number,
},
rest?: number,
sets?: number,
tension?: number,
volume?: number,
},
}GET /strength-workouts/items/{guid} 
Get Detailed view of workout. Includes deleted workouts.
Guard: customerService
Response Body
{
data: {
data?: record,
},
}GET /strength-workouts/items/{guid}/summary 
Guard: loggedIn
Response Body
{
data: {
completion?: number,
dateEnd?: number,
dateStart?: number,
guid?: string,
movementStats?: List<{
interval?: bool,
movement?: {
guid?: string,
name?: string,
},
setStats?: List<{
calories?: number,
completed?: bool,
duration?: number,
heartRate?: number,
number?: number,
power?: number,
reps?: {
completed?: number,
planned?: number,
},
resistanceMode?: 'standard' | 'concentric' | 'eccentric' | 'isokinetic' | 'chain',
rest?: number,
tension?: number,
volume?: number,
}>,
totalStats?: {
calories?: number,
duration?: number,
heartRate?: number,
power?: number,
reps?: {
completed?: number,
planned?: number,
},
rest?: number,
sets?: number,
tension?: number,
volume?: number,
},
}>,
user?: {
id?: number,
},
workoutStats?: {
calories?: number,
duration?: number,
heartRate?: number,
power?: number,
reps?: {
completed?: number,
planned?: number,
},
rest?: number,
sets?: number,
tension?: number,
volume?: number,
},
},
}GET /strength-routine/admin/library 
Producer and above only. Search the library with elevated access.
Guard: producer, service
Response Body
{
data: List<{
circuit?: bool,
createdByEchelon?: bool,
dateCreated?: number,
description?: string,
duration?: number,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
language?: 'en' | 'fr' | 'es' | 'de' | 'ko' | 'tr',
level?: {
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,
},
movements?: List<string>,
name?: string,
tags?: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
dateModified?: number,
description?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
name?: string,
playback?: {
type?: 'hls' | 'dash',
url?: string,
},
status?: 'draft' | 'published',
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,
}>,
translations?: record,
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted' | 'processingFailed',
}>,
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}PATCH /users/{userId}/account/edit-phase 
Guard: customerService
Request Body
{
durationDays?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
planId: number,
publicNote: string,
reason: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
}Response Body
{
data: {
creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
defaultPaymentMethod?: {
brand?: string,
code?: string,
expiration?: string,
type?: string,
},
discounts?: {
amount: number,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
dateEnd?: number,
dateStart?: number,
name?: string,
percent: number,
},
nextInvoice?: {
amount?: number,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
dateScheduled?: number,
},
status?: {
code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
type?: 'trial' | 'bundle',
},
discount?: {
discountStripeCouponCode?: string,
introDiscount?: number,
introDiscountPaymentCount?: number,
},
guid?: string,
name?: string,
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
status?: 'draft' | 'published',
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
legacyPlanFlags?: {
emailTemplateId?: number,
isOrderProcessedByHook?: bool,
showInOldMember?: bool,
},
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
price?: {
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
value?: number,
},
promotion?: {
id?: number,
},
provisional?: {
isProvisioned?: bool,
},
renewal?: 'auto' | 'paused' | 'cancelled' | 'failed',
schedule?: {
createdAt?: number,
endBehavior?: 'cancel' | 'none' | 'release' | 'renew',
id?: string,
phases?: List<string>,
},
source?: {
accountId?: string,
lineItemId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
orderId?: string,
productId?: string,
},
status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
subscriptionAddons?: List<{
addonOffer?: {
addon?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
featureOverrides?: List<{
code?: string,
value?: record,
}>,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
name?: string,
translations?: record,
updatedBy?: {
id?: number,
},
video?: {
url?: string,
},
},
billingProvider?: {
id?: number,
metadata?: {
avaTaxIntegration?: bool,
},
name?: string,
organizationCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
currency?: {
code?: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYI' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL',
scale?: number,
},
name?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
frequencyDays?: number,
guid?: string,
name?: string,
status?: 'draft' | 'published' | 'trash',
unitPrice?: {
priceCode: string,
value?: number,
},
updatedBy?: {
id?: number,
},
},
dateCancelled?: number,
dateExpires?: number,
dateStart?: number,
guid?: string,
subscription?: {
id?: number,
},
}>,
term?: {
dateEnd?: number,
dateStart?: number,
},
token?: string,
trial?: {
dateEnd?: number,
dateStart?: number,
},
updatedBy?: {
id?: number,
},
user?: {
id?: number,
},
utm?: {
campaign: string,
content: string,
medium: string,
source: string,
term: string,
},
},
},
}GET /users/{userId}/collections/{collectionGuid}/progress 
Get list of users completed workouts that count towards this collections progress
Guard: admin, family
Response Body
{
data: {
collection?: {
guid?: string,
},
dateJoined?: number,
status?: 'active' | 'completed' | 'abandoned' | 'cancelled',
userData?: {
progress?: {
completed?: number,
count?: number,
},
workouts?: List<{
contentGuid?: string,
date?: number,
workoutGuid?: string,
}>,
},
},
}POST /users/{userId}/strength-routines/import 
Copy a strength routine.
Guard: customerService, family
Request Body
{
guid?: string,
name?: string,
}Response Body
{
data: {
circuit?: bool,
createdBy?: {
id?: number,
},
createdByEchelon?: bool,
dateCreated?: number,
dateModified?: number,
description?: string,
duration?: number,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
language?: 'en' | 'fr' | 'es' | 'de' | 'ko' | 'tr',
level?: {
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,
},
modifiedBy?: number,
name?: string,
routineMovements?: List<{
duration?: number,
mode?: 'standard' | 'interval',
movement?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateModified?: number,
description?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
name?: string,
playback?: {
type?: 'hls' | 'dash',
url?: string,
},
status?: 'draft' | 'published',
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,
}>,
translations?: record,
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 /users/{userId}/strength-routines/items 
Create a new strength routine.
Guard: family, producer
Request Body
{
circuit: bool,
createdByEchelon: bool,
description: string,
duration: number,
language: 'en' | 'fr' | 'es' | 'de' | 'ko' | 'tr',
level: string,
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,
},
createdByEchelon?: bool,
dateCreated?: number,
dateModified?: number,
description?: string,
duration?: number,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
language?: 'en' | 'fr' | 'es' | 'de' | 'ko' | 'tr',
level?: {
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,
},
modifiedBy?: number,
name?: string,
routineMovements?: List<{
duration?: number,
mode?: 'standard' | 'interval',
movement?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateModified?: number,
description?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
name?: string,
playback?: {
type?: 'hls' | 'dash',
url?: string,
},
status?: 'draft' | 'published',
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,
}>,
translations?: record,
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',
},
}3 deleted endpoints Collapse deleted endpoints
PUT /workouts/items/{guid} 
Put a Workout
Guard: loggedIn
Request Body
{
content: {
guid?: string,
type?: 'live' | 'vod' | 'encore' | 'freestyle',
},
device?: {
appVersion?: string,
model?: string,
os?: string,
osVersion?: string,
},
legacyProduct?: string,
localTime?: string,
percentile: number,
peripherals?: List<{
firmwareVersion?: string,
guid?: string,
hardwareVersion?: string,
modelId?: string,
name?: string,
serialNO?: string,
type?: 'bike' | 'rower' | 'treadmill',
}>,
ranking: {
place?: number,
total?: number,
},
stats?: List<{
classState?: 'warmup' | 'in-session' | 'overflow' | 'ended',
dateLoggedMs?: number,
output?: {
distance: number,
incrementalDistance: number,
joules: number,
RPM: number,
strokesPerMinute: number,
time500Meters: number,
watts: number,
},
peripheral: {
guid: string,
incline: number,
resistance: number,
speed: number,
},
physiology?: {
calories: number,
heartRate: number,
hrPoints: number,
},
playbackState?: 'playing' | 'paused' | 'stopped' | 'buffering',
}>,
user?: {
id?: number,
},
}GET /users/{userId}/collections/{collectionGuid}/workouts 
Get info about workouts completed for this collection
Guard: admin, family
Response Body
{
data: List<{
contentGuid?: string,
date?: number,
workoutGuid?: string,
}>,
}POST /strength-routine/items 
Create a new 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',
},
}