Update DTT training program
Update one or more fields on a training program. Only include the fields you want to change — all fields are optional.
If Segment is provided, it replaces the entire segment list (existing segments are deleted).
Ultra-only fields: handsFreeMode, tagline, and iconId require an Ultra subscription or higher.
Setting these to their "off" values (false / null) is always allowed.
Authorizations
AuthorizationstringheaderrequiredAPI tokens can be created in the Dashboard settings. Requires an Ultra subscription.
Path Parameters
idintegerpathrequiredThe DTT template (training program) ID
Required range: x ≥ 1
Example: 1
Body
All fields are optional. Only include the fields you want to change. If Segment is provided, it replaces the entire segment list.
namestringProgram name (4–128 characters, cannot be blank)
Required string length: 4–128
targetWindownumberTarget window size
targetDepthnumberTarget depth percentage
toyIdinteger | nullAssociated toy ID (0 or null to unset)
messagestring | nullCompletion message (max 50 chars, defaults to "Good Work!")
Maximum string length: 50
handsFreeModebooleanEnable hands-free mode (Ultra only)
taglinestring | nullShort tagline (Ultra only, max 25 chars)
Maximum string length: 25
toyTaglinestring | nullToy tagline (max 25 chars)
Maximum string length: 25
iconIdinteger | nullIcon ID (Ultra only)
isPublicbooleanWhether the program is publicly shared
descriptionstring | nullProgram description (max 500 chars)
Maximum string length: 500
Segmentobject[]Full replacement segment list. If provided, all existing segments are deleted and replaced with these.
Required array length: 1–100 items
Show child attributes
typeenumrequiredSegment type
Allowed values: repetitionendurancefreeformbounce
durationintegerrequiredDuration (meaning varies by type)
Required range: x ≥ 1
speedintegerrequiredSpeed setting (1–1000)
Required range: 1 ≤ x ≤ 1000
repeatintegerNumber of times to repeat this segment
Required range: x ≥ 1
Default: 1
passFailEnabledbooleanWhether pass/fail grading is enabled
Default: false
passGradeThresholdintegerMinimum grade to pass (0–100)
Required range: 0 ≤ x ≤ 100
Default: 0
failureTextstring | nullMessage shown on failure (max 80 chars)
Maximum string length: 80
Response
200application/jsonUpdated template with segments
Updated template with segments
okbooleanrequireddatavaluerequiredShow child attributes
idintegerTemplate ID
bubbleIdstringUnique public identifier
ownerIdintegerOwner user ID
namestringProgram name
descriptionstringProgram description
taglinestringShort tagline
messagestringWelcome message
isPublicbooleanWhether publicly visible
isActivebooleanWhether currently active
handsFreeModebooleanHands-free mode enabled
targetDepthintegerTarget depth percentage
targetWindowintegerTarget window size
toyIdinteger | nullAssociated toy ID
createdDatestring<date-time>Creation date
updatedAtstring<date-time>Last update time
Segmentobject[]Show child attributes
idintegertypeenumSegment type
Allowed values: repetitionendurancefreeformbounce
durationintegerDuration (meaning varies by type)
speedintegerSpeed setting (1–1000)
repeatintegerNumber of times to repeat
orderintegerPosition in the segment list (0-based)
passFailEnabledbooleanWhether pass/fail grading is enabled
passGradeThresholdintegerMinimum grade to pass (0–100)
failureTextstring | nullMessage shown on failure
400application/jsonInvalid request
Invalid request
okbooleanrequirederrorstringrequired401application/jsonAuthentication required or token invalid
Authentication required or token invalid
okbooleanrequirederrorstringrequired403application/jsonUltra subscription required for this field
Ultra subscription required for this field
okbooleanrequirederrorstringrequired404application/jsonDTT template not found
DTT template not found
okbooleanrequirederrorstringrequired422application/jsonValidation failed — per-field errors
Validation failed — per-field errors
okbooleanrequirederrorstringrequiredfieldErrorsobject[]requiredShow child attributes
fieldstringrequiredDot-separated path to the invalid field (e.g. "name", "Segment.0.type")
messagestringrequiredHuman-readable explanation of the validation error