Fitbit Web API returns 410 Gone: how to keep sleep, HRV and weight flowing into intervals.icu
Description and use
Migrating to the Google Health API or alternative routes restores data flow to intervals.icu, though with limitations such as 7‑day token expiry, non‑real‑time updates, and missing fields like sleepScore and HRV via Apple Health.
Problem
Legacy Fitbit Web API was shut down, breaking tools that sync Fitbit data to intervals.icu.
Outcome
Migrating to the Google Health API or alternative routes restores data flow to intervals.icu, though with limitations such as 7‑day token expiry, non‑real‑time updates, and missing fields like sleepScore and HRV via Apple Health.
Workflow
- Detect 410 Gone responses from api.fitbit.com and stop retry loops.
- Choose a migration route: 1) Health Connect (Android), 2) Apple Health or Health Sync (iPhone), 3) direct Google Health API access, or 4) Google Takeout CSV upload.
- If using route 3, set up a GitHub Actions workflow (e.g., google-health-to-intervals) with Google Cloud project, OAuth client, and intervals.icu API key.
- Run the workflow to pull data from health.googleapis.com/v4/users/me/dataTypes and push to intervals.icu via PUT /api/v1/athlete/{id}/wellness-bulk.
- Handle 7‑day token expiry by renewing tokens weekly; GitHub emails reminders.
- Verify that required fields (sleepSecs, restingHR, hrv, weight, spO2, steps, vo2max, respiration) are present and correctly mapped.
- Use CSV uploads for historical data via Google Takeout or API POST /api/v1/athlete/{id}/wellness.
Evidence
On 2 November 2026 Google turned off the legacy Fitbit Web API.
Requests to them now fail with HTTP 410 Gone.
The replacement is the Google Health API (health.googleapis.com), with new OAuth scopes and new data types.
Health Connect writes sleep sessions and stages; heart rate variability and resting heart rate; weight, steps, VO2 max and respiratory rate.
Google Health writes sleep, resting heart rate, oxygen saturation, weight and steps to Apple Health. Heart rate variability is read-only, so HRV does not go from Google Health to Apple Health.
The setup for google-health-to-intervals takes about 20-30 minutes, once: ...
The 7-day rule. Google's setup page says refresh tokens in Testing mode are "time-based and expire after 7 days".
- Record date: 2026-11-03T16:28:54.325Z