Which providers does Terra feed HRV and Skin Temp for?
AllDevelopedUnicorn1 month ago
Hi,
I'm evaluating Terra before purchase. My app needs two metrics, HRV and skin temperature, and most vendors withhold both from Apple Health and Health Connect. Terra pulling from vendor APIs instead is the whole reason I'm looking at it.
Two questions across Garmin, Oura, Whoop, Polar, Samsung, Coros, Fitbit, Suunto, Zepp/Amazfit and Ultrahuman:
Which of those does the Terra feed actually include HRV and a temperature value for (nightly deviation or absolute)? Is there a per-provider data-availability table anywhere?
Which of them are bring-your-own-keys? The docs cover Whoop and Huawei, but I can't tell how the "N/A" in the Integration Credentials column should be read. Garmin matters most here, since it has paused new API access requests, so my own credentials aren't obtainable right now.
Thanks, Tatum
Vanessaadmin1 month ago
Hi Tatum,
Across the ten providers you listed, Terra's feed carries HRV (RMSSD) for nine of them and a nightly skin or body temperature value for six.
Here is the per-provider picture, all on the sleep payload unless noted:
| Provider | HRV (RMSSD) | Skin / body temperature |
|---|---|---|
| Garmin | Yes, heart_rate_data.summary.avg_hrv_rmssd | Yes, nightly deviation from baseline in temperature_data.delta (Celsius) |
| Oura | Yes | Yes, nightly deviation in temperature_data.delta |
| Whoop | Yes | Yes, average absolute skin temperature from the Recovery record |
| Polar | Yes, sourced from Polar's Nightly Recharge feature | Yes, both absolute sleep-time skin temperature and deviation from baseline |
| Fitbit | Yes | Yes, nightly relative delta (needs the temperature OAuth scope on your Fitbit app) |
| Ultrahuman | Yes on sleep, daily and body payloads | Yes, absolute skin temperature samples on the body payload |
| Coros | Yes | No, Coros does not expose a temperature metric |
| Suunto | Yes | No |
| Zepp / Amazfit | Yes | No |
| Samsung Health | Only if the device writes RMSSD into Health Connect | Only if the device writes body temperature into Health Connect |
A couple of quirks worth flagging. Garmin's HRV and skin temperature deviation ride on separate overnight summaries, so they can arrive on the sleep record after the initial stages payload; upserting on metadata.summary_id catches the update. Details in why HRV and resting HR are null on some Garmin sleep records. Samsung Health has two routes into Terra: through Health Connect (the GOOGLEFIT Health Connect-based integration in the table), or via a direct Samsung Health Data SDK route (the SAMSUNG row) that needs a Samsung partner approval. On either route, HRV and body temperature only show up when the Samsung device is configured to write them into Health Connect or Samsung Health, and coverage varies by device.
Field paths for everything above are in the data models reference.
On bring-your-own-keys, the supported integrations table is the source of truth, and the FAQ that explains the Integration credentials column is here: which providers need my own credentials. The short version:
- Managed means Terra's own app with the provider is used and there is nothing for you to enter. For Garmin, they require you to have your own app credentials.
- Required means you register your own developer app and paste the credentials into the Terra dashboard. Whoop is in this bucket, and Samsung's direct Health Data SDK route is here too via Samsung's partner approval.
- N/A means there is nothing to configure in the dashboard. Apple Health needs no credentials at all, and Intervals.icu / Lyfta rely on each end user pasting their own personal API key at connect time. Health Connect (which is how Samsung Health typically reaches Terra) also sits under N/A because it is SDK-based.
If it helps to see the payload shapes end-to-end before you commit, the widget flow is the quickest way to auth a test account and inspect real sleep and body responses per provider.