---
title: "Get exercise"
method: GET
path: "/v3/exercises/{exerciseId}"
tags: ["Exercises"]
---

# Get exercise

`GET /v3/exercises/{exerciseId}`

## Request

- Base URL: `https://www.polaraccesslink.com`
- URL: `https://www.polaraccesslink.com/v3/exercises/{exerciseId}`
- Auth: OAuth 2
  - Authorization code: `https://flow.polar.com/oauth2/authorization`
  - Token URL: `https://polarremote.com/v2/oauth2/token` scopes: `accesslink.read_all`
- TypeScript: <https://skmtc.dev/polar-com/apis/polar-accesslink-api/docs/v3/exercises/:exerciseId/get.ts> (a function with typed inputs; its response is checked against the schema)

Get users exercise using hashed id. Only Exercises uploaded to Flow in the last 30 days are available. Only exercises that have been uploaded to Flow after the user is registered with your client will be available. Use samples and zones query parameters to return optional samples and zone information of the exercise.

## Path parameters

- `exerciseId` string, required

## Query parameters

- `samples` boolean
- `zones` boolean
- `route` boolean

## Response `200`

Exercise information.

- ExerciseHashId: Training session summary data
  - `id` string: Hashed id of the training session
  - `upload_time` string: Time of the transfer from wrist unit to Polar database
  - `polar_user` string: Absolute link to Polar user owning the training
  - `device` string: Polar product used in training
  - `device_id` string: Id of the Polar device
  - `start_time` string: Start time of the training session in local time
  - `start_time_utc_offset` integer: The offset from UTC (in minutes) when the training session was started
  - `duration` string: The duration of the training session as specified in ISO8601
  - `calories` integer: Expended calories during training in kilocalories
  - `distance` number, float: Distance in meters travelled during training
  - `heart_rate` HeartRate: Heart-rate statistics information
    - `average` integer: Average heart-rate
    - `maximum` integer: Maximum heart-rate
  - `training_load` number, float: Training load effect to user
  - `sport` string: Sport name
  - `has_route` boolean: Boolean indicating if the exercise has route data
  - `club_id` integer: Has value if the exercise is from "Flow For Club", otherwise not printed. Value -1 indicates that there were errors finding the club
  - `club_name` string: Has value if the exercise is from "Flow For Club", otherwise not printed. Value "Ambiguous club location. Please contact support." is printed in case of error (and the club-id is -1).
  - `detailed_sport_info` string: String containing the name of a Polar Flow-compatible sport, if one is set for the exercise.
  - `fat_percentage` integer: Fat percentage of exercise calories. Has value if the exercise is from training device supporting Energy sources, otherwise not printed.
  - `carbohydrate_percentage` integer: Carbohydrate percentage of exercise calories. Has value if the exercise is from training device supporting Energy sources, otherwise not printed.
  - `protein_percentage` integer: Protein percentage of exercise calories. Has value if the exercise is from training device supporting Energy sources, otherwise not printed.
  - `running-index` integer: <a href="https://support.polar.com/en/support/tips/Running_Index_feature#"> Running index</a> is a score automatically calculated every run based on your heart rate and speed data collected via GPS or stride sensor.
  - `heart_rate_zones` Zone[]: Heart rate zones for this exercise. Returned when query parameter 'zones=true' is used.
    - `index` integer: Zone list index
    - `lower-limit` integer: Lower heart-rate boundary of the zone
    - `upper-limit` integer: Upper heart-rate boundary of the zone
    - `in-zone` string: Time duration spent in the zone ISO 8601
  - `samples` Sample[]: List of all samples available for this exercise. Returned when query parameter 'samples=true' is used.
    - `recording-rate` integer: Sample recording rate in seconds. Null when recording rate is not applicable - currently only with RR-data.
    - `sample-type` string, byte: Sample type
    - `data` string: Sample values as a comma-separated list of strings. Can contain null -values which indicate a situation where sensor was offline.
  - `route` Location[]: List of all route points/locations available for this exercise. Returned when query parameter 'route=true' is used.
    - `latitude` number, double: The latitude, expressed in degrees.
    - `longitude` number, double: The longitude, expressed in degrees.
    - `time` string: The time, expressed as a duration.
    - `satellites` integer: Satellites. A byte-sized value with a maximum of 63.
    - `fix` integer: Fix. A byte-sized value with a maximum of three.
  - `training_load_pro` TrainingLoadProSample
    - `date` string, date: Date in format YYYY-MM-DD.
    - `cardio-load` number, float: User cardio load value.
    - `muscle-load` number, float: User muscle load value.
    - `perceived-load` number, float: User perceived load value.
    - `cardio-load-interpretation` 'UNKNOWN' | 'VERY_LOW' | 'LOW' | 'MEDIUM' | 'HIGH' | 'VERY_HIGH' | 'NOT_AVAILABLE'
    - `muscle-load-interpretation` 'UNKNOWN' | 'VERY_LOW' | 'LOW' | 'MEDIUM' | 'HIGH' | 'VERY_HIGH' | 'NOT_AVAILABLE'
    - `perceived-load-interpretation` 'UNKNOWN' | 'VERY_LOW' | 'LOW' | 'MEDIUM' | 'HIGH' | 'VERY_HIGH' | 'NOT_AVAILABLE'
    - `user-rpe` 'UNKNOWN' | 'RPE_NONE' | 'RPE_EASY' | 'RPE_LIGHT' | 'RPE_FAIRLY_BRISK' | 'RPE_BRISK' | 'RPE_MODERATE' | 'RPE_FAIRLY_HARD' | 'RPE_HARD' | 'RPE_EXHAUSTING' | 'RPE_EXTREME': Quantifies internal training load of a session.

## Other responses

- `403`: User has not accepted all mandatory consents.
- `404`: Exercise not found.

## Changes

- **2025-06-04** `5ef2cea678a2`: 12 warning, 23 info
  - removed the optional property `carbohydrate-percentage` from the response with the `200` status
  - removed the optional property `club-id` from the response with the `200` status
  - removed the optional property `club-name` from the response with the `200` status
  - removed the optional property `detailed-sport-info` from the response with the `200` status
  - …31 more
- **2021-02-25** `425d64c3dd59`: 3 info
  - added the optional property `carbohydrate-percentage` to the response with the `200` status
  - added the optional property `fat-percentage` to the response with the `200` status
  - added the optional property `protein-percentage` to the response with the `200` status

[Operation history](https://skmtc.dev/polar-com/apis/polar-accesslink-api/changes/v3/exercises/:exerciseId/get.md)

---

[API](https://skmtc.dev/polar-com/apis/polar-accesslink-api.md) - [All operations](https://skmtc.dev/polar-com/apis/polar-accesslink-api/llms.txt) - [OpenAPI document](https://skmtc.dev/polar-com/apis/polar-accesslink-api/revisions/18ce96365320?raw)
