Fitbit Activity API

Read and write user activity, exercise logs, daily activity summaries (steps, distance, calories, floors, elevation), activity goals, the Fitbit exercise catalog, and Active Zone Minutes (AZM) time series. Supports per-day, per-period, and per-date-range queries.

Fitbit Activity API is one of 12 APIs that Fitbit publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include Activity, Fitness, Steps, Active Zone Minutes, and Wearable. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, a JSON-LD context, 1 Naftiko capability spec, and 1 JSON Schema.

OpenAPI Specification

fitbit-activity-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Fitbit Activity API
  description: |
    Read and write user activity, exercise, and Active Zone Minutes (AZM) data on
    Fitbit. The Activity API exposes daily activity summaries (steps, distance,
    calories, floors, elevation, activity minutes), per-activity logs, lifetime
    totals, activity goals, the user's exercise type catalog, and Active Zone
    Minutes time series. Time-series endpoints accept a base-date and either an
    end-date or a period (1d, 7d, 30d, 1w, 1m, 3m, 6m, 1y).
  version: '1'
  contact:
    name: Fitbit Developer
    url: https://dev.fitbit.com/build/reference/web-api/activity/
servers:
- url: https://api.fitbit.com
  description: Fitbit Web API
security:
- OAuth2:
  - activity
paths:
  /1/user/{user-id}/activities/date/{date}.json:
    get:
      summary: Get Daily Activity Summary
      description: Retrieves a summary and list of a user's activities and activity log entries for a given day.
      operationId: getDailyActivitySummary
      parameters:
      - $ref: '#/components/parameters/UserId'
      - name: date
        in: path
        required: true
        description: The date in the format YYYY-MM-DD or 'today'.
        schema:
          type: string
      responses:
        '200':
          description: Daily activity summary.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityDailySummary'
  /1/user/{user-id}/activities.json:
    post:
      summary: Log Activity
      description: Logs an activity or creates a manual activity log entry for the user.
      operationId: logActivity
      parameters:
      - $ref: '#/components/parameters/UserId'
      - name: activityId
        in: query
        schema:
          type: integer
        description: The activity ID.
      - name: activityName
        in: query
        schema:
          type: string
      - name: manualCalories
        in: query
        schema:
          type: integer
      - name: startTime
        in: query
        required: true
        schema:
          type: string
      - name: durationMillis
        in: query
        required: true
        schema:
          type: integer
      - name: date
        in: query
        required: true
        schema:
          type: string
          format: date
      - name: distance
        in: query
        schema:
          type: number
      - name: distanceUnit
        in: query
        schema:
          type: string
      responses:
        '201':
          description: Activity log entry created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityLog'
  /1/user/{user-id}/activities/{activity-log-id}.json:
    delete:
      summary: Delete Activity Log
      description: Deletes a user's activity log entry with the given ID.
      operationId: deleteActivityLog
      parameters:
      - $ref: '#/components/parameters/UserId'
      - name: activity-log-id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: Activity log deleted.
  /1/user/{user-id}/activities/list.json:
    get:
      summary: Get Activity Log List
      description: Retrieves a list of a user's activity log entries before or after a given day with offset, limit, and sort order.
      operationId: getActivityLogList
      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
          maximum: 100
      - name: offset
        in: query
        schema:
          type: integer
      responses:
        '200':
          description: Paginated activity log list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityLogList'
  /1/user/{user-id}/activities/goals/{period}.json:
    get:
      summary: Get Activity Goals
      description: Retrieves a user's current daily or weekly activity goals.
      operationId: getActivityGoals
      parameters:
      - $ref: '#/components/parameters/UserId'
      - name: period
        in: path
        required: true
        schema:
          type: string
          enum: [daily, weekly]
      responses:
        '200':
          description: Activity goals.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityGoals'
  /1/user/{user-id}/activities/active-zone-minutes/date/{date}/{period}.json:
    get:
      summary: Get AZM Time Series By Date
      description: Retrieves the user's Active Zone Minutes time series data for the given date and period.
      operationId: getAzmTimeSeriesByDate
      parameters:
      - $ref: '#/components/parameters/UserId'
      - name: date
        in: path
        required: true
        schema:
          type: string
      - name: period
        in: path
        required: true
        schema:
          type: string
          enum: [1d, 7d, 30d, 1w, 1m, 3m, 6m, 1y]
      responses:
        '200':
          description: Active Zone Minutes time series.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AzmTimeSeries'
  /1/user/{user-id}/activities/steps/date/{base-date}/{end-date}.json:
    get:
      summary: Get Activity Time Series By Date Range
      description: Retrieves activity (steps) data over a date range for the user.
      operationId: getActivityTimeSeriesByDateRange
      parameters:
      - $ref: '#/components/parameters/UserId'
      - name: base-date
        in: path
        required: true
        schema:
          type: string
      - name: end-date
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Steps time series.
          content:
            application/json:
              schema:
                type: object
