WorkoutScore
WHOOP's measurements and evaluation of the workout activity. Only present if the Workout State is `SCORED`
FitnessWearablesHealthRecoverySleepWorkoutsStrainHeart RatePerformance
{
"$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"
}
}
}
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.