Skip to content
AF
Free Tool

Fitness API deprecation scanner: find Fitbit Web API, Google Fit and other dead calls

Paste code, a package.json, build.gradle, Podfile or requirements.txt, or a list of URLs, and this scanner finds references to fitness APIs and SDKs their vendors have shut down, scheduled to shut down or deprecated: all 121 Fitbit Web API endpoints (turn-off November 2, 2026, per Google), the Google Fit REST and Android APIs (end of support 2026), and 10 more from this site's Fitness API Graveyard, 129 patterns in all. Each hit shows the line, what happened in the vendor's own words at the precision the vendor gave, and the replacement the vendor or Google's migration tables name, with the migration guide. The scan runs in your browser; nothing is uploaded. The same rules run in CI as a GitHub Action.

Samples (synthetic): · · · ·

Run the same scan in CI

The rules above also ship as a GitHub Action in this site’s repository. Add this workflow to .github/workflows/:

name: Fitness API deprecation check
on: [pull_request]
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: nikitastarovzz/aifitnessapi/actions/fitness-api-deprecation-check@main
        with:
          path: .
          fail-on: error # or: warning, never

GitHub Action: uses: nikitastarovzz/aifitnessapi/actions/fitness-api-deprecation-check@main (inputs path, exclude, fail-on = error | warning | never; outputs hits, errors, warnings). It writes an annotation on each line and a job summary table, with no dependencies and nothing sent anywhere. "error" means the vendor says the API is gone, or it is dying and the date the vendor gave has passed; "warning" means deprecated, or dying with the date still ahead. A line containing fitness-api-deprecation-ignore is skipped.

The Action and this page run one rule file and one engine. Both are written by a generator from this site’s data, and the build fails when the Action’s copy differs, so the two cannot disagree. A workflow in the repository runs the Action on its own test fixtures on every change.

What it looks for

129 patterns over 14 entries of the Fitness API Graveyard. Status and date are the graveyard’s, which keeps each vendor’s precision: a year stays a year. Each Fitbit hit links its row on the Fitbit to Google Health API map.

API or SDKStatusWhat is matchedReplacement the vendor names
Fitbit Web APIGoogle (Fitbit)Dying. Turn-off: November 2, 2026Every endpoint path in Fitbit’s reference (102 paths for 121 endpoints), its OAuth endpoints on a fitbit.com host, the api.fitbit.com host, and fitbit (PyPI), a client for the Fitbit Web API.Google Health API
Terra legacy widget session endpointTerraDying. Deprecation planned: November 3, 2026
  • Terra legacy widget session (POST /v2/auth/generateWidgetSession)
POST access.tryterra.co/api/widget/session
Google Fit APIs (Android and REST)GoogleDying. End of support: 2026
  • Google Fit REST API (www.googleapis.com/fitness/v1)
  • Google Fit Android SDK (com.google.android.gms:play-services-fitness)
  • Google Fit History API (Fitness.getHistoryClient)
  • Google Fit Session API (Fitness.getSessionsClient)
  • Google Fit Recording API (Fitness.getRecordingClient)
  • react-native-google-fit (npm), a client for the Google Fit
Google Health API (cloud); Health Connect (Android)
Google Fit Goals APIGoogleDying. End of support: 2026
  • Google Fit Goals API (Fitness.getGoalsClient)
None
Google Fit Sensors API and BLE APIGoogleDying. End of support: 2026
  • Google Fit Sensors API (Fitness.getSensorsClient)
Android Sensors framework or Fused Location Provider (Sensors API); Android Bluetooth APIs (BLE API)
Strava Club Activities, Club Members and Club Admins endpointsStravaDead. Removed: September 1, 2026
  • Strava club activities endpoint (/api/v3/clubs/{id}/activities)
  • Strava club members endpoint (/api/v3/clubs/{id}/members)
  • Strava club admins endpoint (/api/v3/clubs/{id}/admins)
None
Samsung Health SDK for AndroidSamsungDeprecated. Deprecated: July 31, 2025
  • Samsung Health SDK for Android (package com.samsung.android.sdk.healthdata)
Samsung Health Data SDK
Oura API V1OuraDead. Removed: January 22, 2024
  • Oura API V1 (api.ouraring.com/v1/)
Oura API V2
WHOOP API v1WHOOPDeprecated. No longer supported
  • WHOOP API v1 (/developer/v1/activity/sleep)
  • WHOOP API v1 (/developer/v1/activity/workout)
  • WHOOP API v1 (/developer/v1/cycle)
  • WHOOP API v1 (/developer/v1/recovery)
WHOOP API v2
MediaPipe Pose (Legacy Solution)GoogleDeprecated. Upgraded to a new solution: May 10, 2023
  • MediaPipe Pose legacy solution (mp.solutions.pose)
  • MediaPipe Pose legacy web package (@mediapipe/pose)
MediaPipe Pose Landmarker (Tasks API)
PoseNet for TensorFlow.js (@tensorflow-models/posenet)Google (TensorFlow.js)Deprecated. Deprecated
  • PoseNet for TensorFlow.js (@tensorflow-models/posenet)
@tensorflow-models/pose-detection
Strava Running Races endpointsStravaDead. Removed: November 1, 2021
  • Strava running races endpoints (/api/v3/running_races)
None
Moves app and developer APIMovesDead. Shut down: July 31, 2018
  • Moves API (api.moves-app.com)
None
Google Health (personal health record service)GoogleDead. Retired: January 1, 2012
  • Google Health data feeds (www.google.com/health/feeds)
None

What it does not look for

How a hit is decided

  1. Only strings a vendor prints. Every pattern is a written form of something on a vendor page (a path in Fitbit's request tables, a host or a Gradle coordinate in Google's Fit docs, a package name on its registry page), and “Why this pattern” under each hit quotes that page. An API the site has not sourced is not guessed at.
  2. Most specific wins. A Fitbit URL is matched against every endpoint path, placeholders and all ({date}, ${id}, %s), and the longest fixed text wins. The bare host, or a /1/user/ path in a file that names Fitbit, reports only when no endpoint matched the line, which is how a URL built by string concatenation is still found.
  3. Packages by registry. npm names match in code and package.json; PyPI names only on a line of a Python manifest (requirements.txt, pyproject.toml, Pipfile), since a Python import name need not be the package name.
  4. Severity from the vendor's date. Red (an error in CI) when the vendor says it is gone, or it is dying and the date given has passed; a year counts as passed only after December 31. Amber (a warning) for deprecated, or dying with the date ahead.
  5. The replacement is the vendor's. For Fitbit endpoints, the Google Health API data type and method from Google's migration tables, the same rows as the Fitbit to Google Health API map; where the tables have no row, the hit says so.
Sources and what this cannot tell you

Built 2026-11-06 from: the graveyard (entries read up to 2026-10-31), Fitbit’s Web API reference (read 2026-11-05 through source snapshots), Google’s migration tables (read 2026-10-31), the library registry data (read 2026-10-03) and the pages behind the other patterns (read 2026-11-06; hosts blocked from where this site is built were read on a GitHub runner, and old API docs through Internet Archive captures). Each quoted passage is in an evidence file that a weekly workflow re-checks against the live page.

A text scan cannot see a URL assembled across files, a call made inside a dependency, or an SDK pulled in by another SDK. A clean result means none of these patterns appear, not that nothing in the app depends on a retired API. Pasted text and opened files stay in this tab.

A free tool from AIFitnessAPI. More at free tools for health-app builders.

Next step

Turning this into a choice of API: