Writing a training session to a Garmin watch via API
Contrary to what you will often read, Garmin does expose an official API that can write structured workouts to a user's account. It exists, it is documented, and it is closed by default. Here is exactly what it allows, and what the alternatives are when you cannot get access.
Last updated: 2026-08-24
Three routes, only one of them official
Getting a workout onto a Garmin watch without typing it in by hand always comes down to one of three approaches. They are not equivalent, neither in reliability nor in what they require of you.
| Route | What it requires | Reliability |
|---|---|---|
| Official Training API | Approval in the Garmin Developer Program. The user grants access on a Garmin screen and never hands over a password. | Stable: it is a public contract Garmin maintains. |
| FIT file | Generating a FIT binary, then copying it to the watch over USB or pushing it through a third-party platform. | Reliable but manual: nothing syncs on its own. |
| Garmin Connect private endpoints | The user's Garmin username and password, stored by whichever tool uses them. | Fragile: these addresses are not public and can change without notice. |
The third route is by far the most common in community projects, because it requires no permission from anyone. It is also the one that exposes the user most, and the one that breaks the day Garmin changes its website.
What the Training API actually does
Version 2 of Garmin's Training API covers two distinct actions that are easy to confuse: creating a workout in the account library, and placing it on a calendar date. A workout created without being scheduled stays available but never shows up on the day.
Create, then schedule
Creation accepts a complete structured workout: a sequence of steps typed as warm-up, interval, recovery or cool-down, with nested repeat blocks. Each step carries an end condition and, optionally, a target.
- End condition: a duration in seconds, a distance in metres, or an open step the athlete ends with a button press.
- Target: a pace, a percentage of maximum heart rate, a power figure in watts, a cadence, or nothing at all.
- Repeats: a block can be repeated, which saves describing the same interval ten times over.
Three sports, three vocabularies
Running, cycling and pool swimming do not accept the same targets. Cycling thinks in absolute watts, swimming in pace zones and pool length, running in pace or percentage of maximal aerobic speed. A workout that mixes the vocabularies is rejected — or worse, accepted with its target silently dropped.
A common trap: a badly declared heart-rate target is accepted by the API and lands on the watch as an open step with no instruction. The workout exists, but it steers nothing.
What it does not do
The official API is not a skeleton key. Several limits are structural and worth knowing before you build on it.
- Access is not open: you apply to the Garmin Developer Program and have to be approved. An individual cannot use it for personal purposes.
- It writes workouts, not Garmin Coach training plans: those are two different objects.
- It does not redistribute activities recorded by third-party applications. A ride done on a virtual training platform does not arrive through this channel.
- Audio notes, recently added to the Garmin Connect workout builder, are not exposed.
These limits explain why some tools deliberately take another route. They do not make it a bad API: they make it a partner API, with the usual trade-offs.
Why so many tools go around it
The community projects you find publicly almost all rely on a library that mimics the Garmin Connect app signing in. It works, it is simple to install, and it asks for your Garmin username and password.
That choice carries a cost rarely weighed at install time: your credentials leave Garmin's control, the tokens obtained expire quickly, and the tool stops working the day Garmin changes an internal address. Several of these projects state themselves that they are not meant for commercial use.
A simple test before installing anything: if the tool asks for your Garmin password, it is not using the official API. With the official route, you grant access on a Garmin screen and revoke it from your Garmin account.
How Running Workout does it
Running Workout is approved in the Garmin Developer Program and writes through the official Training API. In practice that changes three things for the athlete.
- No Garmin password is ever requested: the account is linked once on Garmin's own authorisation screen, and unlinked from Garmin.
- Workouts are written and scheduled on the intended date, then sync to the watch like any workout built by hand.
- Running, indoor or outdoor cycling, and pool swimming are all supported, each with its own targets.
The service also exposes these capabilities to an AI assistant through a remote server, so a workout can be described in plain language and turn up on your wrist. That is what the connection guide covers.
Frequently asked questions
Does Garmin really have a public API for writing workouts?
Yes. The Training API is part of the Garmin Developer Program and can create and then schedule structured workouts on the account of a user who has authorised it. It is documented and maintained. What is not public is access: you have to be approved as a partner.
Can I use it for my own personal training?
Not directly. The programme is aimed at services, not individuals. For personal use you still have the FIT file copied over USB, a third-party bridge, or an already-approved service that exposes the capability.
Is a tool that asks for my Garmin password dangerous?
Not necessarily malicious, but it takes you outside the intended framework: your credentials are stored somewhere other than Garmin, you cannot revoke access from your Garmin account, and you depend on internal addresses that can change. Authorising on a Garmin screen avoids all three problems.
Does a workout written via the API reach the watch automatically?
Yes, as soon as it is scheduled on a date: it downloads to the watch at the next sync, exactly like a workout built in Garmin Connect. A workout created without a date simply stays in the account library.
Can swimming and cycling workouts be written, or only running?
All three. Each sport has its own targets: watts and cadence for cycling, pace zones and pool length for swimming, pace or percentage of maximal aerobic speed for running. Each vocabulary has to be respected, or the target disappears silently.
Let your assistant write your sessions
Running Workout connects Claude, ChatGPT or Gemini to your Garmin account through the official API. Nothing to install, and no Garmin password to hand over.
See the connection guide