Skip to main content

Overview

Open Wearables supports multiple wearable providers through two integration methods:
  • Cloud-based (OAuth): Connect via provider APIs with automatic cloud syncing
  • SDK-based: Direct device integration using platform SDKs (iOS HealthKit, Android Health Connect)
New providers are added regularly. Check the roadmap for upcoming integrations.

Provider Categories

Cloud-Based Providers (OAuth)

These providers use OAuth for authentication and sync data from their cloud APIs:

Garmin

Status: ✅ SupportedAuth: OAuth 1.0aData Types:
  • Workouts & Activities
  • Heart Rate (24/7)
  • Sleep Sessions
  • Body Metrics
  • Steps & Calories
Special Features:
  • 30-day automatic backfill
  • Activity summaries
  • Advanced running metrics

Polar

Status: ✅ SupportedAuth: OAuth 2.0 + PKCEData Types:
  • Workouts
  • Heart Rate
  • Sleep Analysis
  • Training Load
Special Features:
  • Training zones
  • Recovery metrics
  • Polar Flow integration

Suunto

Status: ✅ SupportedAuth: OAuth 2.0Data Types:
  • Workouts
  • Activities
  • Route data
Special Features:
  • Requires subscription key
  • Outdoor activity focus
  • GPS tracks

Strava

Status: ✅ SupportedAuth: OAuth 2.0 + PKCEData Types:
  • Activities (running, cycling)
  • Workout summaries
  • Athlete profile
Special Features:
  • Segment data
  • Social features
  • Route mapping

Whoop

Status: ✅ SupportedAuth: OAuth 2.0Data Types:
  • Workouts
  • Recovery scores
  • Sleep performance
  • Strain tracking
Special Features:
  • Recovery optimization
  • Strain coach
  • Sleep insights

Oura

Status: 🚧 Coming SoonAuth: OAuth 2.0Planned Data:
  • Sleep stages
  • Readiness scores
  • Activity metrics
  • Heart rate variability

SDK-Based Providers

These providers integrate via platform SDKs for direct device access:

Apple Health

Status: ✅ Supported (XML import)Integration: HealthKit SDKData Types:
  • All HealthKit data types
  • Workouts
  • Heart Rate
  • Sleep Analysis
  • Body Measurements
  • Steps, Flights, Distance
Sync Methods:
  • XML export upload
  • Background webhooks (coming soon)

Samsung Health

Status: 🔄 PlannedIntegration: Samsung Health SDKPlanned Data:
  • Workouts
  • Steps & Activity
  • Heart Rate
  • Sleep

Google Fit

Status: 🔄 PlannedIntegration: Google Fit API / Health ConnectPlanned Data:
  • Activities
  • Steps & Movement
  • Heart Rate
  • Sleep

Provider Comparison Matrix

ProviderAuth TypeWorkoutsHeart RateSleepStepsBodySpecial
GarminOAuth 1.0a✅ 24/7Backfill
PolarOAuth 2.0Training zones
SuuntoOAuth 2.0GPS routes
StravaOAuth 2.0Segments
WhoopOAuth 2.0Recovery
AppleSDKAll HealthKit

Provider-Specific Details

Garmin

Garmin offers comprehensive health and fitness data through their Connect API.Device Compatibility:
  • Forerunner series
  • Fenix series
  • Vivoactive series
  • Venu series
  • All Garmin smartwatches
Implementation:
# backend/app/services/providers/garmin/strategy.py
class GarminStrategy(BaseProviderStrategy):
    @property
    def name(self) -> str:
        return "garmin"
    
    @property
    def api_base_url(self) -> str:
        return "https://apis.garmin.com"

Polar

Polar provides training and recovery metrics via their AccessLink API.Device Compatibility:
  • Polar Vantage series
  • Polar Grit X series
  • Polar Ignite series
  • Polar H10 heart rate sensor
Implementation:
# backend/app/services/providers/polar/strategy.py
class PolarStrategy(BaseProviderStrategy):
    @property
    def name(self) -> str:
        return "polar"
    
    @property
    def api_base_url(self) -> str:
        return "https://www.polaraccesslink.com"

Suunto

Suunto focuses on outdoor activities and adventure sports.Device Compatibility:
  • Suunto 9 series
  • Suunto 7
  • Suunto 5
  • Suunto 3 Fitness
Special Requirements:
  • Subscription key needed
  • Configure in environment:
SUUNTO_SUBSCRIPTION_KEY=your-subscription-key

Strava

Strava is a social fitness platform focused on running and cycling.Use Case:
  • Athletes who log activities manually
  • Users with multiple device sources
  • Social sharing and competition
Implementation:
class StravaStrategy(BaseProviderStrategy):
    @property
    def name(self) -> str:
        return "strava"
    
    @property
    def api_base_url(self) -> str:
        return "https://www.strava.com/api/v3"

Whoop

Whoop specializes in recovery and strain optimization.Unique Features:
  • Recovery score (0-100%)
  • Strain score (0-21)
  • Sleep performance
  • HRV tracking
Implementation:
class WhoopStrategy(BaseProviderStrategy):
    @property
    def name(self) -> str:
        return "whoop"
    
    @property
    def api_base_url(self) -> str:
        return "https://api.prod.whoop.com"

Apple Health

Apple Health aggregates data from iPhone, Apple Watch, and third-party apps.Integration Method:
  • XML export upload (currently)
  • SDK with background sync (coming soon)
Device Sources:
  • Apple Watch (all models)
  • iPhone (motion sensors)
  • Third-party apps syncing to HealthKit

Enabling/Disabling Providers

Configure which providers are available to your users:

Via Developer Portal

  1. Navigate to SettingsProviders
  2. Toggle providers on/off
  3. Click Save Changes

Via API

# Bulk update
PUT /api/v1/oauth/providers
Content-Type: application/json

{
  "providers": {
    "garmin": true,
    "polar": true,
    "suunto": false,
    "strava": true,
    "whoop": false
  }
}
Provider Settings:
# backend/app/schemas/provider_setting.py
class ProviderSettingRead(BaseModel):
    provider: str
    display_name: str
    icon_url: str
    has_cloud_api: bool
    is_enabled: bool

Provider Icons

Provider icons are located at:
backend/app/static/provider-icons/
├── garmin.svg
├── polar.svg
├── suunto.svg
├── strava.svg
├── whoop.svg
├── apple.svg
└── ...
Access via:
GET /static/provider-icons/{provider}.svg

Adding New Providers

Want to add support for a new provider? See our comprehensive guide:

How to Add a New Provider

Step-by-step instructions for implementing new wearable integrations

Provider Priority

When multiple providers supply the same data point (e.g., both Garmin and Apple Watch recording heart rate), you can configure priority:

Set Priority Order

  1. Go to SettingsPriorities
  2. Drag providers to reorder
  3. Higher position = higher priority
  4. Save changes
How it works:
  • For overlapping time ranges, higher priority source wins
  • Non-overlapping data from all sources is retained
  • Priority applies per metric type

Next Steps

OAuth Flow

Learn how to connect users to providers

Unified API

Access normalized health data programmatically

Build docs developers (and LLMs) love