---
title: "Fitbit Web API to Google Health API: every endpoint, mapped or not"
canonical: "https://aifitnessapi.com/tools/fitbit-to-google-health"
markdown: "https://aifitnessapi.com/tools/fitbit-to-google-health.md"
type: "tool"
last_reviewed: "2026-11-05"
description: "Search every Fitbit Web API endpoint and see its Google Health API data type, method and scopes, from Google's migration tables. Unmapped ones say so."
publisher: "AIFitnessAPI — funded by KinesteX; first-party pages disclose it"
cite_as: "\"Fitbit Web API to Google Health API: every endpoint, mapped or not\", AIFitnessAPI, https://aifitnessapi.com/tools/fitbit-to-google-health"
---

# Fitbit Web API to Google Health API: every endpoint, mapped or not

> Search all 121 endpoints in Fitbit's Web API reference (read 2026-11-05) and see what replaces each in the Google Health API, using only Google's own migration tables (read 2026-10-31): the data type, the method Google's endpoint table names, and the scopes. 60 endpoints map on both halves, 2 map their data but have no endpoint-type row, 2 have only a same-named discovery method, and 57 — friends, badges, alarms, goals, favorites, water and Fitbit's OAuth endpoints among them — are not in Google's tables, and the tool says so.

- Canonical: https://aifitnessapi.com/tools/fitbit-to-google-health
- Last reviewed: 2026-11-05
- Publisher: AIFitnessAPI (https://aifitnessapi.com)
- Cite as: "Fitbit Web API to Google Health API: every endpoint, mapped or not", AIFitnessAPI, https://aifitnessapi.com/tools/fitbit-to-google-health

---

*[Interactive: search and filters over every row below, in the browser at https://aifitnessapi.com/tools/fitbit-to-google-health; not reproduced in this mirror.]*

| Fitbit endpoint | Request | Status | Why |
|---|---|---|---|
| Get AZM Time Series by Date | GET /1/user/[user-id]/activities/active-zone-minutes/date/[date]/[period].json | Mapped | Google's migration tables cover both halves: the data (Active Zone Minutes) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get AZM Time Series by Interval | GET /1/user/[user-id]/activities/active-zone-minutes/date/[start-date]/[end-date].json | Mapped | Google's migration tables cover both halves: the data (Active Zone Minutes) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Activity Time Series by Date | GET /1/user/[user-id]/activities/[resource-path]/date/[date]/[period].json | Mapped | Google's migration tables cover both halves: the data (Steps, Distance, Floors, Elevation, Activity Calories, Activity `caloriesBMR`, Activity time series minutes sedentary, Activity time series swimming strokes) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Activity Time Series by Date Range | GET /1/user/[user-id]/activities/[resource-path]/date/[start-date]/[end-date].json | Mapped | Google's migration tables cover both halves: the data (Steps, Distance, Floors, Elevation, Activity Calories, Activity `caloriesBMR`, Activity time series minutes sedentary, Activity time series swimming strokes) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Create Activity Goal | POST /1/user/[user-id]/activities/goals/[period].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Create Activity Log | POST /1/user/[user-id]/activities.json | Mapped | Google's migration tables cover both halves: the data (Recorded activity) and the endpoint type (“CREATE & UPDATE Logs”). |
| Create Favorite Activity | POST /1/user/[user-id]/activities/favorite/[activity-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Delete Activity Log | DELETE /1/user/[user-id]/activities/[activity-log-id].json | Mapped | Google's migration tables cover both halves: the data (Recorded activity) and the endpoint type (“DELETE Logs”). |
| Delete Favorite Activity | DELETE /1/user/[user-id]/activities/favorite/[activity-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Activity Goals | GET /1/user/[user-id]/activities/goals/[period].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Activity Log List | GET /1/user/[user-id]/activities/list.json | Mapped | Google's migration tables cover both halves: the data (Recorded activity) and the endpoint type (“GET (Log List)”). |
| Get Activity TCX | GET /1/user/[user-id]/activities/[log-id].tcx | Name match | Google's migration tables do not list this endpoint. The discovery document has a method of the same name; that pairing is this site's name match, not Google's statement. |
| Get Activity Type | GET /1/activities/[activity-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get All Activity Types | GET /1/activities.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Daily Activity Summary | GET /1/user/[user-id]/activities/date/[date].json | Mapped | Google's migration tables cover both halves: the data (Activity `caloriesOut`, Activity `caloriesBMR`, Activity Calories, Steps, Floors, Elevation, Resting heart rate) and the endpoint type (“GET (Log \| Summary \| Daily Summary) where you are requesting a single day of data”). |
| Get Favorite Activities | GET /1/user/[user-id]/activities/favorite.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Frequent Activities | GET /1/user/[user-id]/activities/frequent.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Lifetime Stats | GET /1/user/[user-id]/activities.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Recent Activity Types | GET /1/user/[user-id]/activities/recent.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Workout Summary | GET /1/user/-/activities/[logId]/workout-summary | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Authorize | /oauth2/authorize | Not in Google's tables | Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints. |
| Client Credentials Grant Flow | POST /oauth2/token | Not in Google's tables | Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints. |
| Introspect | POST /1.1/oauth2/introspect | Not in Google's tables | Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints. |
| OAuth2 Token | POST /oauth2/token | Not in Google's tables | Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints. |
| Refresh Token | POST /oauth2/token | Not in Google's tables | Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints. |
| Revoke Token | POST /oauth2/revoke | Not in Google's tables | Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints. |
| Get Blood Glucose by Interval | GET /1/user/-/health/metrics/glucose/values/[startDate]/[endDate].json | Mapped | Google's migration tables cover both halves: the data (Blood Glucose) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Body Time Series by Date | GET /1/user/[user-id]/body/[resource]/date/[date]/[period].json | Mapped | Google's migration tables cover both halves: the data (Weight, Body fat) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Body Time Series by Date Range | GET /1/user/[user-id]/body/[resource]/date/[begin-date]/[end-date].json | Mapped | Google's migration tables cover both halves: the data (Weight, Body fat) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Body Fat Time Series by Date | GET /1/user/[user-id]/body/log/fat/date/[date]/[period].json | Mapped | Google's migration tables cover both halves: the data (Body fat) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Body Fat Time Series by Date Range | GET /1/user/[user-id]/body/log/fat/date/[start-date]/[end-date].json | Mapped | Google's migration tables cover both halves: the data (Body fat) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Weight Time Series by Date | GET /1/user/[user-id]/body/log/weight/date/[date]/[period].json | Mapped | Google's migration tables cover both halves: the data (Weight) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Weight Time Series by Date Range | GET /1/user/[user-id]/body/log/weight/date/[start-date]/[end-date].json | Mapped | Google's migration tables cover both halves: the data (Weight) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Create Body Fat Goal | POST /1/user/[user-id]/body/log/fat/goal.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Create Body Fat Log | POST /1/user/[user-id]/body/log/fat.json | Mapped | Google's migration tables cover both halves: the data (Body fat) and the endpoint type (“CREATE & UPDATE Logs”). |
| Create Weight Goal | POST /1/user/[user-id]/body/log/weight/goal.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Create Weight Log | POST /1/user/[user-id]/body/log/weight.json | Mapped | Google's migration tables cover both halves: the data (Weight) and the endpoint type (“CREATE & UPDATE Logs”). |
| Delete Body Fat Log | DELETE /1/user/[user-id]/body/log/fat/[body-fat-log-id].json | Mapped | Google's migration tables cover both halves: the data (Body fat) and the endpoint type (“DELETE Logs”). |
| Delete Weight Log | DELETE /1/user/[user-id]/body/log/weight/[weight-log-id].json | Mapped | Google's migration tables cover both halves: the data (Weight) and the endpoint type (“DELETE Logs”). |
| Get Body Goals | GET /1/user/[user-id]/body/log/[goal-type]/goal.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Body Fat Log | GET /1/user/[user-id]/body/log/fat/date/[date].json | Mapped | Google's migration tables cover both halves: the data (Body fat) and the endpoint type (“GET (Log \| Summary \| Daily Summary) where you are requesting a single day of data”). |
| Get Weight Log | GET /1/user/[user-id]/body/log/weight/date/[date].json | Mapped | Google's migration tables cover both halves: the data (Weight) and the endpoint type (“GET (Log \| Summary \| Daily Summary) where you are requesting a single day of data”). |
| Get Breathing Rate Summary by Date | GET /1/user/[user-id]/br/date/[date].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Breathing Rate Summary by Interval | GET /1/user/[user-id]/br/date/[start-date]/[end-date].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get VO2 Max Summary by Date | GET /1/user/[user-id]/cardioscore/date/[date].json | Mapped | Google's migration tables cover both halves: the data (VO2 Max value) and the endpoint type (“GET (Log \| Summary \| Daily Summary) where you are requesting a single day of data”). |
| Get VO2 Max Summary by Interval | GET /1/user/[user-id]/cardioscore/date/[start-date]/[end-date].json | Mapped | Google's migration tables cover both halves: the data (VO2 Max value) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Create Alarms | POST /1/user/[user-id]/devices/tracker/[tracker-id]/alarms.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Delete Alarm | DELETE /1/user/[user-id]/devices/tracker/[tracker-id]/alarms/[alarm-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Alarms | GET /1/user/[user-id]/devices/tracker/[tracker-id]/alarms.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Devices | GET /1/user/[user-id]/devices.json | Mapped | Google's endpoint table names this endpoint (“Get Devices”). |
| Update Alarm | POST /1/user/[user-id]/devices/tracker/[tracker-id]/alarms/[alarm-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get ECG Log List | GET /1/user/[user-id]/ecg/list.json | Mapped | Google's migration tables cover both halves: the data (Electrocardiogram (ECG)) and the endpoint type (“GET (Log List)”). |
| Get Friends | GET /1.1/user/[user-id]/friends.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Friends Leaderboard | GET /1.1/user/-/leaderboard/friends.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Heart Rate Time Series by Date | GET /1/user/[user-id]/activities/heart/date/[date]/[period].json | Mapped | Google's migration tables cover both halves: the data (Resting heart rate, `caloriesOut` in each heart rate zone) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Heart Rate Time Series by Date Range | GET /1/user/[user-id]/activities/heart/date/[start-date]/[end-date].json | Mapped | Google's migration tables cover both halves: the data (Resting heart rate, `caloriesOut` in each heart rate zone) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get HRV Summary by Date | GET /1/user/[user-id]/hrv/date/[date].json | Mapped | Google's migration tables cover both halves: the data (HRV summary) and the endpoint type (“GET (Log \| Summary \| Daily Summary) where you are requesting a single day of data”). |
| Get HRV Summary by Interval | GET /1/user/[user-id]/hrv/date/[startDate]/[endDate].json | Mapped | Google's migration tables cover both halves: the data (HRV summary) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Activity Intraday by Date | GET /1/user/[user-id]/activities/[resource]/date/[date]/1d/[detail-level].json | Mapped | Google's migration tables cover both halves: the data (Steps, Distance, Floors, Elevation) and the endpoint type (“GET (Intraday) where you are requesting granular data”). |
| Get Activity Intraday by Interval | GET /1/user/[user-id]/activities/[resource]/date/[start-date]/[end-date]/[detail-level].json | Mapped | Google's migration tables cover both halves: the data (Steps, Distance, Floors, Elevation) and the endpoint type (“GET (Intraday) where you are requesting granular data”). |
| Get AZM Intraday by Date | GET /1/user/[user-id]/activities/active-zone-minutes/date/[date]/1d/[detail-level].json | Mapped | Google's migration tables cover both halves: the data (Active Zone Minutes) and the endpoint type (“GET (Intraday) where you are requesting granular data”). |
| Get AZM Intraday by Interval | GET /1/user/[user-id]/activities/active-zone-minutes/date/[start-date]/[end-date]/[detail-level].json | Mapped | Google's migration tables cover both halves: the data (Active Zone Minutes) and the endpoint type (“GET (Intraday) where you are requesting granular data”). |
| Get Breathing Rate Intraday by Date | GET /1/user/[user-id]/br/date/[date]/all.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Breathing Rate Intraday by Interval | GET /1/user/[user-id]/br/date/[start-date]/[end-date]/all.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Heart Rate Intraday by Date | GET /1/user/[user-id]/activities/heart/date/[date]/1d/[detail-level].json | Mapped | Google's migration tables cover both halves: the data (Heart Rate) and the endpoint type (“GET (Intraday) where you are requesting granular data”). |
| Get Heart Rate Intraday by Interval | GET /1/user/[user-id]/activities/heart/date/[start-date]/[end-date]/[detail-level].json | Mapped | Google's migration tables cover both halves: the data (Heart Rate) and the endpoint type (“GET (Intraday) where you are requesting granular data”). |
| Get HRV Intraday by Date | GET /1/user/[user-id]/hrv/date/[date]/all.json | Mapped | Google's migration tables cover both halves: the data (HRV Intraday) and the endpoint type (“GET (Intraday) where you are requesting granular data”). |
| Get HRV Intraday by Interval | GET /1/user/[user-id]/hrv/date/[startDate]/[endDate]/all.json | Mapped | Google's migration tables cover both halves: the data (HRV Intraday) and the endpoint type (“GET (Intraday) where you are requesting granular data”). |
| Get SpO2 Intraday by Date | GET /1/user/[user-id]/spo2/date/[date]/all.json | Mapped | Google's migration tables cover both halves: the data (SpO2 Intraday) and the endpoint type (“GET (Intraday) where you are requesting granular data”). |
| Get SpO2 Intraday by Interval | GET /1/user/[user-id]/spo2/date/[start-date]/[end-date]/all.json | Mapped | Google's migration tables cover both halves: the data (SpO2 Intraday) and the endpoint type (“GET (Intraday) where you are requesting granular data”). |
| Get IRN Alerts List | GET /1/user/[user-id]/irn/alerts/list.json | Mapped | Google's migration tables cover both halves: the data (Irregular Rhythm Notifications (IRN)) and the endpoint type (“GET (Log List)”). |
| Get IRN Profile | GET /1/user/[user-id]/irn/profile.json | Name match | Google's migration tables do not list this endpoint. The discovery document has a method of the same name; that pairing is this site's name match, not Google's statement. |
| Get Nutrition Time Series by Date | GET /1/user/[user-id]/foods/log/[resource]/date/[date]/[period].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Nutrition Time Series by Date Range | GET /1/user/[user-id]/foods/log/[resource]/date/[start-date]/[end-date].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Add Favorite Foods | POST /1/user/[user-id]/foods/log/favorite/[food-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Create Food | POST /1/user/[user-id]/foods.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Create Food Goal | POST /1/user/[user-id]/foods/log/goal.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Create Food Log | POST /1/user/[user-id]/foods/log.json | Mapped | Google's migration tables cover both halves: the data (Food Log) and the endpoint type (“CREATE & UPDATE Logs”). |
| Create Meal | POST /1/user/[user-id]/meals.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Create Water Goal | POST /1/user/[user-id]/foods/log/water/goal.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Create Water Log | POST /1/user/[user-id]/foods/log/water.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Delete Custom Food | DELETE /1/user/[user-id]/foods/[food-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Delete Favorite Foods | DELETE /1/user/[user-id]/foods/log/favorite/[food-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Delete Food Log | DELETE /1/user/[user-id]/foods/log/[food-log-id].json | Mapped | Google's migration tables cover both halves: the data (Food Log) and the endpoint type (“DELETE Logs”). |
| Delete Meal | DELETE /1/user/[user-id]/meals/[meal-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Delete Water Log | DELETE /1/user/[user-id]/foods/log/water/[water-log-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Favorite Foods | GET /1/user/[user-id]/foods/log/favorite.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Food | GET /1/foods/[food-id].json | Data only | Google's data-type table maps the data, but its endpoint table has no row for this kind of endpoint, so which method replaces it is not stated. |
| Get Food Goals | GET /1/user/[user-id]/foods/log/goal.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Food Locales | GET /1/foods/locales.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Food Log | GET /1/user/[user-id]/foods/log/date/[date].json | Mapped | Google's migration tables cover both halves: the data (Food Log) and the endpoint type (“GET (Log \| Summary \| Daily Summary) where you are requesting a single day of data”). |
| Get Food Units | GET /1/foods/units.json | Data only | Google's data-type table maps the data, but its endpoint table has no row for this kind of endpoint, so which method replaces it is not stated. |
| Get Frequent Foods | GET /1/user/[user-id]/foods/log/frequent.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Meal | GET /1/user/[user-id]/meals/[meal-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Meals | GET /1/user/[user-id]/meals.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Recent Foods | GET /1/user/[user-id]/foods/log/recent.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Water Goal | GET /1/user/[user-id]/foods/log/water/goal.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Water Log | GET /1/user/[user-id]/foods/log/water/date/[date].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Search Foods | GET /1/foods/search.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Update Food Log | POST /1/user/[user-id]/foods/log.json | Mapped | Google's migration tables cover both halves: the data (Food Log) and the endpoint type (“CREATE & UPDATE Logs”). |
| Update Meal | POST /1/user/[user-id]/meals/[meal-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Update Water Log | POST /1/user/[user-id]/foods/log/water/[water-log-id].json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Create Sleep Goal | POST /1.2/user/[user-id]/sleep/goal.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Create Sleep Log | POST /1.2/user/[user-id]/sleep.json | Mapped | Google's migration tables cover both halves: the data (Sleep) and the endpoint type (“CREATE & UPDATE Logs”). |
| Delete Sleep Log | DELETE /1.2/user/[user-id]/sleep/[log-id].json | Mapped | Google's migration tables cover both halves: the data (Sleep) and the endpoint type (“DELETE Logs”). |
| Get Sleep Goal | GET /1.2/user/[user-id]/sleep/goal.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Sleep Log by Date | GET /1.2/user/[user-id]/sleep/date/[date].json | Mapped | Google's migration tables cover both halves: the data (Sleep) and the endpoint type (“GET (Log \| Summary \| Daily Summary) where you are requesting a single day of data”). |
| Get Sleep Log by Date Range | GET /1.2/user/[user-id]/sleep/date/[startDate]/[endDate].json | Mapped | Google's migration tables cover both halves: the data (Sleep) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Sleep Log List | GET /1.2/user/[user-id]/sleep/list.json | Mapped | Google's migration tables cover both halves: the data (Sleep) and the endpoint type (“GET (Log List)”). |
| Get SpO2 Summary by Date | GET /1/user/[user-id]/spo2/date/[date].json | Mapped | Google's migration tables cover both halves: the data (SpO2 summary) and the endpoint type (“GET (Log \| Summary \| Daily Summary) where you are requesting a single day of data”). |
| Get SpO2 Summary by Interval | GET /1/user/[user-id]/spo2/date/[start-date]/[end-date].json | Mapped | Google's migration tables cover both halves: the data (SpO2 summary) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Create Subscription | POST /1/user/[user-id]/[collection-path]/apiSubscriptions/[subscription-id].json | Mapped | Google's endpoint table names this endpoint (“Create Subscriptions”). |
| Delete Subscription | DELETE /1/user/[user-id]/[collection-path]/apiSubscriptions/[subscription-id].json | Mapped | Google's endpoint table names this endpoint (“Delete Subscriptions”). |
| Get Subscription List | GET /1/user/[user-id]/[collection-path]/apiSubscriptions.json | Mapped | Google's endpoint table names this endpoint (“Get Subscriptions List”). |
| Get Temperature (Core) Summary by Date | GET /1/user/[user-id]/temp/core/date/[date].json | Mapped | Google's migration tables cover both halves: the data (Temperature (Core)) and the endpoint type (“GET (Log \| Summary \| Daily Summary) where you are requesting a single day of data”). |
| Get Temperature (Core) Summary by Interval | GET /1/user/[user-id]/temp/core/date/[start-date]/[end-date].json | Mapped | Google's migration tables cover both halves: the data (Temperature (Core)) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Temperature (Skin) Summary by Date | GET /1/user/[user-id]/temp/skin/date/[date].json | Mapped | Google's migration tables cover both halves: the data (Skin temperature) and the endpoint type (“GET (Log \| Summary \| Daily Summary) where you are requesting a single day of data”). |
| Get Temperature (Skin) Summary by Interval | GET /1/user/[user-id]/temp/skin/date/[start-date]/[end-date].json | Mapped | Google's migration tables cover both halves: the data (Skin temperature) and the endpoint type (“GET (Time Series) by Date or Interval”). |
| Get Badges | GET /1/user/[user-id]/badges.json | Not in Google's tables | Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API. |
| Get Profile | GET /1/user/[user-id]/profile.json | Mapped | Google's endpoint table names this endpoint (“GET Profile”). |
| Update Profile | POST /1/user/[user-id]/profile.json | Mapped | Google's endpoint table names this endpoint (“UPDATE Profile”). |

| Fitbit endpoint | Google Health API data type | Basis |
|---|---|---|
| Get AZM Time Series by Date | Active Zone Minutes active-zone-minutes | Google’s row: “Active Zone Minutes”. On Fitbit’s page: active-zone-minutes |
| Get AZM Time Series by Interval | Active Zone Minutes active-zone-minutes | Google’s row: “Active Zone Minutes”. On Fitbit’s page: active-zone-minutes |
| Get Activity Time Series by Date | Steps steps | Google’s row: “Steps”. On Fitbit’s page: steps |
| Get Activity Time Series by Date | Distance distance | Google’s row: “Distance”. On Fitbit’s page: distance |
| Get Activity Time Series by Date | Floors floors | Google’s row: “Floors”. On Fitbit’s page: floors |
| Get Activity Time Series by Date | Altitude altitude | Google’s row: “Elevation”. On Fitbit’s page: elevation |
| Get Activity Time Series by Date | Active Energy Burned active-energy-burned | Google’s row: “Activity Calories”. On Fitbit’s page: activityCalories |
| Get Activity Time Series by Date | Basal Energy Burned basal-energy-burned | Google’s row: “Activity `caloriesBMR`”. On Fitbit’s page: caloriesBMR |
| Get Activity Time Series by Date | Sedentary Period sedentary-period | Google’s row: “Activity time series minutes sedentary”. On Fitbit’s page: minutesSedentary |
| Get Activity Time Series by Date | Swim Lengths Data swim-lengths-data | Google’s row: “Activity time series swimming strokes”. On Fitbit’s page: swimming-strokes |
| Get Activity Time Series by Date Range | Steps steps | Google’s row: “Steps”. On Fitbit’s page: steps |
| Get Activity Time Series by Date Range | Distance distance | Google’s row: “Distance”. On Fitbit’s page: distance |
| Get Activity Time Series by Date Range | Floors floors | Google’s row: “Floors”. On Fitbit’s page: floors |
| Get Activity Time Series by Date Range | Altitude altitude | Google’s row: “Elevation”. On Fitbit’s page: elevation |
| Get Activity Time Series by Date Range | Active Energy Burned active-energy-burned | Google’s row: “Activity Calories”. On Fitbit’s page: activityCalories |
| Get Activity Time Series by Date Range | Basal Energy Burned basal-energy-burned | Google’s row: “Activity `caloriesBMR`”. On Fitbit’s page: caloriesBMR |
| Get Activity Time Series by Date Range | Sedentary Period sedentary-period | Google’s row: “Activity time series minutes sedentary”. On Fitbit’s page: minutesSedentary |
| Get Activity Time Series by Date Range | Swim Lengths Data swim-lengths-data | Google’s row: “Activity time series swimming strokes”. On Fitbit’s page: swimming-strokes |
| Create Activity Log | Exercise exercise | Google’s row: “Recorded activity”. On Fitbit’s page: activityName |
| Delete Activity Log | Exercise exercise | Google’s row: “Recorded activity”. On Fitbit’s page: activity-log-id |
| Get Activity Log List | Exercise exercise | Google’s row: “Recorded activity”. On Fitbit’s page: activityName |
| Get Daily Activity Summary | Total Calories total-calories | Google’s row: “Activity `caloriesOut`”. On Fitbit’s page: caloriesOut |
| Get Daily Activity Summary | Basal Energy Burned basal-energy-burned | Google’s row: “Activity `caloriesBMR`”. On Fitbit’s page: caloriesBMR |
| Get Daily Activity Summary | Active Energy Burned active-energy-burned | Google’s row: “Activity Calories”. On Fitbit’s page: activityCalories |
| Get Daily Activity Summary | Steps steps | Google’s row: “Steps”. On Fitbit’s page: steps |
| Get Daily Activity Summary | Floors floors | Google’s row: “Floors”. On Fitbit’s page: floors |
| Get Daily Activity Summary | Altitude altitude | Google’s row: “Elevation”. On Fitbit’s page: elevation |
| Get Daily Activity Summary | Daily Resting Heart Rate daily-resting-heart-rate | Google’s row: “Resting heart rate”. On Fitbit’s page: restingHeartRate |
| Get Blood Glucose by Interval | Blood Glucose blood-glucose | Google’s row: “Blood Glucose”. On Fitbit’s page: glucose |
| Get Body Time Series by Date | Weight weight | Google’s row: “Weight”. On Fitbit’s page: weight |
| Get Body Time Series by Date | Body Fat body-fat | Google’s row: “Body fat”. On Fitbit’s page: fat |
| Get Body Time Series by Date Range | Weight weight | Google’s row: “Weight”. On Fitbit’s page: weight |
| Get Body Time Series by Date Range | Body Fat body-fat | Google’s row: “Body fat”. On Fitbit’s page: fat |
| Get Body Fat Time Series by Date | Body Fat body-fat | Google’s row: “Body fat”. On Fitbit’s page: fat |
| Get Body Fat Time Series by Date Range | Body Fat body-fat | Google’s row: “Body fat”. On Fitbit’s page: fat |
| Get Weight Time Series by Date | Weight weight | Google’s row: “Weight”. On Fitbit’s page: weight |
| Get Weight Time Series by Date Range | Weight weight | Google’s row: “Weight”. On Fitbit’s page: weight |
| Create Body Fat Log | Body Fat body-fat | Google’s row: “Body fat”. On Fitbit’s page: fat |
| Create Weight Log | Weight weight | Google’s row: “Weight”. On Fitbit’s page: weight |
| Delete Body Fat Log | Body Fat body-fat | Google’s row: “Body fat”. On Fitbit’s page: body-fat-log-id |
| Delete Weight Log | Weight weight | Google’s row: “Weight”. On Fitbit’s page: weight-log-id |
| Get Body Fat Log | Body Fat body-fat | Google’s row: “Body fat”. On Fitbit’s page: fat |
| Get Weight Log | Weight weight | Google’s row: “Weight”. On Fitbit’s page: weight |
| Get VO2 Max Summary by Date | VO2 Max vo2-max | Google’s row: “VO2 Max value”. On Fitbit’s page: vo2Max |
| Get VO2 Max Summary by Interval | VO2 Max vo2-max | Google’s row: “VO2 Max value”. On Fitbit’s page: vo2Max |
| Get ECG Log List | Electrocardiogram (ECG) electrocardiogram | Google’s row: “Electrocardiogram (ECG)”. On Fitbit’s page: ECG |
| Get Heart Rate Time Series by Date | Daily Resting Heart Rate daily-resting-heart-rate | Google’s row: “Resting heart rate”. On Fitbit’s page: restingHeartRate |
| Get Heart Rate Time Series by Date | Calories In Heart Rate Zone calories-in-heart-rate-zone | Google’s row: “`caloriesOut` in each heart rate zone”. On Fitbit’s page: caloriesOut |
| Get Heart Rate Time Series by Date Range | Daily Resting Heart Rate daily-resting-heart-rate | Google’s row: “Resting heart rate”. On Fitbit’s page: restingHeartRate |
| Get Heart Rate Time Series by Date Range | Calories In Heart Rate Zone calories-in-heart-rate-zone | Google’s row: “`caloriesOut` in each heart rate zone”. On Fitbit’s page: caloriesOut |
| Get HRV Summary by Date | Daily Heart Rate Variability daily-heart-rate-variability | Google’s row: “HRV summary”. On Fitbit’s page: dailyRmssd |
| Get HRV Summary by Interval | Daily Heart Rate Variability daily-heart-rate-variability | Google’s row: “HRV summary”. On Fitbit’s page: dailyRmssd |
| Get Activity Intraday by Date | Steps steps | Google’s row: “Steps”. On Fitbit’s page: steps |
| Get Activity Intraday by Date | Distance distance | Google’s row: “Distance”. On Fitbit’s page: distance |
| Get Activity Intraday by Date | Floors floors | Google’s row: “Floors”. On Fitbit’s page: floors |
| Get Activity Intraday by Date | Altitude altitude | Google’s row: “Elevation”. On Fitbit’s page: elevation |
| Get Activity Intraday by Interval | Steps steps | Google’s row: “Steps”. On Fitbit’s page: steps |
| Get Activity Intraday by Interval | Distance distance | Google’s row: “Distance”. On Fitbit’s page: distance |
| Get Activity Intraday by Interval | Floors floors | Google’s row: “Floors”. On Fitbit’s page: floors |
| Get Activity Intraday by Interval | Altitude altitude | Google’s row: “Elevation”. On Fitbit’s page: elevation |
| Get AZM Intraday by Date | Active Zone Minutes active-zone-minutes | Google’s row: “Active Zone Minutes”. On Fitbit’s page: active-zone-minutes |
| Get AZM Intraday by Interval | Active Zone Minutes active-zone-minutes | Google’s row: “Active Zone Minutes”. On Fitbit’s page: active-zone-minutes |
| Get Heart Rate Intraday by Date | Heart Rate heart-rate | Google’s row: “Heart Rate”. On Fitbit’s page: heart |
| Get Heart Rate Intraday by Interval | Heart Rate heart-rate | Google’s row: “Heart Rate”. On Fitbit’s page: heart |
| Get HRV Intraday by Date | Heart Rate Variability heart-rate-variability | Google’s row: “HRV Intraday”. On Fitbit’s page: rmssd |
| Get HRV Intraday by Interval | Heart Rate Variability heart-rate-variability | Google’s row: “HRV Intraday”. On Fitbit’s page: rmssd |
| Get SpO2 Intraday by Date | Oxygen Saturation oxygen-saturation | Google’s row: “SpO2 Intraday”. On Fitbit’s page: minutes |
| Get SpO2 Intraday by Interval | Oxygen Saturation oxygen-saturation | Google’s row: “SpO2 Intraday”. On Fitbit’s page: minutes |
| Get IRN Alerts List | Irregular Rhythm Notification irregular-rhythm-notification | Google’s row: “Irregular Rhythm Notifications (IRN)”. On Fitbit’s page: IRN |
| Create Food Log | Nutrition Log nutrition-log | Google’s row: “Food Log”. On Fitbit’s page: foodId |
| Delete Food Log | Nutrition Log nutrition-log | Google’s row: “Food Log”. On Fitbit’s page: food-log-id |
| Get Food | Food food | Google’s row: “Food”. On Fitbit’s page: food-id |
| Get Food Log | Nutrition Log nutrition-log | Google’s row: “Food Log”. On Fitbit’s page: foods |
| Get Food Units | Food Measurement Unit food-measurement-unit | Google’s row: “Food Measurement Unit”. On Fitbit’s page: units |
| Update Food Log | Nutrition Log nutrition-log | Google’s row: “Food Log”. On Fitbit’s page: food-log-id |
| Create Sleep Log | Sleep sleep | Google’s row: “Sleep”. On Fitbit’s page: sleep |
| Delete Sleep Log | Sleep sleep | Google’s row: “Sleep”. On Fitbit’s page: sleep |
| Get Sleep Log by Date | Sleep sleep | Google’s row: “Sleep”. On Fitbit’s page: levels |
| Get Sleep Log by Date Range | Sleep sleep | Google’s row: “Sleep”. On Fitbit’s page: levels |
| Get Sleep Log List | Sleep sleep | Google’s row: “Sleep”. On Fitbit’s page: levels |
| Get SpO2 Summary by Date | Daily Oxygen Saturation daily-oxygen-saturation | Google’s row: “SpO2 summary”. On Fitbit’s page: avg |
| Get SpO2 Summary by Interval | Daily Oxygen Saturation daily-oxygen-saturation | Google’s row: “SpO2 summary”. On Fitbit’s page: avg |
| Get Temperature (Core) Summary by Date | Core Body Temperature core-body-temperature | Google’s row: “Temperature (Core)”. On Fitbit’s page: core |
| Get Temperature (Core) Summary by Interval | Core Body Temperature core-body-temperature | Google’s row: “Temperature (Core)”. On Fitbit’s page: core |
| Get Temperature (Skin) Summary by Date | Daily Sleep Temperature Derivations daily-sleep-temperature-derivations | Google’s row: “Skin temperature”. On Fitbit’s page: nightlyRelative |
| Get Temperature (Skin) Summary by Interval | Daily Sleep Temperature Derivations daily-sleep-temperature-derivations | Google’s row: “Skin temperature”. On Fitbit’s page: nightlyRelative |

## How each row is built

1. Fitbit’s side, verbatim. Title, opening sentence, HTTP method, path and Scope: line from each endpoint page of Fitbit’s Web API reference, read 2026-11-05 through a source snapshot (121 pages in 23 sections).
2. Scopes: Google’s scope table, from the Fitbit scope on the endpoint’s page.

## Google rows no endpoint page here names

- “Contains changes to the user's activity levels” → [Activity Level](https://aifitnessapi.com/google-health-api/activity-level)
- “VO2 Max value when the user runs” → [Run VO2 Max](https://aifitnessapi.com/google-health-api/run-vo2-max)

A free tool from AIFitnessAPI. Each Google data type has its own page under [the Google Health API reference](https://aifitnessapi.com/google-health-api). More at [free tools for health-app builders](https://aifitnessapi.com/tools).

## The other 15 tools

- [Which error is this?](https://aifitnessapi.com/tools/error-diagnoser): Paste an error string and get the matching HKError.Code case in Apple's wording, plus the guide that covers it.
- [Sum it or average it?](https://aifitnessapi.com/tools/aggregation-checker): Whether Apple describes a quantity type as cumulative or discrete, with the sentence that says so.
- [Apple type, Android record](https://aifitnessapi.com/tools/identifier-translator): Two-way lookup between HealthKit identifiers and Health Connect records — verified pairs only.
- [HealthKit permission builder](https://aifitnessapi.com/tools/permission-builder): Pick the types your app touches: the Info.plist keys, the toShare/toRead Swift, and the Health Connect record names.
- [HealthKit query generator](https://aifitnessapi.com/tools/query-generator): Pick a quantity type and a window; get the HKStatisticsQuery with the aggregation option Apple's own prose states.
- [Fitness app stack generator](https://aifitnessapi.com/tools/stack-generator): Answer four questions and get the HealthKit types and APIs that survive them, with the exclusions shown.
- [Synthetic health data generator](https://aifitnessapi.com/tools/sample-data): Seeded synthetic HealthKit, Health Connect and Google Health API fixtures as JSON or CSV, with per-record UTC offsets.
- [Is this webhook real?](https://aifitnessapi.com/tools/webhook-verifier): Paste an Oura, WHOOP, Terra, Polar, Strava, Withings, Wahoo or Google Health API webhook: the vendor's documented check, run in your browser.
- [Wearable OAuth playground](https://aifitnessapi.com/tools/oauth-playground): Pick Oura, WHOOP, Strava, Polar, Withings, Wahoo, Dexcom, Suunto or Google Health: documented endpoints and scopes, an authorize URL, a PKCE pair and token curl. Sends nothing.
- [Starter scaffold generator](https://aifitnessapi.com/tools/starter-scaffold): Pick Express, Next.js or FastAPI and Oura, WHOOP, Polar, Strava or Wahoo: a tested project skeleton with OAuth routes, a token store and verified webhooks, as a .zip.
- [Pose keypoint playground](https://aifitnessapi.com/tools/keypoint-playground): Click a joint and see its index in BlazePose, COCO, OpenPose, ML Kit and Apple Vision, then copy an index map built from matching names only.
- [Exercise form rules](https://aifitnessapi.com/tools/exercise-form-rules): The joint-angle thresholds open-source exercise trackers use for squats, push-ups, lunges, planks, curls and presses, each quoted from its code; null where none says.
- [Exercise taxonomy crosswalk](https://aifitnessapi.com/tools/exercise-taxonomy-crosswalk): free-exercise-db, wger and ExerciseDB v1 categories, equipment and muscles against HealthKit and Health Connect workout types, matched by name only.
- [Health data schema converter](https://aifitnessapi.com/tools/schema-converter): Paste a HealthKit export row, Health Connect record or Google Health API data point and see it in one unified schema, each field traced to its source.
- [Deprecation scanner](https://aifitnessapi.com/tools/deprecation-scanner): Paste code or a manifest and find Fitbit Web API, Google Fit and other retired fitness API calls, each with its replacement. Also a GitHub Action.

The planners and demos — the API picker, the cost planner, the side-by-side comparison, the day-boundary demo, the pose-model benchmark, the Bluetooth heart-rate lab and the step lab — are listed with these on [free tools for health-app builders](https://aifitnessapi.com/tools).

## Next step

Turning this into a choice of API:

- [Migrating from the Fitbit Web API to the Google Health API](https://aifitnessapi.com/migrate/fitbit-web-api-to-google-health)
- [The Best Fitbit API Alternatives (2026)](https://aifitnessapi.com/alternatives/fitbit-api-alternatives)
- [The Best Wearable Fitness & Health-Data APIs (2026)](https://aifitnessapi.com/fitness-apis/wearable-data-apis)
