---
title: "Get exercise summary"
method: GET
path: "/v3/users/{user-id}/exercise-transactions/{transaction-id}/exercises/{exercise-id}"
tags: ["Exercises (deprecated)"]
---

# Get exercise summary

`GET /v3/users/{user-id}/exercise-transactions/{transaction-id}/exercises/{exercise-id}`

## Request

- Base URL: `https://www.polaraccesslink.com`
- URL: `https://www.polaraccesslink.com/v3/users/{user-id}/exercise-transactions/{transaction-id}/exercises/{exercise-id}`
- 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/users/:user-id/exercise-transactions/:transaction-id/exercises/:exercise-id/get.ts> (a function with typed inputs; its response is checked against the schema)

Retrieve training session summary data

## Path parameters

- `user-id` integer, required
- `transaction-id` integer, required
- `exercise-id` integer, required

## Response `200`

Exercise summary.

- Exercise: Training session summary data
  - `id` integer: 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
  - `transaction-id` integer: Id of the exercise-transaction this training was transferred in
  - `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.
  - `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

- `204`: No content when there is no data available.
- `403`: User has not accepted all mandatory consents.

## Changes

- **2026-02-07** `f197848bba31`: 2 info
  - api tag `Exercises (deprecated)` added
  - api tag `Training data` removed
- **2025-06-04** `5ef2cea678a2`: 9 info
  - added the non-success response with the status `403`
  - added the optional property `device-id` to the response with the `200` status (media type: application/json)
  - added the optional property `device-id` to the response with the `200` status (media type: application/xml)
  - added the optional property `running-index` to the response with the `200` status (media type: application/json)
  - …5 more
- **2021-02-25** `425d64c3dd59`: 6 info
  - added the optional property `carbohydrate-percentage` to the response with the `200` status (media type: application/json)
  - added the optional property `carbohydrate-percentage` to the response with the `200` status (media type: application/xml)
  - added the optional property `fat-percentage` to the response with the `200` status (media type: application/json)
  - added the optional property `fat-percentage` to the response with the `200` status (media type: application/xml)
  - …2 more

[Operation history](https://skmtc.dev/polar-com/apis/polar-accesslink-api/changes/v3/users/:user-id/exercise-transactions/:transaction-id/exercises/:exercise-id/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)
