Polar Cardio load API

Cardio load is based on training impulse calculation (TRIMP), a commonly accepted and scientifically proven method to quantify training load. Your Cardio load value tells you how much strain your training session put on your cardiovascular system. The higher the Cardio load, the more strenuous the training session was for the cardiovascular system. Cardio load is calculated after every workout from your heart rate data and session duration. For more detailed information please check [cardio load](https://support.polar.com/e_manuals/unite/polar-unite-user-manual-english/cardio-load.htm).

Operations 5

GET /v3/users/cardio-load List cardio loads
GET /v3/users/cardio-load/{date} Get cardio load by date
GET /v3/users/cardio-load/date Get cardio load by date range
GET /v3/users/cardio-load/period/days/{days} Get historical data by days
GET /v3/users/cardio-load/period/months/{months} Get historical data by months

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/polar-cardio-load-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

polar-cardio-load-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Polar AccessLink API documentation
  version: v3
  title: Polar AccessLink Cardio load API
  contact:
    name: Support
    url: https://www.polar.com/accesslink
    email: b2bhelpdesk@polar.com
  license:
    name: Polar Electro AccessLink Limited License Agreement
    url: https://www.polar.com/en/legal/polar-api-agreement
servers:
- url: https://www.polaraccesslink.com/
tags:
- name: Cardio load
  description: Cardio load is based on training impulse calculation (TRIMP), a commonly accepted and scientifically proven method to quantify training load. Your Cardio load value tells you how much strain your training session put on your cardiovascular system.  The higher the Cardio load, the more strenuous the training session was for the cardiovascular system.  Cardio load is calculated after every workout from your heart rate data and session duration. For more detailed information please check [cardio load](https://support.polar.com/e_manuals/unite/polar-unite-user-manual-english/cardio-load.htm).
paths:
  /v3/users/cardio-load:
    get:
      tags:
      - Cardio load
      summary: List cardio loads
      description: Returns cardio load data for the last 28 days. The response list contains cardio load objects for every day in the range, even if values cannot be calculated — in that case the cardio load status is represented as LOAD_STATUS_NOT_AVAILABLE.
      responses:
        '200':
          description: List of user cardio loads.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/cardio-load-schema'
        '401':
          description: Unauthorized.
        '403':
          description: User has not accepted all mandatory consents.
      security:
      - OAuth2:
        - accesslink.read_all
  /v3/users/cardio-load/{date}:
    get:
      tags:
      - Cardio load
      summary: Get cardio load by date
      description: Returns cardio load data for selected date.
      parameters:
      - name: date
        in: path
        description: 'Date as ISO-8601 date string, example: "2022-01-01"'
        required: true
        schema:
          type: string
          format: date
      responses:
        '200':
          description: Request was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/cardio-load-schema'
        '400':
          description: Invalid request.
        '401':
          description: Unauthorized.
        '403':
          description: User has not accepted all mandatory consents.
      security:
      - OAuth2:
        - accesslink.read_all
  /v3/users/cardio-load/date:
    get:
      tags:
      - Cardio load
      summary: Get cardio load by date range
      description: Returns cardio load data for selected date range. The response list contains cardio load objects for every day between range even if the cardio load values cannot be calculated, in this case the cardio load status is represented as LOAD_STATUS_NOT_AVAILABLE.
      parameters:
      - name: from
        in: query
        description: 'Inclusive as ISO-8601 date string, example: "2022-01-01"'
        required: true
        schema:
          type: string
          format: date
      - name: to
        in: query
        description: 'Inclusive as ISO-8601 date string, example: "2022-01-01"'
        required: true
        schema:
          type: string
          format: date
      responses:
        '200':
          description: Request was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/cardio-load-schema'
        '400':
          description: Invalid request.
        '401':
          description: Unauthorized.
        '403':
          description: User has not accepted all mandatory consents.
      security:
      - OAuth2:
        - accesslink.read_all
  /v3/users/cardio-load/period/days/{days}:
    get:
      tags:
      - Cardio load
      summary: Get historical data by days
      description: Returns historical cardio load data for selected period of days counting from current date.
      parameters:
      - name: days
        in: path
        description: Period of days.
        required: true
        schema:
          type: integer
          minimum: 1
          maximum: 180
      responses:
        '200':
          description: Request was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/cardio-load-schema'
        '400':
          description: Invalid request.
        '401':
          description: Unauthorized.
        '403':
          description: User has not accepted all mandatory consents.
      security:
      - OAuth2:
        - accesslink.read_all
  /v3/users/cardio-load/period/months/{months}:
    get:
      tags:
      - Cardio load
      parameters:
      - name: months
        in: path
        description: Period of months.
        required: true
        schema:
          type: integer
          minimum: 1
          maximum: 6
      summary: Get historical data by months
      description: Returns historical cardio load data for selected period of months counting from current date.
      responses:
        '200':
          description: Request was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/cardio-load-schema'
        '400':
          description: Invalid request.
        '401':
          description: Unauthorized.
        '403':
          description: User has not accepted all mandatory consents.
      security:
      - OAuth2:
        - accesslink.read_all
components:
  schemas:
    cardio-load-status-enum:
      description: Text representation of cardio load status.
      type: string
      enum:
      - LOAD_STATUS_NOT_AVAILABLE
      - DETRAINING
      - MAINTAINING
      - PRODUCTIVE
      - OVERREACHING
      - RECOVERY_AFTER_OVERREACHING
      - PRODUCTIVE_DROPPED_FROM_OVERREACHING
      - PRODUCTIVE_ALMOST_OVERREACHING
      - UNRECOGNIZED
    cardio-load-schema:
      description: List of cardio loads.
      type: array
      items:
        $ref: '#/components/schemas/cardio-load'
    cardio-load:
      description: Cardio load model.
      properties:
        date:
          type: string
          format: date
          description: Date in format YYYY-MM-DD.
          example: '2023-01-01'
        cardio_load_status:
          $ref: '#/components/schemas/cardio-load-status-enum'
        cardio_load:
          type: number
          format: float
          example: 0.2
          description: Cardio load (training impulse, TRIMP) shows your cardiac response to a training session.
        strain:
          type: number
          format: float
          example: 0.3
          description: Strain shows how much you have strained yourself with training lately. It shows your average daily load from the past 7 days.
        tolerance:
          type: number
          format: float
          example: 0.4
          description: Tolerance describes how prepared you are to endure cardio training. It shows your average daily load from the past 28 days.
        cardio_load_ratio:
          type: number
          format: float
          example: 0.1
          description: Ratio between strain and tolerance.
        cardio_load_level:
          $ref: '#/components/schemas/cardio-load-levels'
    cardio-load-levels:
      description: Cardio load levels indicate how hard a training session was compared to your session average from the past 90 days.
      type: object
      properties:
        very_low:
          type: number
          format: float
          example: 0.1
        low:
          type: number
          format: float
          example: 0.1
        medium:
          type: number
          format: float
          example: 0.1
        high:
          type: number
          format: float
          example: 0.1
        very-high:
          type: number
          format: float
          example: 0.1
  securitySchemes:
    Basic:
      type: http
      scheme: basic
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://flow.polar.com/oauth2/authorization
          tokenUrl: https://polarremote.com/v2/oauth2/token
          scopes:
            accesslink.read_all: Allows read access to user's data