Documentation Index
Fetch the complete documentation index at: https://openwearables.io/docs/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Each wearable provider has different requirements and parameters for syncing data. This guide covers the specifics for each supported provider.Garmin
Garmin uses a webhook-only delivery model — there is no REST polling path. It implements two capability flags:webhook_stream— Garmin pushes the complete data payload to your webhook endpoint in real time as the user syncs their device.webhook_callback— For historical backfill, a backfill task is dispatched asynchronously; Garmin delivers the results to your webhook callback URL.
rest_pull capability, live_sync_configurable is false and live_sync_mode is fixed at "webhook".
Historical backfill
To trigger a historical backfill (up to 30 days), call the dedicated endpoint:Polar
Polar uses the AccessLink API with simpler sync requirements.Sync Parameters
| Parameter | Default | Description |
|---|---|---|
samples | false | Include detailed sample data (HR samples, etc.) |
zones | false | Include heart rate zone information |
route | false | Include GPS route data |
Example
Enabling
samples, zones, and route increases sync time but provides more detailed workout data.Suunto
Suunto supports both workouts and 24/7 data (sleep, recovery, activity samples).Sync Parameters
| Parameter | Default | Description |
|---|---|---|
since | 0 | Unix timestamp to sync from (0 = all available) |
limit | 50 | Items per request (max: 100) |
offset | 0 | Pagination offset |
filter_by_modification_time | true | Filter by modification vs creation time |
Data Types
| Value | Description |
|---|---|
workouts | Workout/exercise sessions |
247 | 24/7 data: sleep, recovery, activity samples |
all | Both workouts and 24/7 data |
Example
Whoop
Whoop uses OAuth 2.0 and supports both workouts and 24/7 data (sleep, recovery, body measurements).Setup
- Create an application at developer.whoop.com
- Set your redirect URI to
http://localhost:8000/api/v1/oauth/whoop/callback - Configure environment variables:
Sync Parameters
Whoop does not require provider-specific query parameters. Use the standarddata_type parameter to control what gets synced.
data_type Value | Description |
|---|---|
workouts | Workout/exercise sessions |
247 | Sleep sessions, recovery metrics, body measurements |
all | Both workouts and 24/7 data |
When no date range is specified, Whoop defaults to syncing the last 30 days of data.
Data Collected
Workouts: heart rate (avg/max), energy burned, distance, elevation gain, duration. Sleep (247): total duration, time in bed, efficiency score, sleep stages (deep, light, REM, awake), nap detection. Recovery (247): recovery score, resting heart rate, HRV (RMSSD), SpO2 percentage, skin temperature. Body measurements (247): height, weight.Example
Apple Health
Apple Health data is imported via the mobile SDK rather than cloud API sync.Apple Health requires the Open Wearables mobile SDK. Cloud sync is not available for Apple Health.
Checking Connection Status
Before syncing, verify the user has an active connection:active, revoked, or expired.
If no connection exists for a provider, the user needs to complete OAuth first.
Available Providers
Check which providers are enabled in your instance:icon_url is a relative URL (e.g., /static/provider-icons/garmin.svg). Resolve it against your API base URL to get the full path - for example, https://your-api.example.com/static/provider-icons/garmin.svg.
