Polar Team API

Endpoints for getting teams and team details.

OpenAPI Specification

polar-team-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  description: Polar AccessLink API documentation
  version: v3
  title: Polar AccessLink Cardio load Team 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: Team
  description: Endpoints for getting teams and team details.
paths:
  /v1/teams:
    get:
      tags:
      - Team
      summary: Get teams.
      parameters:
      - name: pagination
        description: Pagination parameters
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/paginationQuery'
      responses:
        '200':
          description: List of teams.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    description: List of teams.
                    items:
                      $ref: '#/components/schemas/team'
                  page:
                    $ref: '#/components/schemas/paginationResponse'
      security:
      - OAuth2:
        - team_read
  /v1/teams/{team_id}:
    get:
      tags:
      - Team
      summary: Get team details.
      parameters:
      - name: team_id
        in: path
        description: Team id to get.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Response containing team details.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/teamDetails'
        '404':
          description: Given team_id doesn't match any of user's teams.
      security:
      - OAuth2:
        - team_read
  /v1/teams/{team_id}/sport-profiles:
    get:
      tags:
      - Team
      summary: Get team sport profiles.
      parameters:
      - name: team_id
        in: path
        description: Team ID for retrieving the team's sport profiles.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Response containing team sport profiles.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/teamSportProfile'
        '404':
          description: Given team_id doesn't match any of user's teams.
      security:
      - OAuth2:
        - team_read
