Summary: WHOOP counts my steps and shows them to me in the app, but there is no way to get them out — not through the OAuth Developer API, and not in the CSV data export. That gap means the one metric I most want to analyse is the one I have to retype by hand from screenshots.
What I’m asking for
- A
stepsfield on the cycle response in the Developer API (GET /v2/cycle,GET /v2/cycle/{cycleId}), alongsidestrainandkilojoule. A per-workout step count on/v2/activity/workoutwould be a bonus; the daily cycle total is what matters. - A
Stepscolumn in the data export, inphysiological_cycles.csvnext to Day Strain and Energy burned.
Either one solves my problem. Both would be ideal, since they serve different needs — the API for a daily automated sync, the export for history.
Why this matters to me
I’m a WHOOP subscriber and it’s the only tracker I wear 24 hours a day. That consistency is exactly why I want it to be my source of truth for steps — a wrist-worn device I never take off records my movement better than a phone I sometimes leave on a desk.
What I have to do instead, and why the workarounds fail
I’ve tried every available route:
- The Developer API has no step field on any endpoint. I checked the full v2 surface.
- The data export doesn’t include steps. I pulled a fresh export and searched all four CSVs —
physiological_cycles,sleeps,workouts,journal_entries— for any step data. There is none, in any column or any cell. - Apple Health as an intermediary loses the data. This is the part I’d most like you to look at. My nutrition app pulls steps from Apple Health, which receives them from WHOOP. Over a measured 35-day window, WHOOP’s app showed 245,205 steps. What arrived downstream was 158,241 — a 36% loss, about 2,500 steps a day, and not a single one of those 35 days matched. So even the indirect path through Apple Health does not carry WHOOP’s own figures faithfully.
That leaves screenshots. I photograph the weekly Trend View, transcribe seven numbers at a time, and verify each week against the average WHOOP displays above the bars. It works — the displayed average is a genuine checksum — but I’m hand-copying data out of an app that already has it, from a device I’m paying a subscription for.
Ask
The data exists. My device counted it, your app displays it. Please let me have it — an API field, an export column, or both. And if the Apple Health figure is meant to match what the app shows, something in that sync is dropping about a third of my steps, which seems worth investigating regardless of whether you ship the API change.
Happy to provide the specific dates and figures from my own account if that’s useful for reproducing the Apple Health discrepancy.