Fitbit ECG and Irregular Rhythm Notifications API

Access Electrocardiogram (ECG) readings recorded on Fitbit Sense, Sense 2, and Charge 5/6 devices, and access Irregular Rhythm Notifications (IRN) including alerts and feature enrollment. ECG readings include waveform samples, sampling frequency, lead number, and the algorithm's result classification (Normal Sinus Rhythm, Atrial Fibrillation, Inconclusive).

Fitbit ECG and Irregular Rhythm Notifications API is one of 12 APIs that Fitbit publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include ECG, Electrocardiogram, Irregular Rhythm Notifications, Atrial Fibrillation, and Cardiac Health. The published artifact set on APIs.io includes API documentation and an OpenAPI specification.

OpenAPI Specification

fitbit-ecg-irn-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Fitbit ECG and Irregular Rhythm Notifications API
  description: |
    Access Electrocardiogram (ECG) readings and Irregular Rhythm Notifications
    (IRN) data collected on Fitbit Sense, Sense 2, Charge 5/6, and other
    supported devices. ECG readings produce waveform data classified by the
    device algorithm. IRN data captures the user's enrollment, alerts, and
    feature engagement.
  version: '1'
  contact:
    name: Fitbit Developer
    url: https://dev.fitbit.com/build/reference/web-api/electrocardiogram/
servers:
- url: https://api.fitbit.com
security:
- OAuth2:
  - electrocardiogram
  - irregular_rhythm_notifications
paths:
  /1/user/{user-id}/ecg/list.json:
    get:
      summary: Get ECG Log List
      description: Returns a list of a user's ECG log entries before or after a given day with offset, limit, and sort order.
      operationId: getEcgLogList
      parameters:
      - $ref: '#/components/parameters/UserId'
      - name: beforeDate
        in: query
        schema:
          type: string
      - name: afterDate
        in: query
        schema:
          type: string
      - name: sort
        in: query
        schema:
          type: string
          enum: [asc, desc]
      - name: limit
        in: query
        schema:
          type: integer
      - name: offset
        in: query
        schema:
          type: integer
      responses:
        '200':
          description: ECG log list.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ecgReadings:
                    type: array
                    items:
                      $ref: '#/components/schemas/EcgReading'
  /1/user/{user-id}/irn/alerts/list.json:
    get:
      summary: Get IRN Alerts List
      description: Returns the user's Irregular Rhythm Notification alerts list.
      operationId: getIrnAlertsList
      parameters:
      - $ref: '#/components/parameters/UserId'
      - name: beforeDate
        in: query
        schema:
          type: string
      - name: afterDate
        in: query
        schema:
          type: string
      - name: sort
        in: query
        schema:
          type: string
      - name: limit
        in: query
        schema:
          type: integer
      - name: offset
        in: query
        schema:
          type: integer
      responses:
        '200':
          description: IRN alerts list.
  /1/user/{user-id}/irn/profile.json:
    get:
      summary: Get IRN Profile
      description: Returns the user's IRN profile and enrollment status.
      operationId: getIrnProfile
      parameters:
      - $ref: '#/components/parameters/UserId'
      responses:
        '200':
          description: IRN profile.
components:
  parameters:
    UserId:
      name: user-id
      in: path
      required: true
      schema:
        type: string
        default: '-'
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://www.fitbit.com/oauth2/authorize
          tokenUrl: https://api.fitbit.com/oauth2/token
          scopes:
            electrocardiogram: ECG readings
            irregular_rhythm_notifications: IRN data
  schemas:
    EcgReading:
      type: object
      properties:
        startTime:
          type: string
        averageHeartRate:
          type: integer
        resultClassification:
          type: string
          enum: ['Normal Sinus Rhythm', 'Atrial Fibrillation', 'Inconclusive', 'Inconclusive High', 'Inconclusive Low']
        waveformSamples:
          type: array
          items:
            type: number
        samplingFrequencyHz:
          type: string
        scalingFactor:
          type: integer
        numberOfWaveformSamples:
          type: integer
        leadNumber:
          type: integer
        featureVersion:
          type: string
        deviceName:
          type: string
        firmwareVersion:
          type: string