Skip to main content
POST
Send a workout log

Authorizations

Authorization
string
header
default:Bearer sandbox_any_token_works
required

A brand's server, one OAuth client per brand and environment. Get a token with the client_credentials grant and send it as Authorization: Bearer <token>. Tokens last 1 hour. A brand server reads status and ids only; it never reads clinical content. A platform partner holds one client for all its brands and gets one token per brand, naming it with tenant_id.

Headers

Idempotency-Key
string
required

A unique key per logical request, for example a UUID. Retrying with the same key and the same body within 24 hours returns the first response (with Idempotent-Replayed: true) instead of creating a duplicate. The same key with a different body is refused with 422 idempotency_key_reused.

Required string length: 8 - 255

Path Parameters

enrollment_id
string<uuid>
required

Body

application/json
started_at
string<date-time>
required

ISO 8601 in UTC.

Example:

"2026-10-26T14:05:00Z"

activity_type
string
required

For example strength, walk, run, yoga, cycling.

Maximum string length: 50
Example:

"strength"

external_id
string
required

Your own identifier, printable ASCII without spaces.

Required string length: 1 - 128
Pattern: ^[\x21-\x7E]+$
Example:

"workout-5531"

duration_min
integer
Required range: 1 <= x <= 600
Example:

35

completed
boolean
default:true
perceived_effort
integer
Required range: 1 <= x <= 10
Example:

6

workout_plan_item_id
string<uuid>
Example:

"1b3d5f7a-9c2e-4a6b-8d0f-2e4a6c8e0b2d"

sets
object[]
Maximum array length: 100

Response

Already received; the first receipt.

What a brand server gets back for a log. The values stay with the care team.

id
string<uuid>
required
Example:

"0190f5c9-5d6e-7f70-8a92-1b2c3d4e5f60"

external_id
string
required

Your own identifier, printable ASCII without spaces.

Required string length: 1 - 128
Pattern: ^[\x21-\x7E]+$
Example:

"meal-77120"

log_date
string<date>
required

A calendar date in the patient's time zone.

Example:

"2026-10-26"

created_at
string<date-time>
required

ISO 8601 in UTC.

Example:

"2026-10-26T14:05:00Z"

updated_at
string<date-time>
required

When the log was last corrected; the same as created_at until then.

Example:

"2026-10-26T14:05:00Z"