WHOOP · Schema

WorkoutScore

WHOOP's measurements and evaluation of the workout activity. Only present if the Workout State is `SCORED`

FitnessWearablesHealthRecoverySleepWorkoutsStrainHeart RatePerformance

Properties

Name Type Description
strain number WHOOP metric of the cardiovascular load - the level of strain the workout had on the user's cardiovascular system based on the user's heart rate. Strain is scored on a scale from 0 to 21.
average_heart_rate integer The user's average heart rate (beats per minute) during the workout.
max_heart_rate integer The user's max heart rate (beats per minute) during the workout.
kilojoule number Kilojoules the user expended during the workout.
percent_recorded number Percentage (0-100%) of heart rate data WHOOP received during the workout.
distance_meter number The distance the user travelled during the workout. Only present if distance data sent to WHOOP
altitude_gain_meter number The altitude gained during the workout. This measurement does not account for downward travel - it is strictly a measure of altitude climbed. If a member climbed up and down a 1,000 meter mountain, en
altitude_change_meter number The altitude difference between the start and end points of the workout. If a member climbed up and down a mountain, ending at the same altitude, this measurement would be 0. Only present if altitude
zone_durations object
View JSON Schema on GitHub

JSON Schema

whoop-workoutscore-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/whoop/main/json-schema/whoop-workoutscore-schema.json",
  "title": "WorkoutScore",
  "description": "WHOOP's measurements and evaluation of the workout activity. Only present if the Workout State is `SCORED`",
  "required": [
    "average_heart_rate",
    "kilojoule",
    "max_heart_rate",
    "percent_recorded",
    "strain",
    "zone_durations"
  ],
  "type": "object",
  "properties": {
    "strain": {
      "type": "number",
      "description": "WHOOP metric of the cardiovascular load - the level of strain the workout had on the user's cardiovascular system based on the user's heart rate. Strain is scored on a scale from 0 to 21.",
      "format": "float",
      "example": 8.2463,
      "externalDocs": {
        "description": "WHOOP Strain",
        "url": "https://api.prod.whoop.com/url-mapping-service/v1/STRAIN"
      }
    },
    "average_heart_rate": {
      "type": "integer",
      "description": "The user's average heart rate (beats per minute) during the workout.",
      "format": "int32",
      "example": 123
    },
    "max_heart_rate": {
      "type": "integer",
      "description": "The user's max heart rate (beats per minute) during the workout.",
      "format": "int32",
      "example": 146
    },
    "kilojoule": {
      "type": "number",
      "description": "Kilojoules the user expended during the workout.",
      "format": "float",
      "example": 1569.34033203125
    },
    "percent_recorded": {
      "type": "number",
      "description": "Percentage (0-100%) of heart rate data WHOOP received during the workout.",
      "format": "float",
      "example": 100.0
    },
    "distance_meter": {
      "type": "number",
      "description": "The distance the user travelled during the workout. Only present if distance data sent to WHOOP",
      "format": "float",
      "example": 1772.77035916
    },
    "altitude_gain_meter": {
      "type": "number",
      "description": "The altitude gained during the workout. This measurement does not account for downward travel - it is strictly a measure of altitude climbed. If a member climbed up and down a 1,000 meter mountain, ending at the same altitude, this measurement would be 1,000 meters. Only present if altitude data is included as part of the workout",
      "format": "float",
      "example": 46.64384460449
    },
    "altitude_change_meter": {
      "type": "number",
      "description": "The altitude difference between the start and end points of the workout. If a member climbed up and down a mountain, ending at the same altitude, this measurement would be 0. Only present if altitude data is included as part of the workout",
      "format": "float",
      "example": -0.781372010707855
    },
    "zone_durations": {
      "$ref": "#/components/schemas/ZoneDurations"
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/whoop-workoutscore"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.