---
title: "Workout Stream"
method: POST
path: "daily.data.workout_stream.*"
tags: ["summary"]
---

# Workout Stream

`POST daily.data.workout_stream.*` (webhook)

## Payload

- ClientFacingWorkoutStreamChanged
  - `event_type` 'daily.data.workout_stream.created' | 'daily.data.workout_stream.updated', required
  - `user_id` string, uuid, required
  - `client_user_id` string, uuid, required
  - `team_id` string, uuid, required
  - `data` ClientFacingShallowWorkoutStream, required
    - `user_id` string, uuid, required — User id returned by vital create user request. This id should be stored in your database against the user and used for all interactions with the vital api.
    - `workout_id` string, uuid, required
    - `provider_id` string, required
    - `message` string
    - `source` ClientFacingSource, required — Source summarizes where a sample or a summary is sourced from. At minimum, the source provider is always included.
      - `provider` string, required — Provider slug. e.g., `oura`, `fitbit`, `garmin`.
      - `type` string — The type of the data source (app or device) by which the summary or the timeseries data were recorded. This defaults to `unknown` when Vital cannot extract or infer that information
      - `app_id` string, nullable — The identifier of the app which recorded this summary. This is only applicable to multi-source providers like Apple Health and Android Health Connect.
      - `device_id` string, uuid, nullable — The identifier of the device which recorded this summary.
      - `sport` string, nullable — For workout stream timeseries, this is the standard sport slug of the workout with which the timeseries data are associated. For the `distance` timeseries, this is `wheelchair_pushing` if the user is a wheelchair user, or `null` otherwise. For all summary types and non-workout timeseries, this is always `null`.
      - `workout_id` string, uuid, nullable — For workout stream timeseries, this is the workout ID with which the timeseries data are associated. For all other types, this is always `null`.
      - `name` string — Deprecated. Subject to removal after 1 Jan 2024.
      - `slug` string — Deprecated. Use `provider` instead. Subject to removal after 1 Jan 2024.
      - `logo` string — Deprecated. Subject to removal after 1 Jan 2024.
    - `sport` ClientFacingSport
      - `id` integer, required — This ID is unstable across environments. Use the slug instead.
      - `name` string, required — Sport's name
      - `slug` string, required — Slug for designated sport

## Acknowledgement `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/tryvital/apis/junction-api.md) · [All operations](https://skmtc.net/tryvital/apis/junction-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tryvital/junction-api/revisions/1a22b97afb3a/schema)
