Releasesv0.1.0

Supported and planned sources

Every source, its status, integration path, data types and tracking issue.

A connector teaches Open Health Sync one source. Thirteen are available: Apple Health, Health Connect, Withings, Oura, WHOOP, Strava, Polar, Fitbit, Suunto, Ultrahuman, intervals.icu, Dexcom and OMRON. Garmin, Eight Sleep, Xiaomi, activity files (FIT, GPX and TCX files from Garmin, COROS, Wahoo, Zwift, Suunto, Polar, Strava and others) and Bluetooth devices (standard heart rate, blood pressure, scale, glucose, thermometer and pulse oximeter profiles) are on main for the next release. Every other source below is planned: it is not built yet, and no code for it runs today. To build one, start with writing a connector.

Status:

  • Available: ships in this release.
  • Next release: on main, ships in the next release.
  • Planned: on the roadmap, not built yet.
  • Via Health Connect: no server-side path we intend to use; the data comes through Android's Health Connect upload, from your Android app.
  • No public API: the vendor publishes no official API we can build on.

Integration paths, as checked in October 2026 (vendors change their programs, so check the linked tracking issue or the vendor's developer site before you start):

  • Cloud API, OAuth: the server pulls from the vendor's cloud with the user's consent, and may receive webhooks. A self-hosted instance needs its own developer app with the vendor.
  • Partner program: a cloud API, but only for companies the vendor approves.
  • On-device: the data lives on the phone (HealthKit on iOS, Health Connect or a vendor SDK on Android). A mobile app has to read it and upload it.
ProviderStatusIntegration pathData typesNotesTracking
Apple HealthAvailableOn-device (HealthKit). Your iOS app uploads gzip NDJSON parts to POST /v1/ingest/apple-healthQuantities, categories, sleep, workouts and routes, nutrition; ECG and heartbeat series storedThe Swift SDK reads HealthKit and uploads it, or your app implements the upload contract itself. ohs import apple-health loads a Health app export, history included. Data that other apps and devices write to HealthKit arrives this way too
WithingsAvailableCloud API, OAuth 2.0, scheduled pulls and push notificationsBody measurements, activity, sleep, workouts, ECGBring your own Withings developer app (guide)
OuraAvailableCloud API v2, OAuth 2.0, scheduled pulls, optional webhooks (updates and deletions)Sleep and stages, sleep score, readiness, daily activity, stress, heart rate, SpO2, VO2 max, workouts, meditation and breathing sessionsBring your own Oura API application (guide). Personal access tokens were retired at the end of 2025. Gen3 and later rings need an active Oura Membership for API access. An app needs Oura's approval past its first 10 users#5
WhoopAvailableCloud API v2, OAuth 2.0, scheduled pulls and webhooks (recovery, sleep, workout)Cycles (strain), recovery (score, resting heart rate, HRV as RMSSD, SpO2, skin temperature), sleep with stage durations, workouts, body measurementsBring your own app from the WHOOP Developer Dashboard (guide). The public API has no raw heart rate series, no hypnogram and no ECG#6
UltrahumanAvailablePartnership API, OAuth 2.0, scheduled daily pulls (no webhooks)Sleep with stages, heart rate, HRV (RMSSD), skin temperature and deviation, steps, resting heart rate, VO2 max; glucose with the M1 CGMNot self-serve: Partnership API keys come through Ultrahuman partner onboarding (guide). The personal-token API is not supported yet. Recovery, movement and metabolic scores stay raw only
GarminNext releasePartner program (Garmin Connect Developer Program, Health API), OAuth 2.0 with PKCE, scheduled pulls and Garmin's ping or push notificationsDaily summaries, 15 minute epochs, sleep with stages, activities as workouts, body composition, HRV (RMSSD), SpO2, respiration, VO2 max, blood pressure, skin temperature; stress and Body Battery stored raw onlyFor approved business developers only; bring your own Garmin app (guide). Some data needs a commercial license fee. New access requests have been paused since spring 2026, per Garmin's replies to applicants; no public announcement or reopening date. Not usable by individuals self-hosting. Activities from a Garmin account export can be imported as activity files#9
FitbitAvailableCloud API (Google Health API v4), Google OAuth 2.0 (restricted scopes), scheduled pulls and signed webhook notificationsActivity (steps, distance, floors, active energy), heart rate, resting heart rate, HRV (RMSSD), SpO2, respiratory rate, sleep with stages, workouts, weight, body fat, height, VO2 max, blood glucose, temperatureBring your own Google Cloud project and OAuth client (guide). Unverified apps: 100 users, 7 day refresh tokens while in Testing. The legacy Fitbit Web API (off 2026-10-30) is not used. Deletions are not propagated yet#9
PolarAvailableCloud API (AccessLink v3), OAuth 2.0, scheduled pulls and webhooksExercises, daily activity, sleep with hypnogram, Nightly Recharge, continuous heart rate, physical infoSelf-serve: bring your own AccessLink client from admin.polaraccesslink.com (guide); each user is registered after consent. The API only serves recent data (28 to 30 days for most types)#8
StravaAvailableCloud API v3, OAuth 2.0, scheduled pulls and webhook eventsActivities as workouts (summary figures; no streams or routes yet)Bring your own Strava API application (guide). A new app serves 1 athlete, 10 after a self-upgrade, more after Strava's review. The 2026 API terms forbid AI training on API data and restrict intermediary platforms; third parties report a paid Strava subscription is now needed for API access#7
intervals.icuAvailableCloud API v1, OAuth 2.0, scheduled pulls and webhooks (activity, wellness)Activities as workouts, keeping their upstream source (Garmin, Wahoo, Zwift, Coros, Suunto, Polar, uploads); daily wellness: weight, resting heart rate, HRV (RMSSD and SDNN), sleep score, steps, SpO2, respiration, body fat, VO2 max, blood pressureApply for an OAuth app at intervals.icu; the intervals.icu developer approves it (guide). No refresh tokens: a revoked token means reconnecting. Activities synced from Strava are not available through the API
CorosPlannedCloud API, OAuth 2.0; a partner API with webhooks for established platformsActivities, health metrics, fitness assessmentsPartner access is requested from COROS (api@coros.com); full docs are shared after registration. Activities from the COROS Training Hub export can be imported as activity files
SuuntoAvailablePartner program (Suunto Cloud API), OAuth 2.0 with an API Zone subscription key, scheduled pulls and signed notificationsWorkouts (summary figures); 24/7 sleep, recovery and daily activity stored raw onlyCompanies and organizations apply to Suunto's partner program and sign its API agreement; not for personal use. Bring your own API Zone app and subscription key (guide). No FIT samples, laps or routes yet
DexcomAvailableCloud API v3, OAuth 2.0 (scope offline_access), scheduled pullsEstimated glucose values (EGVs) as blood_glucose, coded as interstitial glucose in FHIRBring your own app from developer.dexcom.com (guide). Free sandbox; production use needs Dexcom's approval. One region per instance (US, EU, Japan). Readings reach the API 1 hour late in the US, 3 hours elsewhere. Events, calibrations and alerts are not pulled yet
OMRONAvailablePartner API (OMRON Wellness API), OAuth 2.0, scheduled pullsBlood pressure (paired systolic and diastolic, pulse, possible AFib flag), weight and body compositionApply at omronhealthcare.com/api; staging credentials first, production after OMRON's approval (guide). Its upload notifications are not received yet (format not public)
FreeStyle LibreNo public APIThrough Health Connect (Android) or Apple Health (iPhone), when the Libre app writes thereGlucoseAbbott publishes no developer API; LibreView integrations are by agreement only. We will not use the unofficial LibreLinkUp app API (research notes)
Health ConnectAvailable on the serverOn-device (Android). Your Android app uploads gzip NDJSON parts to POST /v1/ingest/health-connectSteps, heart rate, resting heart rate, HRV, SpO2, respiratory rate, temperature, blood pressure, blood glucose, weight, height, body fat, active energy, distance, sleep with stages, exercise sessions, deletionsYour app implements the upload contract; the Kotlin SDK that does it is being built. By default an app reads back only 30 days before its first permission grant; older data needs the history permission. Many Android apps write here, which is how Samsung Health, Fitbit, Zepp and CGM apps can reach it
Samsung HealthVia Health ConnectOn-device only: the Samsung Health Data SDK (partner approval needed to distribute), or Health Connect, which Samsung Health writes toActivity, sleep, heart rate, skin temperatureThe older Samsung Health SDK for Android was deprecated on 2025-07-31. We plan to read Samsung Health data through Health Connect, which needs no Samsung partnership
Google FitDeprecated by Google, use Health Connect (planned Kotlin SDK)None to build onGoogle closed sign-ups on 2024-05-01 and supports the Fit APIs only until the end of 2026. It points Android apps to Health Connect and cloud apps to the Google Health API
XiaomiNext releaseData copy from the Xiaomi account privacy center, imported with ohs import mi-fitness to POST /v1/ingest/xiaomi; ongoing data through Health Connect (Android) or Apple Health (iPhone)Heart rate, resting heart rate, SpO2, steps, distance, active energy, weight, body fat, VO2 max, sleep with stages, workoutsXiaomi publishes no health API. The Mi Fitness data copy holds the full history; Mi Fitness, Mi Health and Zepp Life records in Health Connect get the source slug xiaomi (guide). No private Xiaomi API is used
Activity files (FIT, GPX, TCX)Next releaseFiles the user downloads (one activity, or an account export), imported with ohs import files to POST /v1/ingest/activity-files; no vendor APIWorkouts with GPS routes, per-second heart rate, cycling and running powerWorks for any device or app that saves FIT, GPX or TCX files: Garmin and Strava account exports, COROS bulk export, Wahoo, Zwift, Suunto and Polar files. The source slug comes from the file (garmin, coros, wahoo...). Needs no partner program or operator keys (guide)
Bluetooth devicesNext releaseDirect from the device: standard Bluetooth SIG health profiles, read by ohs-bridge (macOS, Linux, Raspberry Pi, Windows) or an app built with the Swift or Kotlin SDK, uploaded to POST /v1/ingest/bluetooth; no vendor API, no phone neededHeart rate with RR intervals, blood pressure and pulse, weight, BMI, body composition, blood glucose, body temperature, SpO2Any device that implements the Heart Rate, Blood Pressure, Weight Scale, Body Composition, Glucose, Health Thermometer or Pulse Oximeter service: chest straps, cuffs, scales, meters. The server decodes the bytes the device sent; the source slug comes from the manufacturer (polar, omron...) (guide)
Zepp / AmazfitVia Health ConnectOn-device: the Zepp app writes to Health Connect on Android and to Apple Health on iOS. Zepp Health also runs a partner Web API (OAuth 2.0, api-open.huami.com) for approved companiesSteps, heart rate, sleep, workouts, caloriesHealth Connect records from the Zepp app (com.huami.watch.hmwatchmanager) get the source slug zepp. The partner API is open to companies only, by application to Zepp Health; there is no connector for it yet. On iPhone, what the Zepp app writes to HealthKit is ordinary Apple Health data
RingConnVia Health ConnectOn-device: the RingConn app writes to Health Connect on Android and to Apple Health on iOSSteps, active and resting energy, sleep with stages, resting and average heart rate, SpO2, weight, heightRingConn publishes no developer API or data export. Health Connect records from the RingConn app (com.gdjztech.ringconn) get the source slug ringconn. HRV is not shared with Health Connect
Health records (EHR): Epic, Oracle Health and other certified EHRsPlanned, after the SDKsSMART on FHIR patient access (OAuth 2.0), FHIR R4Lab results, vital signs, conditions, medications, allergies, immunizationsUS first, where certified EHRs must offer patient access APIs. Each operator registers its own app with each EHR vendor, and each health system activates it. The health records found in Apple Health exports are planned too
Eight SleepNext releaseThe account sign-in and API the Eight Sleep app uses (no public API), scheduled pullsSleep sessions with stages, sleep score, heart rate, HRV, breathing rate; bed and room temperature in session metadataEight Sleep publishes no developer API: the connector follows the open source pyEight library, is unsupported by Eight Sleep and can break when the app changes. Users enter their Eight Sleep password on your instance's sign-in page; it is stored encrypted so the server can sign in again. On by default with the app's client id and secret as pyEight publishes them (guide)

Contributing a connector

The open connector issues are labeled connector, and the smaller ones good first issue. Read writing a connector first, and use the connector request form for a source that is not listed. Tests use recorded fixtures with invented values and a fake of the provider API; no test calls a real provider.

Edit on GitHub

On this page