← All articles
garmingarmin-personal-apimcpclaudechatgpttraining-data

Garmin Personal API with Claude and ChatGPT: What the Key Gives You

Garmin's Personal API key lets you pull your own Garmin Connect data. Here is what it covers, what a self-hosted MCP setup involves, and where athletedata fits.

Garmin
garmin
Activities
athletedata
AI coach
ActivitiesBody BatterySleep scoreHRV statusVO2 maxStress

The short answer

Garmin now gives individual athletes an official key to their own Garmin Connect data. With it, a script or a self-hosted MCP server can pull your activities, FIT files and health data and pass them to Claude or ChatGPT. What the key does not give you is the server, any analysis on top of the raw records, data from your other apps, or a way to send a workout back to your watch.

If you like building, the key is a clean, official starting point and this guide walks through what the build involves. If you want the result without the build, athletedata's Garmin MCP connector is the hosted version of the same idea, with those four gaps filled.

Everything below about Garmin's API was checked against Garmin's own developer pages on 1 November 2026: the program overview, the Personal API setup page and the Personal API FAQ. Garmin changes these pages without announcements, so check them again before you build on a detail.

What the Garmin Personal API is

Until October 2026, official access to Garmin Connect data meant joining Garmin's developer program as a business. On 21 October Garmin reopened that program with a Personal tier next to two business tiers, as the5krunner and Gadgets & Wearables reported at the time. Garmin's overview describes the Personal tier as "secure access to your own Garmin Connect data" for individuals who want to analyse and build with it.

Per Garmin's overview table, the Personal tier covers:

  • Activity: JSON summaries and the original .FIT files
  • Health: JSON (daily summaries, sleep, heart rate and the other wellness data)
  • Women's Health: JSON
  • Delivery: pull only

Training, Courses and Golf are listed for the business tiers and not for Personal. Garmin's pages do not publish a request limit or a history window for the Personal tier.

How the key works

You create the key yourself. Per Garmin's setup page and FAQ:

  1. Sign in to Garmin Connect on the web and open the Personal API Key page in settings
  2. Select Create Key, accept the terms and choose an expiry (30, 90 or 180 days, or one year)
  3. Copy the key. Garmin shows it once; lose it and you delete it and create a new one

The key itself does not call the data endpoints. You POST it to Garmin's token endpoint and get back an access token that lasts 24 hours (or until the key expires). There are no refresh tokens, so anything long-running asks for a new token every day. Garmin also publishes a Python client and command-line tool that handles the token exchange for you.

The key is meant for you. Garmin's FAQ describes the Personal API as access for individual users to their own data and says it is not intended for commercial applications serving multiple end users. You accept Garmin's supplemental terms when you create the key; read them before deciding where the key will live.

Wiring the key into Claude or ChatGPT

Claude, ChatGPT and Cursor do not call REST APIs on their own. They call tools exposed over MCP (Model Context Protocol), so between Garmin and your AI client you need an MCP server. With a personal key, that server is yours to run. The pieces:

A process that holds the key. It stores the key somewhere safe, exchanges it for an access token, and renews the token every 24 hours.

Tool definitions. Each Garmin endpoint you want the model to use becomes a tool with a name, a description and an input schema: activities for a date range, one activity's FIT file, sleep, HRV, daily summaries. The model decides which tool to call from those descriptions alone.

Parsing. Activity summaries arrive as JSON, but the per-second detail (laps, power, heart rate streams) lives in the .FIT file. Turning a FIT file into something a model can read without flooding its context is its own small project.

Hosting and reachability. Claude Desktop and Claude Code can launch a local MCP server on your machine. ChatGPT and the Claude web and mobile apps connect to remote servers, so for those the server needs a public HTTPS address and authentication of its own, or anyone who finds the URL reads your data.

Upkeep. Key expiry, Garmin changing an endpoint, a new model client expecting a different MCP feature. All of it lands on you.

Community projects that wrap the Personal API as an MCP server have appeared since launch, and starting from one saves most of the tool-definition work. You still run and update it.

What you still build after the data arrives

Getting Garmin's records into the chat is the first half. The questions athletes ask ("am I fresh enough for Saturday?", "is this block ramping too fast?", "did my threshold improve?") need numbers Garmin's API does not return, computed consistently across months of history.

Fitness, fatigue and form. A chronic training load, an acute load and the balance between them, computed every day from every session. Asking the model to do this from raw activities in each conversation is slow and gives a different answer each time. athletedata computes it once and serves it as get_pmc_status. The fitness and fatigue chart guide explains what those curves mean.

Load and recovery flags. get_load_flag and get_injury_risk compare recent load with your own baseline, and get_readiness_today combines last night's recovery data with your current load into a single call for today. These are the tools the model reaches for when you ask whether to do the session.

