> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/unified-api/garmin.md).

# Garmin

Garmin requires every company that connects Garmin users to have its own app on the [Garmin developer portal](https://developerportal.garmin.com/). Terra connects your users through that app. Setting it up has three parts:

1. Apply for a Garmin app. Garmin reviews applications by hand, usually within a few days. The [application worksheet](#application-worksheet) below lists everything Garmin asks for, so you can prepare it before you start.
2. Set up Garmin in your Terra dashboard. It walks you through the custom domain and shows the callback URL to give Garmin.
3. Enter the app's credentials in the dashboard. Terra then points the app's webhook endpoints at your domain for you.

If you already have an approved production app on the Garmin developer portal, skip to [Using an existing app](#using-an-existing-app).

## Application worksheet

These are the fields on Garmin's app registration form, with Garmin's limits. Prepare the answers first: the form has no draft state, and an incomplete application is the most common reason for a delay.

Download the application as a fillable PDF. It is written to be sent to Garmin directly: it covers every section below, has space for the brand and attribution screenshots, and ends with a signed declaration.

{% file src="/files/Rbe6sVUbTmhSTB3cf5Mh" %}
Garmin production app application (PDF)
{% endfile %}

### App and company

| Field                   | What Garmin wants                                                                                                         |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| App name                | The name your users see on Garmin's consent screen. Up to 255 characters.                                                 |
| Machine name            | Lowercase letters, numbers and underscores only, up to 64 characters, unique across Garmin's portal.                      |
| Description             | Garmin reviewers read this. Say what the app does and who uses it.                                                        |
| Branding image URL      | A publicly hosted `https://` image, up to 300 by 300 pixels. Shown to your users when they connect. Up to 300 characters. |
| Full legal company name | The legal entity, not a trading name.                                                                                     |
| Company website         | An `https://` URL, up to 300 characters.                                                                                  |
| Contact phone number    |                                                                                                                           |
| Privacy policy URL      | Must explain how you use and disclose activity data. Garmin shows this link to your users. Up to 300 characters.          |

### Data use

| Field                                            | What Garmin wants                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| APIs                                             | Request only what you need. Users see these as permissions in Garmin Connect. Health API (daily summaries, sleep, body, stress, HRV, pulse ox), Activity API (workouts, activity details and files), Women's Health API (menstrual cycle tracking), Training API (push planned workouts to devices), Courses API (push courses to devices). |
| How Garmin data is used                          | Anonymous or aggregated only, or associated with identifiable users.                                                                                                                                                                                                                                                                        |
| Do you plan to sell Garmin data?                 | If yes, Garmin requires you to say how users are informed and how their consent is obtained. Up to 300 characters.                                                                                                                                                                                                                          |
| Specific purposes for using Garmin activity data | The answer Garmin weighs most, and the most common reason for rejection. Be concrete about what you do with the data. Up to 300 characters.                                                                                                                                                                                                 |

### Product and authentication

| Field         | What to choose                                                                                                                                                                                       |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Product       | Connect Developer API, Production. An evaluation app cannot be used for production traffic.                                                                                                          |
| OAuth version | OAuth 2.0 and OAuth 1.0 apps both work: Terra checks with Garmin which one your keys belong to when you save them. Garmin retires OAuth 1.0 on 31 December 2026, so ask for OAuth 2.0 for a new app. |
| Callback URL  | OAuth 2.0 apps only. The dashboard shows it during the Garmin setup, for example `https://garmin.yourcompany.com/auth/garmin/oauth2`. You can add it after Garmin approves the app.                  |

### Brand and attribution

Garmin requires every app to follow its brand and attribution rules wherever Garmin data appears, and asks for evidence with the application. Download Garmin's [branding guide and assets](https://developerportal.garmin.com/sites/default/files/GCDP%20Branding%20Assets_v2.zip) (the Garmin Connect badge, the Garmin tag logo and the usage guidelines) and follow them. In summary:

* Use the full "Garmin Connect" name and app tile wherever users connect. Never abbreviate, truncate or restyle it.
* Show "Garmin \[device model]" directly beneath or beside the title of every view that uses Garmin data: dashboards, detail screens, reports, exports and shared images. Never hide it in tooltips or footnotes.
* Keep the attribution on anything derived from Garmin data, including analytics, models and blended datasets.
* Never alter or animate the Garmin tag logo, and never use it in avatars, badges or where no Garmin data is present.
* Garmin may review your product for compliance and suspend API access if these requirements are not met.

Prepare a compliance pack: screenshots or mockups showing where the Garmin Connect badge and the "Garmin \[device model]" attribution appear in your product, using the assets from the guide. Garmin asks for it during registration.

{% hint style="info" %}
Garmin requires the app and its credentials to belong to your own company, with no third party in the application, so Terra cannot apply on your behalf. Apply to Garmin directly and send any questions about your application to <connect-support@developer.garmin.com>. If Garmin asks you to sign an NDA, the mutual NDA is in step 4, the credentials step, of the Garmin setup in your Terra dashboard.
{% endhint %}

## Set it up in the dashboard

In your Terra dashboard, open **Connections**, choose **Garmin** and follow the setup. It covers the custom domain your app uses, the callback URL for OAuth 2.0 apps, your credentials and the webhook endpoints.

1. In the Garmin developer portal, open your app and copy its client ID and client secret (Garmin calls them consumer key and consumer secret on OAuth 1.0 apps).
2. Paste them into the Garmin setup in your Terra dashboard and save. OAuth 2.0 and OAuth 1.0 keys both work: Terra checks with Garmin which one they are, and tells you if Garmin does not accept them.
3. The last step of the setup points your app's webhook endpoints at your domain. Garmin has no field to paste a webhook URL into, so Terra writes the endpoints for you with the credentials you saved. If the app already had webhook endpoints, the dashboard shows what will change and asks you to confirm before replacing them.

Garmin applies endpoint changes in the background and can take a few minutes. The dashboard keeps checking and shows when every endpoint is in place.

## Using an existing app

If you already have an approved production app on the Garmin developer portal:

1. Follow the Garmin setup in your dashboard. If the app uses OAuth 2.0, add the callback URL the dashboard shows to the app.
2. An OAuth 1.0 app works as it is. Garmin retires OAuth 1.0 on 31 December 2026, so ask Garmin to convert the app to OAuth 2.0 before then.
3. Enter the app's credentials in the dashboard and confirm the webhook endpoints. Anything the app's endpoints currently point at stops receiving data once they are repointed.