components:
  parameters:
    UserId:
      name: user-id
      in: path
      required: true
      description: The user's encoded ID. Use '-' for the currently authorized user.
      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:
            activity: Activity and exercise data
            heartrate: Heart rate data
            location: GPS and other location data
            nutrition: Food and nutrition data
            profile: User profile
            settings: Account settings
            sleep: Sleep data
            social: Friends and leaderboard data
            weight: Weight, BMI, and body fat data
            oxygen_saturation: SpO2 data
            respiratory_rate: Breathing rate data
            temperature: Skin and core body temperature data
            electrocardiogram: ECG readings
            irregular_rhythm_notifications: IRN data
            cardio_fitness: Cardio fitness (VO2 Max) data
  schemas:
    ActivityDailySummary:
      type: object
      properties:
        activities:
          type: array
          items:
            $ref: '#/components/schemas/ActivityLog'
        goals:
          $ref: '#/components/schemas/ActivityGoals'
        summary:
          type: object
          properties:
            activeScore:
              type: integer
            activityCalories:
              type: integer
            caloriesOut:
              type: integer
            steps:
              type: integer
            distances:
              type: array
              items:
                type: object
                properties:
                  activity:
                    type: string
                  distance:
                    type: number
            fairlyActiveMinutes:
              type: integer
            lightlyActiveMinutes:
              type: integer
            sedentaryMinutes:
              type: integer
            veryActiveMinutes:
              type: integer
            floors:
              type: integer
            elevation:
              type: number
            heartRateZones:
              type: array
              items:
                type: object
            restingHeartRate:
              type: integer
    ActivityLog:
      type: object
      properties:
        activityId:
          type: integer
        activityParentId:
          type: integer
        calories:
          type: integer
        description:
          type: string
        distance:
          type: number
        duration:
          type: integer
        hasStartTime:
          type: boolean
        isFavorite:
          type: boolean
        logId:
          type: integer
          format: int64
        name:
          type: string
        startDate:
          type: string
          format: date
        startTime:
          type: string
        steps:
          type: integer
    ActivityLogList:
      type: object
      properties:
        activities:
          type: array
          items:
            $ref: '#/components/schemas/ActivityLog'
        pagination:
          type: object
          properties:
            beforeDate:
              type: string
            limit:
              type: integer
            next:
              type: string
            offset:
              type: integer
            previous:
              type: string
            sort:
              type: string
    ActivityGoals:
      type: object
      properties:
        goals:
          type: object
          properties:
            activeMinutes:
              type: integer
            caloriesOut:
              type: integer
            distance:
              type: number
            floors:
              type: integer
            steps:
              type: integer
            activeZoneMinutes:
              type: integer
    AzmTimeSeries:
      type: object
      properties:
        activities-active-zone-minutes:
          type: array
          items:
            type: object
            properties:
              dateTime:
                type: string
              value:
                type: object
                properties:
                  activeZoneMinutes:
                    type: integer
                  fatBurnActiveZoneMinutes:
                    type: integer
                  cardioActiveZoneMinutes:
                    type: integer
                  peakActiveZoneMinutes:
                    type: integer