---
title: "Get Providers"
method: GET
path: "/api/v1/oauth/providers"
tags: ["External: Providers"]
---

# Get Providers

`GET /api/v1/oauth/providers`

Get providers with their configuration and metadata.

Query params:
- enabled_only: Filter to only enabled providers (default: False, returns all)
- cloud_only: Filter to only providers with cloud OAuth API (default: False)

Returns full provider details including name, icon_url, has_cloud_api, is_enabled.

## Query parameters

- `enabled_only` boolean — Return only enabled providers
- `cloud_only` boolean — Return only cloud (OAuth) providers

## Response `200`

Successful Response

- ProviderSettingRead[]
  - `provider` string, required — Provider identifier (e.g., 'apple', 'garmin')
  - `name` string, required — Display name (e.g., 'Apple Health', 'Garmin')
  - `has_cloud_api` boolean, required — Whether provider uses cloud OAuth API
  - `is_enabled` boolean, required — Whether provider is enabled by admin
  - `icon_url` string, required — Relative URL to provider icon (e.g., '/static/provider-icons/garmin.svg'). Resolve against the API base URL.
  - `live_sync_mode` 'pull' | 'webhook'
  - `live_sync_configurable` boolean — Whether the admin can switch live_sync_mode for this provider.
  - `data_granularity` 'daily' | 'hourly' | 'raw' — How finely a provider's 24/7 data is stored. DAILY — one aggregated value per day (server-side rollup). HOURLY — one aggregated value per hour (server-side rollup). RAW — every individual reading (no aggregation), where the provider supports it.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/openwearables/apis/open-wearables-api.md) · [All operations](https://skmtc.net/openwearables/apis/open-wearables-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openwearables/open-wearables-api/versions/37c1c527cd8f/schema)
