Skip to content

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.

Recovery & Readiness visualisation

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.created
  • series.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?
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.

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.