{
  "name": "Fitness API Shutdown Notice 2026 (announcement to end date, per graveyard entry)",
  "version": "2026.1",
  "publisher": "AIFitnessAPI (aifitnessapi.com)",
  "license": "CC BY 4.0",
  "methodology": "One row per entry of the Fitness API Graveyard (src/data/graveyard.ts). end, its precision and the end quote are the graveyard's, copied. announced is the day the vendor published the notice, only where a vendor page read on 2026-11-06 dates it (a changelog entry or a timestamped post), with the quote; changes.ts was searched too and its entries date the events themselves, not their announcement (changesEntries lists the tracked changes on the same day as the end). noticeDays is the whole days from announced to end, and is computed only when both are dates to the day. Every other row carries the exclusion that stops it and a note on what the pages read do say. No date is inferred from press coverage, a capture date or a sign-up cut-off.",
  "generatedFrom": "src/data/researchStudies.ts NOTICE_ROWS (generated by scripts/build-research.mjs from src/data/graveyard.ts, src/data/changes.ts and ops/research/shutdown-announcements.json, then by scripts/build-datasets.mjs)",
  "isBasedOn": [
    "https://developers.google.com/health/about",
    "https://docs.tryterra.co/unified-api/user-authentication/implementation-terra-widget",
    "https://developer.android.com/health-and-fitness/health-connect/migration/fit",
    "https://developers.strava.com/docs/changelog/",
    "https://developer.samsung.com/health/android/overview.html",
    "https://cloud.ouraring.com/docs/",
    "https://cloud.ouraring.com/v2/static/json/openapi-1.43.json",
    "https://developer.whoop.com/docs/developing/v1-v2-migration/",
    "https://raw.githubusercontent.com/google-ai-edge/mediapipe/master/docs/solutions/pose.md",
    "https://raw.githubusercontent.com/tensorflow/tfjs-models/master/posenet/README.md",
    "https://web.archive.org/web/20181231164810/https://dev.moves-app.com/",
    "https://web.archive.org/web/20120107124413/http://googleblog.blogspot.com/2011/06/update-on-google-health-and-google.html"
  ],
  "sourceReadOn": "2026-11-06",
  "fields": {
    "id": "The graveyard entry's id (/graveyard#<id>)",
    "name": "What was shut down or deprecated",
    "vendor": "Who did it",
    "status": "dead, dying or deprecated, as the graveyard records it",
    "end": "The end date at the source's precision; null where the vendor gives none",
    "endPrecision": "day, month or year; null with no end date",
    "endLabel": "What happens on the end date, in the vendor's terms",
    "announced": "The day the vendor published the notice, where a page read dates it; null otherwise",
    "noticeDays": "Whole days from announced to end; null unless both are dates to the day",
    "exclusion": "Why noticeDays is null; null when it is computed",
    "note": "What the pages read say instead of an announcement date",
    "how": "How the page read dates the announcement",
    "announcementUrl": "The page that dates the announcement",
    "announcementQuote": "Verbatim from that page",
    "endUrl": "The graveyard's source for the end",
    "endQuote": "The graveyard's quote for the end",
    "changesEntries": "Titles of changes-tracker entries on the same page and the same date as the end",
    "page": "This site's row"
  },
  "stats": {
    "totalItems": 15,
    "measured": 3,
    "excluded": 12
  },
  "items": [
    {
      "id": "fitbit-web-api",
      "name": "Fitbit Web API",
      "vendor": "Google (Fitbit)",
      "status": "dying",
      "end": "2026-11-02",
      "endPrecision": "day",
      "endLabel": "Turn-off",
      "announced": null,
      "noticeDays": null,
      "exclusion": "no dated announcement on the pages read",
      "note": "Google's Google Health API page, read 2026-11-06, gives the end of support (September 30, 2026) and the turn-off (November 2, 2026) but no date for when either was announced.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://developers.google.com/health/about",
      "endQuote": "The Fitbit Web API and Fitbit OAuth endpoints will be turned off and will no longer function or sync data to or from Fitbit users. Requests to these endpoints will fail and return an HTTP 410 Gone status code.",
      "changesEntries": "Fitbit Web API turn-off moves to November 2, 2026",
      "page": "/graveyard#fitbit-web-api"
    },
    {
      "id": "terra-legacy-widget-session",
      "name": "Terra legacy widget session endpoint",
      "vendor": "Terra",
      "status": "dying",
      "end": "2026-11-03",
      "endPrecision": "day",
      "endLabel": "Deprecation planned",
      "announced": null,
      "noticeDays": null,
      "exclusion": "no dated announcement on the pages read",
      "note": "Terra's widget documentation, read 2026-11-06, gives the planned deprecation date and a 3 September 2026 cut-off for new accounts, but not when the deprecation was announced.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://docs.tryterra.co/unified-api/user-authentication/implementation-terra-widget",
      "endQuote": "Existing integrations keep working today, and the legacy endpoint is planned for deprecation on 3 November 2026. Accounts created after 3 September 2026 cannot use it at all.",
      "changesEntries": "Terra legacy widget endpoint deprecation",
      "page": "/graveyard#terra-legacy-widget-session"
    },
    {
      "id": "google-fit-apis",
      "name": "Google Fit APIs (Android and REST)",
      "vendor": "Google",
      "status": "dying",
      "end": "2026",
      "endPrecision": "year",
      "endLabel": "End of support",
      "announced": null,
      "noticeDays": null,
      "exclusion": "end date given only as a year",
      "note": "Google's Fit page, read 2026-11-06, says the APIs will be deprecated in 2026; its May 1, 2024 date is when new sign-ups closed, not an announcement.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://developer.android.com/health-and-fitness/health-connect/migration/fit",
      "endQuote": "The Google Fit API (including the REST API) will only be supported until the end of 2026. We recommend migrating to the Google Health API for cloud-based integrations or Health Connect for step tracking and mobile-first apps.",
      "changesEntries": null,
      "page": "/graveyard#google-fit-apis"
    },
    {
      "id": "google-fit-goals-api",
      "name": "Google Fit Goals API",
      "vendor": "Google",
      "status": "dying",
      "end": "2026",
      "endPrecision": "year",
      "endLabel": "End of support",
      "announced": null,
      "noticeDays": null,
      "exclusion": "end date given only as a year",
      "note": "Google's migration guide lists it among the features with no replacement and dates the end only to 2026.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://developer.android.com/health-and-fitness/health-connect/migration/fit",
      "endQuote": "No replacement API available. Manage goal tracking and daily activity targets within your application logic.",
      "changesEntries": null,
      "page": "/graveyard#google-fit-goals-api"
    },
    {
      "id": "google-fit-sensors-ble-apis",
      "name": "Google Fit Sensors API and BLE API",
      "vendor": "Google",
      "status": "dying",
      "end": "2026",
      "endPrecision": "year",
      "endLabel": "End of support",
      "announced": null,
      "noticeDays": null,
      "exclusion": "end date given only as a year",
      "note": "Google's migration guide lists both among the features with no direct replacement and dates the end only to 2026.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://developer.android.com/health-and-fitness/health-connect/migration/fit",
      "endQuote": "The following features don't have a direct API replacement. Use the recommended Android standard APIs:",
      "changesEntries": null,
      "page": "/graveyard#google-fit-sensors-ble-apis"
    },
    {
      "id": "strava-club-endpoints",
      "name": "Strava Club Activities, Club Members and Club Admins endpoints",
      "vendor": "Strava",
      "status": "dead",
      "end": "2026-09-01",
      "endPrecision": "day",
      "endLabel": "Removed",
      "announced": "2026-06-01",
      "noticeDays": 92,
      "exclusion": null,
      "note": null,
      "how": "Strava's changelog lists the removal under its entry of June 1, 2026.",
      "announcementUrl": "https://developers.strava.com/docs/changelog/",
      "announcementQuote": "and Club Admins endpoints will be removed on September 1, 2026",
      "endUrl": "https://developers.strava.com/docs/changelog/",
      "endQuote": "Club Activities, Club Members, and Club Admins endpoints removed",
      "changesEntries": null,
      "page": "/graveyard#strava-club-endpoints"
    },
    {
      "id": "samsung-health-sdk-android",
      "name": "Samsung Health SDK for Android",
      "vendor": "Samsung",
      "status": "deprecated",
      "end": "2025-07-31",
      "endPrecision": "day",
      "endLabel": "Deprecated",
      "announced": null,
      "noticeDays": null,
      "exclusion": "no dated announcement on the pages read",
      "note": "Samsung's overview page, read 2026-11-06, dates the deprecation, not its announcement.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://developer.samsung.com/health/android/overview.html",
      "endQuote": "Samsung Health SDK for Android has been depricated as of 31 July, 2025. Please use Samsung Health Data SDK to access Samsung Health data to integrate with Samsung Health.",
      "changesEntries": null,
      "page": "/graveyard#samsung-health-sdk-android"
    },
    {
      "id": "oura-api-v1",
      "name": "Oura API V1",
      "vendor": "Oura",
      "status": "dead",
      "end": "2024-01-22",
      "endPrecision": "day",
      "endLabel": "Removed",
      "announced": null,
      "noticeDays": null,
      "exclusion": "no dated announcement on the pages read",
      "note": "Oura's API V1 page, read 2026-11-06, dates the removal, not its announcement.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://cloud.ouraring.com/docs/",
      "endQuote": "The V1 API was removed on January 22nd, 2024.",
      "changesEntries": null,
      "page": "/graveyard#oura-api-v1"
    },
    {
      "id": "oura-personal-access-tokens",
      "name": "Oura personal access tokens",
      "vendor": "Oura",
      "status": "dead",
      "end": "2025-12",
      "endPrecision": "month",
      "endLabel": "Deprecated, no longer available",
      "announced": null,
      "noticeDays": null,
      "exclusion": "no dated announcement on the pages read",
      "note": "Oura's API specification, as quoted in the graveyard, dates the deprecation to December 2025 and gives no announcement date.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://cloud.ouraring.com/v2/static/json/openapi-1.43.json",
      "endQuote": "Please note that personal access tokens were deprecated in December 2025 and are no longer available for use.",
      "changesEntries": "Oura personal access tokens deprecated",
      "page": "/graveyard#oura-personal-access-tokens"
    },
    {
      "id": "whoop-api-v1",
      "name": "WHOOP API v1",
      "vendor": "WHOOP",
      "status": "deprecated",
      "end": null,
      "endPrecision": null,
      "endLabel": "No longer supported",
      "announced": null,
      "noticeDays": null,
      "exclusion": "no end date",
      "note": "WHOOP's migration guide says v1 is no longer supported and gives no date.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://developer.whoop.com/docs/developing/v1-v2-migration/",
      "endQuote": "The v1 API is no longer supported and any new features or functionality will be added to v2 only.",
      "changesEntries": null,
      "page": "/graveyard#whoop-api-v1"
    },
    {
      "id": "mediapipe-legacy-pose",
      "name": "MediaPipe Pose (Legacy Solution)",
      "vendor": "Google",
      "status": "deprecated",
      "end": "2023-05-10",
      "endPrecision": "day",
      "endLabel": "Upgraded to a new solution",
      "announced": null,
      "noticeDays": null,
      "exclusion": "no dated announcement on the pages read",
      "note": "Google's legacy-solution page and solutions guide, as quoted in the graveyard, date the upgrade and the end of support, not an announcement.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://raw.githubusercontent.com/google-ai-edge/mediapipe/master/docs/solutions/pose.md",
      "endQuote": "As of May 10, 2023, this solution was upgraded to a new MediaPipe Solution.",
      "changesEntries": null,
      "page": "/graveyard#mediapipe-legacy-pose"
    },
    {
      "id": "tfjs-posenet",
      "name": "PoseNet for TensorFlow.js (@tensorflow-models/posenet)",
      "vendor": "Google (TensorFlow.js)",
      "status": "deprecated",
      "end": null,
      "endPrecision": null,
      "endLabel": "Deprecated",
      "announced": null,
      "noticeDays": null,
      "exclusion": "no end date",
      "note": "The package README says it is deprecated and gives no date.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://raw.githubusercontent.com/tensorflow/tfjs-models/master/posenet/README.md",
      "endQuote": "This package is deprecated in favor of the new pose-detection package.",
      "changesEntries": null,
      "page": "/graveyard#tfjs-posenet"
    },
    {
      "id": "strava-running-races",
      "name": "Strava Running Races endpoints",
      "vendor": "Strava",
      "status": "dead",
      "end": "2021-11-01",
      "endPrecision": "day",
      "endLabel": "Removed",
      "announced": "2021-10-01",
      "noticeDays": 31,
      "exclusion": null,
      "note": null,
      "how": "Strava's changelog lists the deprecation, with both dates, under its entry of October 1st, 2021.",
      "announcementUrl": "https://developers.strava.com/docs/changelog/",
      "announcementQuote": "The get running race and list races endpoints will start to return empty values starting October 15th, 2021, and will be removed completely by November 1st, 2021.",
      "endUrl": "https://developers.strava.com/docs/changelog/",
      "endQuote": "The get running race and list races endpoints will start to return empty values starting October 15th, 2021, and will be removed completely by November 1st, 2021.",
      "changesEntries": null,
      "page": "/graveyard#strava-running-races"
    },
    {
      "id": "moves-api",
      "name": "Moves app and developer API",
      "vendor": "Moves",
      "status": "dead",
      "end": "2018-07-31",
      "endPrecision": "day",
      "endLabel": "Shut down",
      "announced": null,
      "noticeDays": null,
      "exclusion": "no dated announcement on the pages read",
      "note": "The Internet Archive capture of the Moves developer site, read 2026-11-06, records the shutdown, not when it was announced.",
      "how": null,
      "announcementUrl": null,
      "announcementQuote": null,
      "endUrl": "https://web.archive.org/web/20181231164810/https://dev.moves-app.com/",
      "endQuote": "As of July 31, 2018, you can no longer log in or use the Moves app.",
      "changesEntries": null,
      "page": "/graveyard#moves-api"
    },
    {
      "id": "google-health-2008",
      "name": "Google Health (personal health record service)",
      "vendor": "Google",
      "status": "dead",
      "end": "2012-01-01",
      "endPrecision": "day",
      "endLabel": "Retired",
      "announced": "2011-06-24",
      "noticeDays": 191,
      "exclusion": null,
      "note": null,
      "how": "Google's blog post giving the retirement date is timestamped 6/24/2011 (Internet Archive capture of January 7, 2012).",
      "announcementUrl": "https://web.archive.org/web/20120107124413/http://googleblog.blogspot.com/2011/06/update-on-google-health-and-google.html",
      "announcementQuote": "6/24/2011 11:01:00 AM",
      "endUrl": "https://web.archive.org/web/20120107124413/http://googleblog.blogspot.com/2011/06/update-on-google-health-and-google.html",
      "endQuote": "Google Health (retiring January 1, 2012; data available for download through January 1, 2013)",
      "changesEntries": null,
      "page": "/graveyard#google-health-2008"
    }
  ]
}