Best efforts. get_power_curve and get_pace_curve turn every ride and run into best power or pace by duration. That means reading every FIT file, which is the part a self-hosted setup tends to skip.

Your other apps. The key reads Garmin only. If you lift with Hevy, wear an Oura ring or WHOOP, weigh in on Withings or log food in Cronometer, a Garmin-only server cannot see any of it. One athletedata connector exposes all of your connected sources together, so a question like "how do my lifting days affect my next-day run?" has both halves of its answer.

Sending workouts to the watch

The Personal tier is pull only and does not include Garmin's Training API, so a personal key reads what you did but cannot put tomorrow's session on your wrist.

athletedata connects to Garmin through Garmin's business program with an OAuth grant you approve on Garmin's own consent screen. Turn on workout push for Garmin on the integrations page and the same connection can write to Garmin's Training API. On the MCP plan, your own Claude or ChatGPT can then build a structured workout and call push_workout_to_watch, and it appears on the watch as a scheduled workout. Pushing workouts to a Garmin watch covers how that works and which sports it supports.

Personal key or athletedata: how to choose

Garmin Personal API (self-hosted) athletedata MCP connector
Garmin activities, FIT files, health data Yes, pulled on demand Yes, delivered by Garmin after each sync
Other sources (Oura, WHOOP, Hevy, Withings, Apple Health and more) No Yes, in the same connector
Fitness, fatigue, load flags, power and pace curves You compute them Built in
Push workouts to the watch No (Training API not in the Personal tier) Yes
Server to run Yours, plus the daily token renewal None, hosted
Works in Claude, ChatGPT, Cursor Once your server is reachable Yes, one URL
Cost No fee from Garmin, plus your hosting and time $9/month or $69/year, 7-day free trial

The key is a good fit if you want to own the whole pipeline, you mostly need Garmin data on its own, and you enjoy maintaining the server as much as using it.

athletedata is a good fit if you want the answers more than the plumbing, you train with more than one app, you want your AI client to send workouts to your watch, or you would rather ask about fitness and fatigue than rebuild them.

One thing athletedata does not change: Garmin's own history limits. A new Garmin connection backfills about 30 days, and the Garmin MCP guide shows how to load years of history from Garmin's Export Your Data archive.

Getting started either way

With the personal key:

  1. Create the key in Garmin Connect on the web, pick an expiry and store it like a password
  2. Install Garmin's Python client and confirm you can fetch your profile and a recent activity
  3. Pick or write an MCP server that wraps the endpoints you care about
  4. Run it locally for Claude Desktop, or host it behind HTTPS with its own authentication for ChatGPT and the Claude web app
  5. Set a reminder for the key's expiry date

With athletedata:

  1. Sign up and connect Garmin on the integrations page (one Garmin consent screen)
  2. Connect your other apps on the same page
  3. Copy the MCP URL from the dashboard and add it as a connector in Claude, ChatGPT or Cursor (setup guides)
  4. Ask something that needs your data, such as "how has my fitness moved over the last six weeks, and was last week's load a jump?"

Questions

can I use Garmin's personal API with Claude?+

Yes, with a server in between. Claude talks to tools over MCP, and Garmin's Personal API is a REST API that wants an access token, so something has to hold your key, request a token, call Garmin and return the results as MCP tools. That something is a small server you run yourself, either your own code or a community project. Garmin publishes the key, an API reference and a Python client, not an MCP server.

is the Garmin personal API free?+

Garmin's setup flow has no fee and no approval step: you create the key in Garmin Connect on the web, accept the terms and choose an expiry. Garmin does not publish request limits for the Personal API, so heavy polling is something to keep modest.

can the Garmin personal API send workouts to my watch?+

No. Garmin's program overview lists Activity, Health and Women's Health for the Personal tier and pull-only delivery. The Training and Courses APIs, which are how a workout or a route reaches a watch, are part of the business tiers. athletedata pushes structured workouts to Garmin watches through Garmin's Training API, including from your own Claude or ChatGPT on the MCP plan.

can I give my Garmin personal API key to another app?+

Garmin describes the Personal API as access for an individual to their own data, and its FAQ says it is not intended for commercial applications serving multiple end users. You also accept Garmin's supplemental terms when you create the key, so read them before you paste the key anywhere. athletedata never asks for it: you connect Garmin through Garmin's own consent screen instead.

do I still need an MCP server if Garmin has an API?+

To use Garmin data inside Claude or ChatGPT, yes. The API is the data source and the MCP server is the adapter the AI client talks to. You can run that adapter yourself with the personal key, or use a hosted connector such as athletedata, which runs it for you and adds your other sources and computed analytics.

Related

A coach that texts you first.

After every workout and night of sleep, it messages you with the analysis and what to change. Free for 7 days.

Loved by 30,000 runners, cyclists, and triathletes worldwide