RAD Developer Docs
DTT Templates

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.

PATCH
/
dtt
/
templates
/
{id}

Authorizations

Authorizationstringheaderrequired

API tokens can be created in the Dashboard settings. Requires an Ultra subscription.

Path Parameters

idintegerpathrequired

The DTT template (training program) ID

Required range: x ≥ 1

Example: 1

Body

application/json

All fields are optional. Only include the fields you want to change. If Segment is provided, it replaces the entire segment list.

namestring

Program name (4–128 characters, cannot be blank)

Required string length: 4–128

targetWindownumber

Target window size

targetDepthnumber

Target depth percentage

toyIdinteger | null

Associated toy ID (0 or null to unset)

messagestring | null

Completion message (max 50 chars, defaults to "Good Work!")

Maximum string length: 50

handsFreeModeboolean

Enable hands-free mode (Ultra only)

taglinestring | null

Short tagline (Ultra only, max 25 chars)

Maximum string length: 25

toyTaglinestring | null

Toy tagline (max 25 chars)

Maximum string length: 25

iconIdinteger | null

Icon ID (Ultra only)

isPublicboolean

Whether the program is publicly shared

descriptionstring | null

Program 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
typeenumrequired

Segment type

Allowed values: repetitionendurancefreeformbounce

durationintegerrequired

Duration (meaning varies by type)

Required range: x ≥ 1

speedintegerrequired

Speed setting (1–1000)

Required range: 1 ≤ x ≤ 1000

repeatinteger

Number of times to repeat this segment

Required range: x ≥ 1

Default: 1

passFailEnabledboolean

Whether pass/fail grading is enabled

Default: false

passGradeThresholdinteger

Minimum grade to pass (0–100)

Required range: 0 ≤ x ≤ 100

Default: 0

failureTextstring | null

Message shown on failure (max 80 chars)

Maximum string length: 80

Response

200application/json

Updated template with segments

okbooleanrequired
datavaluerequired
Show child attributes
idinteger

Template ID

bubbleIdstring

Unique public identifier

ownerIdinteger

Owner user ID

namestring

Program name

descriptionstring

Program description

taglinestring

Short tagline

messagestring

Welcome message

isPublicboolean

Whether publicly visible

isActiveboolean

Whether currently active

handsFreeModeboolean

Hands-free mode enabled

targetDepthinteger

Target depth percentage

targetWindowinteger

Target window size

toyIdinteger | null

Associated toy ID

createdDatestring<date-time>

Creation date

updatedAtstring<date-time>

Last update time

Segmentobject[]
Show child attributes
idinteger
typeenum

Segment type

Allowed values: repetitionendurancefreeformbounce

durationinteger

Duration (meaning varies by type)

speedinteger

Speed setting (1–1000)

repeatinteger

Number of times to repeat

orderinteger

Position in the segment list (0-based)

passFailEnabledboolean

Whether pass/fail grading is enabled

passGradeThresholdinteger

Minimum grade to pass (0–100)

failureTextstring | null

Message shown on failure

400application/json

Invalid request

okbooleanrequired
errorstringrequired
401application/json

Authentication required or token invalid

okbooleanrequired
errorstringrequired
403application/json

Ultra subscription required for this field

okbooleanrequired
errorstringrequired
404application/json

DTT template not found

okbooleanrequired
errorstringrequired
422application/json

Validation failed — per-field errors

okbooleanrequired
errorstringrequired
fieldErrorsobject[]required
Show child attributes
fieldstringrequired

Dot-separated path to the invalid field (e.g. "name", "Segment.0.type")

messagestringrequired

Human-readable explanation of the validation error