Polar Daily activity API

This resource allows partners to access their users' daily activity data. Webhooks are used to notify partners when new data is available.

OpenAPI Specification

polar-daily-activity-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  description: Polar AccessLink API documentation
  version: v3
  title: Polar AccessLink Cardio load Daily activity 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: Daily activity
  description: This resource allows partners to access their users' daily activity data. Webhooks are used to notify partners when new data is available.
paths:
  /v3/users/activities:
    get:
      tags:
      - Daily activity
      summary: List activities
      description: List users activities available in AccessLink. When no date range is given, activities from the last 28 days are returned. When `from` is given, activities for the specified date range are returned. From date cannot be older than 365 days from today and the maximum range between from and to is 28 days.
      operationId: listActivitiesWithoutTransaction
      parameters:
      - name: from
        in: query
        description: Start date in format YYYY-MM-DD. If not given, defaults to 28 days ago.
        required: false
        schema:
          type: string
          format: date
          example: '2023-01-01'
      - name: to
        in: query
        description: End date in format YYYY-MM-DD. If not given, defaults to today.
        required: false
        schema:
          type: string
          format: date
          example: '2023-01-28'
      - name: steps
        in: query
        description: include steps samples for activity summary.
        required: false
        schema:
          type: boolean
      - name: activity_zones
        in: query
        description: include activity zones samples for activity summary.
        required: false
        schema:
          type: boolean
      - name: inactivity_stamps
        in: query
        description: include inactivity stamps for activity summary.
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: List of extended daily activities with all samples.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/array-of-activity-summary-with-all-samples'
        '400':
          description: Invalid or too old date. Cannot be older than 365 days.
        '401':
          description: Unauthorized.
        '403':
          description: User has not accepted all mandatory consents.
      security:
      - OAuth2:
        - accesslink.read_all
  /v3/users/activities/{date}:
    get:
      tags:
      - Daily activity
      summary: Get activity for given date
      description: Get users activity for given date. Date cannot be older than 365 days from today.
      operationId: getActivityWithoutTransaction
      parameters:
      - name: date
        in: path
        description: Date in format YYYY-MM-DD.
        required: true
        schema:
          type: string
          format: date
      - name: steps
        in: query
        schema:
          type: boolean
        description: include steps samples for activity summary.
      - name: activity_zones
        in: query
        schema:
          type: boolean
        description: include activity zones samples for activity summary.
      - name: inactivity_stamps
        in: query
        schema:
          type: boolean
        description: include inactivity stamps for activity summary.
      responses:
        '200':
          description: Extended activity summaries with all samples.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/activity-summary-with-all-samples'
        '204':
          description: No content when no activity found for given date.
        '403':
          description: User has not accepted all mandatory consents.
        '401':
          description: Unauthorized.
        '400':
          description: Invalid or too old date. Cannot be older than 365 days.
      security:
      - OAuth2:
        - accesslink.read_all
  /v3/users/activities/samples:
    get:
      tags:
      - Daily activity
      summary: List activity samples
      description: List users activity samples available in AccessLink. When no date range is given, activity samples from the last 28 days are returned. When `from` is given, activity samples for the specified date range are returned. From date cannot be older than 365 days from today and the maximum range between from and to is 28 days.
      operationId: listActivitySamplesWithoutTransaction
      parameters:
      - name: from
        in: query
        description: Start date in format YYYY-MM-DD. If not given, defaults to 28 days ago.
        required: false
        schema:
          type: string
          format: date
          example: '2023-01-01'
      - name: to
        in: query
        description: End date in format YYYY-MM-DD. If not given, defaults to today.
        required: false
        schema:
          type: string
          format: date
          example: '2023-01-31'
      responses:
        '200':
          description: List of users activity samples.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/array-of-activity-day-with-samples'
        '400':
          description: Invalid or too old date. Cannot be older than 365 days.
        '401':
          description: Unauthorized.
        '403':
          description: User has not accepted all mandatory consents.
      security:
      - OAuth2:
        - accesslink.read_all
  /v3/users/activities/samples/{date}:
    get:
      tags:
      - Daily activity
      summary: Get activity samples for given date
      description: Get users activity samples for given date. Date cannot be older than 365 days from today.
      operationId: getActivitySamplesWithoutTransaction
      parameters:
      - name: date
        in: path
        description: Date in format YYYY-MM-DD.
        required: true
        schema:
          type: string
          format: date
      responses:
        '200':
          description: Activity samples for given date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/activity-day-with-samples'
        '204':
          description: No content when no activity samples found for given date.
        '403':
          description: User has not accepted all mandatory consents.
        '401':
          description: Unauthorized.
        '400':
          description: Invalid or too old date. Cannot be older than 365 days.
      security:
      - OAuth2:
        - accesslink.read_all
components:
  schemas:
    activity-zone-samples2:
      type: object
      properties:
        samples:
          type: array
          description: List of activity zones samples.
          items:
            $ref: '#/components/schemas/activity-zone-sample2'
    array-of-activity-day-with-samples:
      type: array
      items:
        $ref: '#/components/schemas/activity-day-with-samples'
      description: Array of activity days with samples. Each item in the array contains a summary of the activity for a specific day, including all samples.
      xml:
        name: activity-day-with-samples
    activity-summary-with-all-samples:
      type: object
      properties:
        start_time:
          type: string
          example: '2025-08-13T08:15:30'
          description: Start time of the activity in UTC
        end_time:
          type: string
          example: '2025-08-13T23:59:59'
          description: End time of the activity in UTC
        active_duration:
          type: string
          example: PT3H11M
          description: The duration of the activity in ISO8601 format
        inactive_duration:
          type: string
          example: PT18H23M30S
          description: The duration of the inactivity in ISO8601 format
        daily_activity:
          type: number
          format: float
          example: 89.1
          description: Daily activity score / percentage
        calories:
          type: integer
          format: int32
          example: 2500
          description: Total calories burned during the day
        active_calories:
          type: integer
          format: int32
          example: 1500
          description: Active calories burned during the day, excluding BMR
        steps:
          type: integer
          format: int32
          example: 8823
          description: Total number of steps taken during the day
        inactivity_alert_count:
          type: integer
          format: int32
          example: 1
          description: Number of inactivity alerts received during the day
        distance_from_steps:
          type: number
          format: float
          example: 4590.53
          description: Distance covered based on steps taken, in meters
        samples:
          $ref: '#/components/schemas/activity-day-with-samples'
      description: Activity days with all samples.
      xml:
        name: activity-summary-with-all-samples
    activity-step-sample2:
      type: object
      properties:
        steps:
          type: integer
          format: int32
          description: Number of steps in sample segment.
        timestamp:
          type: string
          example: 2025-08-14T00:02
          description: Start time of sample segment.
      description: Model contains number of steps in certain time period.
    activity-steps2:
      type: object
      properties:
        interval_ms:
          type: integer
          format: int32
          description: Sample interval in milliseconds.
        total_steps:
          type: integer
          format: int32
          description: Total number of steps in activity day.
        samples:
          type: array
          items:
            $ref: '#/components/schemas/activity-step-sample2'
          description: List of individual step sample objects.
      description: Activity step samples for a day. Contains total number of steps and list of individual step samples with time and number of steps in that time period. Note that consecutive repeated (same steps count) samples are filtered out from the list to reduce the payload size. If time between two consecutive samples is larger than interval_ms, one or more samples have been filtered out.
    array-of-activity-summary-with-all-samples:
      type: array
      items:
        $ref: '#/components/schemas/activity-summary-with-all-samples'
      description: Array of activity summaries with all samples. Each item in the array contains a summary of the activity for a specific day, including all samples.
      xml:
        name: activity-summary-with-all-samples
    activity-zone-sample2:
      type: object
      properties:
        zone:
          type: string
          description: Activity zone type.
          enum:
          - SEDENTARY
          - LIGHT
          - SLEEP
          - MODERATE
          - VIGOROUS
        timestamp:
          type: string
          example: '2025-08-14T00:08:30'
    activity-day-with-samples:
      type: object
      properties:
        date:
          type: string
          example: '2022-02-10'
          description: Activity day date
        steps:
          $ref: '#/components/schemas/activity-steps2'
        activity_zones:
          $ref: '#/components/schemas/activity-zone-samples2'
        inactivity_stamps:
          type: array
          items:
            type: object
            properties:
              stamp:
                type: string
                example: 2022-02-10T16:04
                description: time of inactivity stamp
      description: Activity day samples.
      xml:
        name: activity-day-with-samples
  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