WHOOP · Schema

WHOOP Workout

Schema for a WHOOP Workout (v2). A Workout represents a discrete bout of activity tagged with a sport name, with Strain, heart-rate, and heart-rate-zone summaries.

FitnessWearablesHealthRecoverySleepStrainHeart RateWorkoutBiometrics

Properties

Name Type Description
id string
v1_id integer Legacy v1 numeric ID (deprecated).
user_id integer
created_at string
updated_at string
start string
end string
timezone_offset string
sport_name string Sport classification (e.g. running, cycling, weightlifting).
score_state string
score object
View JSON Schema on GitHub

JSON Schema

whoop-workout-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-evangelist.com/schemas/whoop-co/whoop-workout-schema.json",
  "title": "WHOOP Workout",
  "description": "Schema for a WHOOP Workout (v2). A Workout represents a discrete bout of activity tagged with a sport name, with Strain, heart-rate, and heart-rate-zone summaries.",
  "type": "object",
  "required": ["id", "user_id", "created_at", "updated_at", "start", "end", "timezone_offset", "sport_name", "score_state"],
  "properties": {
    "id": {"type": "string", "format": "uuid"},
    "v1_id": {"type": "integer", "format": "int64", "description": "Legacy v1 numeric ID (deprecated)."},
    "user_id": {"type": "integer", "format": "int64"},
    "created_at": {"type": "string", "format": "date-time"},
    "updated_at": {"type": "string", "format": "date-time"},
    "start": {"type": "string", "format": "date-time"},
    "end": {"type": "string", "format": "date-time"},
    "timezone_offset": {"type": "string"},
    "sport_name": {"type": "string", "description": "Sport classification (e.g. running, cycling, weightlifting)."},
    "score_state": {"type": "string", "enum": ["SCORED", "PENDING_SCORE", "UNSCORABLE"]},
    "score": {
      "type": "object",
      "required": ["strain", "average_heart_rate", "max_heart_rate", "kilojoule", "percent_recorded", "zone_durations"],
      "properties": {
        "strain": {"type": "number", "format": "float", "minimum": 0, "maximum": 21},
        "average_heart_rate": {"type": "integer"},
        "max_heart_rate": {"type": "integer"},
        "kilojoule": {"type": "number", "format": "float"},
        "percent_recorded": {"type": "number", "format": "float", "minimum": 0, "maximum": 100},
        "distance_meter": {"type": "number", "format": "float"},
        "altitude_gain_meter": {"type": "number", "format": "float"},
        "altitude_change_meter": {"type": "number", "format": "float"},
        "zone_durations": {
          "type": "object",
          "required": ["zone_zero_milli", "zone_one_milli", "zone_two_milli", "zone_three_milli", "zone_four_milli", "zone_five_milli"],
          "properties": {
            "zone_zero_milli": {"type": "integer"},
            "zone_one_milli": {"type": "integer"},
            "zone_two_milli": {"type": "integer"},
            "zone_three_milli": {"type": "integer"},
            "zone_four_milli": {"type": "integer"},
            "zone_five_milli": {"type": "integer"}
          }
        }
      }
    }
  }
}