Recovery Score API
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 event types
Canonical unit
provider-defined score, plus normalised inputs in their own 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 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.
Webhook events for recovery & readiness
Summary: recovery_score.created
Series streams:
series.recovery_score.createdseries.garmin_body_battery.created
The full catalogue is in the event catalogue.
FAQ
Recovery & Readiness — frequently asked questions
Can I convert a WHOOP recovery score to an Oura readiness score?
Which providers supply a recovery or readiness score?
What inputs do I need to build my own readiness score?
Get recovery & readiness from every device your users own
Free for up to 3 connected users. No credit card. Your first API key is issued the moment you sign up.