Each summary object is uniquely identified by its id.

If multiple events are received at the same id, the last event received replaces all its previous versions.

Properties

event_type
const string
required

Constant: daily.data.workouts.created

team_id
string
required
user_id
string
required
client_user_id
string
required
data
ClientFacingWorkout
required
user_id
string
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.

id
string
required
title
string | null

Title given for the workout

timezone_offset
integer | null

Timezone offset from UTC as seconds. For example, EEST (Eastern European Summer Time, +3h) is 10800. PST (Pacific Standard Time, -8h) is -28800::seconds

average_hr
integer | null

Average heart rate during workout::bpm

max_hr
integer | null

Max heart rate during workout::bpm

distance
number | null

Distance travelled during workout::meters

calendar_date
string
required

Date of the workout summary in the YYYY-mm-dd format. This generally matches the workout start date.

time_start
string
required

Start time of the workout::time

time_end
string
required

End time of the workout::time

calories
number | null

Calories burned during the workout::kCal

sport
ClientFacingSport | null

Sport’s name

id
integer
required
name
string
required

Sport’s name

slug
string
required

Slug for designated sport

hr_zones
integer | null

Time in seconds spent in different heart rate zones <50%, 50-60%, 60-70%, 70-80%, 80-90%, 90%+. Due to rounding errors, it’s possible that summing all values is different than the total time of the workout. Not available for all providers::seconds

moving_time
integer | null

Time spent active during the workout::seconds

total_elevation_gain
number | null

Elevation gain during the workout::meters

elev_high
number | null

Highest point of elevation::meters

elev_low
number | null

Lowest point of elevation::meters

average_speed
number | null

Average speed during workout in m/s::meters/sec

max_speed
number | null

Max speed during workout in m/s::meters/sec

average_watts
number | null

Average watts burned during exercise::watts

device_watts
number | null

Watts burned during exercise::watts

max_watts
number | null

Max watts burned during exercise::watts

weighted_average_watts
number | null

Weighted average watts burned during exercise::watts

map
object | null

Map of workouts encoded as polyline

provider_id
string
required

Provider ID given for that specific workout

source
ClientFacingSource
required

Source the data has come from.

provider
string
required

Provider slug. e.g., oura, fitbit, garmin.

type
string | null

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 | null

The identifier of the app which recorded this summary. This is only applicable to multi-source providers like Apple Health and Android Health Connect.

name
string
required

[⚠️ Deprecated] Deprecated. Subject to removal after 1 Jan 2024.

slug
string
required

[⚠️ Deprecated] Deprecated. Use provider instead. Subject to removal after 1 Jan 2024.

logo
string
required

[⚠️ Deprecated] Deprecated. Subject to removal after 1 Jan 2024.

Examples

{
  "event_type": "daily.data.workouts.created",
  "team_id": "e89cc9fe-e1c0-41bc-a83a-728b8cb1056f",
  "user_id": "fac593ed-f371-4aea-9210-9332f1b19bec",
  "client_user_id": "3Zru4O8cBEiwGTsXgUQGaQ==",
  "data": {
    "id": "cc402c8b-4545-4b7d-9dc6-e76a80ffc829",
    "average_hr": 100,
    "max_hr": 190,
    "distance": 1700,
    "calendar_date": "2024-20-",
    "time_start": "2024-03-28T10:20:05+00:00",
    "time_end": "2024-03-28T11:20:05+00:00",
    "calories": 300,
    "sport": {
      "id": 1,
      "name": "football"
    },
    "source": {
      "provider": "strava",
      "type": "unknown",
      "app_id": null
    },
    "hr_zones": [
      100,
      90,
      10,
      10,
      200
    ],
    "user_id": "40ebfcff-3f14-4efe-9166-3d8838747151",
    "moving_time": 100,
    "total_elevation_gain": 10,
    "elev_high": 20.2,
    "elev_low": -10.2,
    "average_speed": 4.2,
    "max_speed": 7.8,
    "average_watts": 100,
    "device_watts": 80,
    "max_watts": 200,
    "weighted_average_watts": 250,
    "map": {
      "summary_polyline": "agn~Ftb{uOvr@daBunBjdBkHwiD????~Ngn@ha@_N~Ql`@"
    }
  }
}