Recovery & Readiness data from every wearable, in one schema
Provider readiness and recovery scores, delivered with their inputs so you can build your own.
2 / 4
Providers connectable today
3
Webhook events in this family
provider-defined score, plus normalised inputs in their own units
Canonical units
What recovery & readiness looks like through one API
Recovery, readiness and body battery are the flagship features of the major wearable brands, and they are entirely proprietary. WHOOP Recovery, Oura Readiness and Garmin Body Battery are computed by closed models from overlapping but non-identical inputs, and they are expressed on scales that look similar and are not.
WearLink delivers these scores as-is, clearly attributed to their provider, and — more usefully — delivers the underlying inputs in normalised form: HRV, resting heart rate, sleep duration and efficiency, body temperature deviation, respiratory rate. Most teams building a cross-device product end up computing their own composite from those inputs, because it is the only way to give users on different hardware a comparable number.
Garmin Body Battery is kept as its own series rather than being folded into a generic recovery field, because it is a continuously-depleting energy model rather than a once-daily readiness snapshot. Mapping it onto a 0–100 daily score would misrepresent what it measures.
Where providers disagree
The part that costs you weeks if you build this yourself. None of the following is a WearLink limitation — it is how the underlying providers actually behave.
The scores are not on a common scale
A WHOOP recovery of 70 and an Oura readiness of 70 do not describe the same state, and neither maps to Garmin Body Battery. There is no published conversion and any you derive will be a correlation, not an equivalence. Never chart them on a shared axis.
Different inputs, different sensitivities
One model weights HRV heavily, another leans on sleep debt, another on recent training load. A user who sleeps badly but trains lightly will move differently in each. This is why users with two devices see contradictory recommendations — the models genuinely disagree.
Body Battery is continuous, readiness is daily
Body Battery updates through the day as a depleting and recharging reserve; readiness and recovery are typically computed once on waking. Treating a continuous series as a daily value, or vice versa, produces charts that mislead.
No sleep means no score, and the gap needs a real empty state
Every readiness and recovery model is computed from overnight data. A user who did not wear the device to bed gets no score at all — not a low score. Products that render the absence as zero, or that carry the previous day forward without saying so, mislead users on exactly the days they are most likely to check. Expect gaps to be common: charging, forgetting, and travel all produce them. Design the empty state deliberately and distinguish it from a genuinely poor recovery.
Providers that supply recovery & readiness
Status is read from the same provider table the rest of the site uses, so nothing here can claim a provider is connectable when it is not. Coverage also varies by hardware generation within a brand.
| Provider | Category | Status |
|---|---|---|
| WHOOP | Cloud OAuth | Live |
| Oura | Cloud OAuth | Live |
| Garmin | Cloud OAuth | Onboarding |
| Ultrahuman | Cloud OAuth | Onboarding |
Webhook events for recovery & readiness
Subscribe to the summary event for settled records, and to the series streams when you need the underlying samples. Event names below are generated from the backend enum, so they cannot drift out of date relative to the API.
Summary object
recovery_score.created
Series streams
series.recovery_score.createdseries.garmin_body_battery.createdFrequently asked questions
- Can I convert a WHOOP recovery score to an Oura readiness score?
- No. They are proprietary models over different inputs with no published mapping. If you need one number across a mixed-device user base, compute your own composite from the normalised HRV, RHR and sleep inputs WearLink delivers.
- Which providers supply a recovery or readiness score?
- WHOOP, Oura, Garmin (as Body Battery) and Ultrahuman. Connection status for each is shown in the table on this page.
- What inputs do I need to build my own readiness score?
- The common set is HRV baseline deviation, resting heart rate deviation, sleep duration and efficiency, and where available respiratory rate and skin-temperature deviation. All are available as normalised events.
Related data types
15 normalised data families in total — see them all or browse integrations by provider.