> 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/setting-up-data-sources.md).

# Data sources and data types

Choose which providers your users can connect, which data types Terra sends, and which permissions each provider asks for.

A data source is a provider your users connect, such as Garmin, Fitbit or Oura. You choose which sources are available, which data types Terra sends to your destination, and, for some sources, which permissions the user is asked to grant. All three are set in the Terra dashboard.

## Enable data sources

1. Open [Connections](https://dashboard.tryterra.co/dashboard/connections) in your Terra dashboard.
2. Click **Add New** and choose from 150+ integrations.
3. Toggle each integration on <img src="https://464213908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVGMJVuZnZyOtvV4b53cY%2Fuploads%2Fgit-blob-681864500ace25f72104d6e6884b4c985fa75d9f%2FCapture%20d%E2%80%99%C3%A9cran%202025-03-29%20%C3%A0%2001.18.45.png?alt=media" alt="" data-size="line"> to activate it.

{% prompt description="Enable data sources from the terminal" icon="terminal" openInAIProviders="true" defaultExpanded="full" %}

```markdown
Enable Garmin, Fitbit, and Oura in my staging environment.

Use the Terra CLI: brew install tryterra/tap/terra, or npm install -g @tryterra/cli, then terra login. Run terra docs ask --question "<question>" for anything you need from the Terra docs, and terra <command> --help for usage.
```

{% endprompt %}

The Unified API supports three kinds of source:

* Wearables and connected devices, such as Oura, Fitbit, Garmin and Withings.
* Nutrition and menstruation trackers, such as MyFitnessPal and MacrosFirst.
* Medical devices, such as Omron and Tenovi.

The full list is in the [supported integrations table](https://docs.tryterra.co/reference/unified-api/supported-integrations).

### Sources that need extra setup

These providers need your own developer app or keys before you can enable them:

* <img src="https://464213908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVGMJVuZnZyOtvV4b53cY%2Fuploads%2FOmTLYIUYupqUciIkooJp%2Fwhoop.webp?alt=media&amp;token=d637cb9b-c688-4231-a02a-6b8dd746f1b4" alt="" data-size="line"> [WHOOP](/unified-api/whoop.md)
* <img src="https://464213908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVGMJVuZnZyOtvV4b53cY%2Fuploads%2F54UpDHsllK0GwQKOdX5K%2Fdexcom.webp?alt=media&amp;token=2c8f6fb2-4631-4b2b-b13c-0afe6ac29d96" alt="" data-size="line"> [Dexcom](/unified-api/dexcom.md)
* <img src="https://464213908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVGMJVuZnZyOtvV4b53cY%2Fuploads%2FpbdxMhNu0V3SRj1tLlOF%2Fhuawei.png?alt=media&amp;token=dc565503-74a8-41f4-89cd-978a09b7b231" alt="" data-size="line"> [Huawei](/unified-api/dedicated-data-source-api-keys.md#huawei)
* <img src="https://api.tryterra.co/v2/static/assets/img/app_icons/strava.webp" alt="" data-size="line"> [Strava](/unified-api/dedicated-data-source-api-keys.md#strava)
* <img src="https://464213908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVGMJVuZnZyOtvV4b53cY%2Fuploads%2FJcVmlm6tCu4KPeV8pRC7%2Fvirtuagym.webp?alt=media&amp;token=d4d45b97-595c-437f-9094-d94d34afae7d" alt="" data-size="line"> [Virtuagym](/unified-api/dedicated-data-source-api-keys.md#virtuagym)

{% hint style="danger" %}

## Important Note

The Unified API **CANNOT** be used to connect to the following integrations by itself:

<img src="https://464213908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVGMJVuZnZyOtvV4b53cY%2Fuploads%2FDH2JWDtg632mUQlEdrLH%2F4p3k173m8ihe71872bi9r0292q-0af5626e815091005bacb793985c1870.png?alt=media&amp;token=062c917e-02fe-4029-9809-fc881cf09de3" alt="" data-size="line"> **Apple Health**

<img src="https://464213908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVGMJVuZnZyOtvV4b53cY%2Fuploads%2F0lTv9KpldVVjBdg3JJQs%2Fimgbin_samsung-galaxy-samsung-health-samsung-electronics-android-png.png?alt=media&amp;token=b58f3118-a2e1-4b09-9d30-4f862253adb6" alt="" data-size="line"> **Samsung Health**

<img src="https://464213908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVGMJVuZnZyOtvV4b53cY%2Fuploads%2FmotL0wnZKiEWOKt46zOU%2Fvecteezy_google-fit-icon-logo-symbol_22484515.png?alt=media&amp;token=a2d0ae73-5116-49fd-8ce1-0f7b5e6f716b" alt="" data-size="line"> **Health Connect**

***

These integrations are **mobile-based integrations.** This means that:

* They require a **mobile app** with a **Mobile SDK integration** on the user's device to fetch the data.
* They not offer any sort of web API or web-based data retrieval.

To connect to **Apple Health, Google Health,** **Samsung Health,** please refer to [the Terra **Mobile SDK**](/mobile-sdks/mobile-only-sources.md)

To connect any other **data source (e.g. Oura, Fitbit, Garmin),** please use Terra's **Web** **API** from your backend.
{% endhint %}

Some of the supported data sources are developed on agreements subject to be updated by them. Their APIs can be modified without notifying Terra or 3rd parties, which could cause disruption in the service beyond our control. Those integrations are any of the ones with **"Integration Credentials"** marked as **N/A** in the [Supported Integrations table in the API Reference](https://docs.tryterra.co/reference/unified-api/supported-integrations).

## Choose data types

Choose which data types Terra sends to your destination. Open the [data types settings](https://dashboard.tryterra.co/dashboard/connections?open=edit_scopes) in your Terra dashboard and select from:

* Activity
* Daily
* Body
* Sleep
* Nutrition
* Menstruation

This applies to every data source. Turn on **Samples** to receive granular data: a list of readings at specific timestamps.

<figure><img src="https://464213908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVGMJVuZnZyOtvV4b53cY%2Fuploads%2Fgit-blob-6d440dde90d7ce3c93d10c45702241b7d675acfc%2FCapture%20d%E2%80%99%C3%A9cran%202025-03-28%20%C3%A0%2015.01.44.png?alt=media" alt=""><figcaption><p>Without "Samples"</p></figcaption></figure>

<figure><img src="https://464213908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVGMJVuZnZyOtvV4b53cY%2Fuploads%2Fgit-blob-28d65c4fb80ba6434bf54a6e748b3497d5a70ff6%2FCapture%20d%E2%80%99%C3%A9cran%202025-03-28%20%C3%A0%2014.56.39.png?alt=media" alt=""><figcaption><p>With "Samples"</p></figcaption></figure>

## Limit permissions for a source

Some data sources let you restrict the scopes requested from your end user. The widget then shows only those permissions.

1. Open **Connections** in your Terra dashboard.
2. Select the data source.
3. Choose **Edit**.
4. Open the **Edit Permissions** tab and choose your scopes.

{% @supademo/embed url="<https://app.supademo.com/demo/clzviqwur09rmo0qpurjz6y3l>" demoId="clzviqwur09rmo0qpurjz6y3l" %}

## Next steps

* [Destinations](/destinations/setting-up-data-destinations.md): choose where Terra sends data.
* [User authentication](/unified-api/authentication-flow.md): open the widget from your app.
* [Dedicated source API keys](/unified-api/dedicated-data-source-api-keys.md): use your own developer credentials for a source that needs them.
