---
title: "Get Timeseries"
method: GET
path: "/api/v1/users/{user_id}/timeseries"
tags: ["External: Timeseries"]
---

# Get Timeseries

`GET /api/v1/users/{user_id}/timeseries`

Returns granular time series data (biometrics or activity).

## Path parameters

- `user_id` string, uuid, required

## Query parameters

- `start_time` string, date-time, required — ISO 8601 datetime (e.g. `2023-11-07T05:31:56Z`) or Unix timestamp in seconds. Date-only strings (e.g. `2023-11-07`) are also accepted and normalized to midnight UTC.
- `end_time` string, date-time, required — ISO 8601 datetime (e.g. `2023-11-07T05:31:56Z`) or Unix timestamp in seconds. Date-only strings (e.g. `2023-11-07`) are also accepted and normalized to midnight UTC.
- `types` SeriesType[]
- `resolution` 'raw' | '1min' | '5min' | '15min' | '1hour'
- `cursor` string, nullable
- `limit` integer

## Headers

- `X-Open-Wearables-API-Key` string, nullable

## Response `200`

Successful Response

- PaginatedResponseTimeSeriesSample
  - `data` TimeSeriesSample[], required
    - `timestamp` string, date-time, required
    - `zone_offset` string, nullable — Timezone offset in the format '+01:00' or '-05:30'
    - `type` 'heart_rate' | 'resting_heart_rate' | 'heart_rate_variability_sdnn' | 'heart_rate_recovery_one_minute' | 'walking_heart_rate_average' | 'heart_rate_variability_rmssd' | 'oxygen_saturation' | 'blood_glucose' | 'blood_pressure_systolic' | 'blood_pressure_diastolic' | 'respiratory_rate' | 'sleeping_breathing_disturbances' | 'breathing_disturbance_index' | 'blood_alcohol_content' | 'peripheral_perfusion_index' | 'forced_vital_capacity' | 'forced_expiratory_volume_1' | 'peak_expiratory_flow_rate' | 'height' | 'weight' | 'body_fat_percentage' | 'body_mass_index' | 'lean_body_mass' | 'body_temperature' | 'skin_temperature' | 'skin_temperature_deviation' | 'skin_temperature_trend_deviation' | 'waist_circumference' | 'body_fat_mass' | 'skeletal_muscle_mass' | 'vo2_max' | 'six_minute_walk_test_distance' | 'cardiovascular_age' | 'steps' | 'energy' | 'basal_energy' | 'stand_time' | 'exercise_time' | 'physical_effort' | 'flights_climbed' | 'average_met' | 'active_time' | 'distance_walking_running' | 'distance_cycling' | 'distance_swimming' | 'distance_downhill_snow_sports' | 'distance_other' | 'walking_step_length' | 'walking_speed' | 'walking_double_support_percentage' | 'walking_asymmetry_percentage' | 'walking_steadiness' | 'stair_descent_speed' | 'stair_ascent_speed' | 'running_power' | 'running_speed' | 'running_vertical_oscillation' | 'running_ground_contact_time' | 'running_stride_length' | 'running_vertical_ratio' | 'running_stance_time_balance' | 'swimming_stroke_count' | 'underwater_depth' | 'cadence' | 'power' | 'speed' | 'workout_effort_score' | 'estimated_workout_effort_score' | 'environmental_audio_exposure' | 'headphone_audio_exposure' | 'environmental_sound_reduction' | 'time_in_daylight' | 'water_temperature' | 'uv_exposure' | 'inhaler_usage' | 'weather_temperature' | 'weather_humidity' | 'elevation' | 'latitude' | 'longitude' | 'air_temperature' | 'garmin_stress_level' | 'garmin_skin_temperature' | 'garmin_fitness_age' | 'garmin_body_battery' | 'electrodermal_activity' | 'push_count' | 'atrial_fibrillation_burden' | 'insulin_delivery' | 'number_of_times_fallen' | 'number_of_alcoholic_beverages' | 'nike_fuel' | 'hydration', required — All supported time-series metric types.
    - `value` union, required
      - number
      - integer
    - `unit` string, required
    - `source` SourceMetadata
      - `provider` string, required
      - `source` string, nullable
      - `device` string, nullable
      - `device_type` 'watch' | 'band' | 'phone' | 'scale' | 'ring' | 'other' | 'unknown' — Type of device that collected health data.
      - `device_name` string, nullable, required — Marketing name for ``device``, derived so it cannot drift from the raw model.
    - `is_daily_total` boolean, nullable
  - `pagination` Pagination, required
    - `next_cursor` string, nullable — Cursor to fetch next page, null if no more data
    - `previous_cursor` string, nullable — Cursor to fetch previous page
    - `has_more` boolean, required — Whether more data is available
    - `total_count` integer, nullable — Total number of records matching the query
  - `metadata` TimeseriesMetadata, required
    - `resolution` 'raw' | '1min' | '5min' | '15min' | '1hour', nullable
    - `sample_count` integer, nullable
    - `start_time` string, date-time, nullable
    - `end_time` string, date-time, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/openwearables/apis/open-wearables-api.md) · [All operations](https://skmtc.net/openwearables/apis/open-wearables-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openwearables/open-wearables-api/revisions/37c1c527cd8f/schema)