components:
  schemas:
    teamDetails:
      type: object
      description: Detailed team data.
      properties:
        id:
          type: string
          example: wMYz6L4w
          description: Team id
        name:
          type: string
          example: Team1
          description: Team name
        organisation:
          type: string
          example: Organisation1
          description: Organisation name
        created:
          type: string
          description: Time when the team is created
          format: date-time
          example: '2017-04-13T21:06:58Z'
        modified:
          type: string
          description: Last time modified
          format: date-time
          example: '2017-04-13T21:06:58Z'
        players:
          type: array
          description: Team players
          items:
            $ref: '#/components/schemas/player'
        sport_profiles:
          type: array
          description: Team sport profiles
          items:
            $ref: '#/components/schemas/teamSportProfile'
    paginationQuery:
      type: object
      description: Endpoints that return multiple items are paginated to 20 items by default. To request next page, use page parameter in request. Total number of elements and pages are returned in response in `page` property, see [paginationResponse](#tocSpaginationresponse).
      properties:
        page:
          type: integer
          example: 3
          description: Page number, starting from 0
        per_page:
          type: integer
          example: 20
          description: Number of elements to be returned per page. Value must be between 1 and 100.
      example: ?page=3&per_page=20
    sportProfileAccelerationZones:
      description: Acceleration zones for the sport profile
      properties:
        free_acceleration_zones:
          type: boolean
          description: Free acceleration zones in use
          example: true
        acceleration_zones:
          type: array
          description: List of four acceleration zone thresholds from lowest to highest.
          example:
          - 0.5
          - 1.0
          - 2.0
          - 3.0
          items:
            type: number
        deceleration_zones:
          type: array
          description: List of four deceleration zone thresholds from lowest to highest.
          example:
          - -0.5
          - -1.0
          - -2.0
          - -3.0
          items:
            type: number
    team:
      type: object
      description: Basic info of team used in listing.
      properties:
        id:
          type: string
          example: wMYz6L4w
          description: Team id
        name:
          type: string
          example: Team1
          description: Team name
        organisation:
          type: string
          example: Organisation1
          description: Organisation name
        created:
          type: string
          description: Time when the team is created
          format: date-time
          example: '2017-04-13T21:06:58Z'
        modified:
          type: string
          description: Last time modified
          format: date-time
          example: '2017-04-13T21:06:58Z'
    paginationResponse:
      type: object
      description: Pagination info in response. Model contains info about response element count and paging.
      properties:
        per_page:
          type: integer
          example: 20
          description: Items per page
        total_elements:
          type: integer
          example: 2
          description: Total number of items
        page_number:
          type: integer
          example: 0
          description: Number of the current page
        total_pages:
          type: integer
          example: 1
          description: Total number of pages
    sportProfileZone:
      description: Single sport profile zone
      properties:
        lower_limit:
          type: number
          description: Lower limit of the zone (inclusive)
        higher_limit:
          type: number
          description: Higher limit of the zone (exclusive)
    sportProfileZones:
      description: Sport zones created for the sport profile
      properties:
        heart_rate:
          type: array
          description: Heart rate zones in beats per minute if sport profile has them.
          example:
          - lower_limit: 100.0
            higher_limit: 120.0
          - lower_limit: 120.0
            higher_limit: 140.0
          - lower_limit: 140.0
            higher_limit: 160.0
          - lower_limit: 160.0
            higher_limit: 180.0
          - lower_limit: 180.0
            higher_limit: 200.0
          items:
            $ref: '#/components/schemas/sportProfileZone'
        speed:
          type: array
          description: Speed zones in kilometers per hour if sport profile has them.
          example:
          - lower_limit: 10.0
            higher_limit: 12.0
          - lower_limit: 12.0
            higher_limit: 15.0
          - lower_limit: 15.0
            higher_limit: 17.1
          - lower_limit: 17.1
            higher_limit: 20.0
          - lower_limit: 20.0
            higher_limit: 399.0
          items:
            $ref: '#/components/schemas/sportProfileZone'
        power:
          type: array
          description: Power zones in watts if sport profile has them.
          example:
          - lower_limit: 70.0
            higher_limit: 85.0
          - lower_limit: 85.0
            higher_limit: 100.0
          - lower_limit: 100.0
            higher_limit: 130.0
          - lower_limit: 130.0
            higher_limit: 180.0
          - lower_limit: 180.0
            higher_limit: 400.0
          items:
            $ref: '#/components/schemas/sportProfileZone'
    player:
      type: object
      description: Player data.
      properties:
        player_id:
          type: string
          example: ZmozZxkr
          description: Player id
        player_number:
          type: integer
          format: int32
          example: 12
          description: Player number
        role:
          type: string
          example: Midfielder
          description: Player role
        first_name:
          type: string
          example: John
          description: Player first name
        last_name:
          type: string
          example: Doe
          description: Player last name
    teamSportProfile:
      type: object
      description: Team sport profile
      properties:
        sport:
          type: string
          description: Sport type
          example: SOCCER
        created:
          type: string
          description: Time when the sport profile was created
          format: date-time
          example: '2025-05-16T11:52:54Z'
        modified:
          type: string
          description: Time when the sport profile was last modified
          format: date-time
          example: '2025-05-16T11:52:54Z'
        sprint_threshold_type:
          type: string
          description: Sprint threshold type
          example: ACCELERATION
          enum:
          - ACCELERATION
          - SPEED
        sprint_threshold:
          type: number
          description: Sprint threshold
          example: 2.8
        gps_state:
          type: string
          description: GPS state
          example: ON_NORMAL
          enum:
          - false
          - ON_NORMAL
          - ON_LONG
          - GPS_ON_10_HZ
          - GPS_ON_MEDIUM
        muscle_load_setting:
          type: string
          description: Is muscle load enabled
          example: true
          enum:
          - false
          - true
        heart_rate_zone_type:
          type: string
          description: Heart rate zone type
          example: THRESHOLD
          enum:
          - DEFAULT
          - FREE
          - THRESHOLD
        speed_zone_type:
          type: string
          description: Speed zone type
          example: FREE
          enum:
          - DEFAULT
          - FREE
        power_zone_type:
          type: string
          description: Power zone type
          example: DEFAULT
          enum:
          - DEFAULT
          - FREE
        zones:
          $ref: '#/components/schemas/sportProfileZones'
        acceleration_zones:
          $ref: '#/components/schemas/sportProfileAccelerationZones'
  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