Skip to main content
GET
/
users
/
{user_id}
/
connections
List Connections
curl --request GET \
  --url https://api.example.com/users/{user_id}/connections
{
  "id": "<string>",
  "user_id": "<string>",
  "provider": "<string>",
  "provider_user_id": "<string>",
  "provider_username": "<string>",
  "scope": "<string>",
  "status": "<string>",
  "last_synced_at": "<string>",
  "created_at": "<string>",
  "updated_at": "<string>"
}

Overview

Returns a list of all wearable provider connections (Garmin, Strava, Polar, etc.) associated with a user. Each connection includes status, provider information, and last sync timestamp.
This endpoint returns connection metadata only. Access tokens and refresh tokens are never exposed in API responses.

Authentication

Requires a valid API key in the X-API-Key header.

Path Parameters

user_id
string
required
The UUID of the user whose connections to retrieve

Response

Returns an array of connection objects.
id
string
Unique identifier for the connection (UUID)
user_id
string
UUID of the user who owns this connection
provider
string
Provider name (e.g., “garmin”, “strava”, “polar”, “suunto”, “whoop”)
provider_user_id
string
The user’s ID in the provider’s system (if available)
provider_username
string
The user’s username/display name in the provider’s system (if available)
scope
string
OAuth scopes granted for this connection
status
string
Connection status: active, revoked, or expired
last_synced_at
string
ISO 8601 timestamp of the last successful data sync (null if never synced)
created_at
string
ISO 8601 timestamp when the connection was created
updated_at
string
ISO 8601 timestamp when the connection was last updated

Example Request

curl -X GET "https://api.openwearables.com/api/v1/users/550e8400-e29b-41d4-a716-446655440000/connections" \
  -H "X-API-Key: your_api_key_here"

Example Response

200 - Success
[
  {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "user_id": "550e8400-e29b-41d4-a716-446655440000",
    "provider": "garmin",
    "provider_user_id": "9876543210",
    "provider_username": "john_runner",
    "scope": "ACTIVITY_EXPORT HEALTH_EXPORT",
    "status": "active",
    "last_synced_at": "2024-03-15T10:30:00Z",
    "created_at": "2024-01-10T08:00:00Z",
    "updated_at": "2024-03-15T10:30:00Z"
  },
  {
    "id": "456e7890-e89b-12d3-a456-426614174001",
    "user_id": "550e8400-e29b-41d4-a716-446655440000",
    "provider": "strava",
    "provider_user_id": "12345678",
    "provider_username": null,
    "scope": "activity:read_all,activity:write",
    "status": "active",
    "last_synced_at": "2024-03-14T22:15:00Z",
    "created_at": "2024-02-01T14:30:00Z",
    "updated_at": "2024-03-14T22:15:00Z"
  },
  {
    "id": "789e0123-e89b-12d3-a456-426614174002",
    "user_id": "550e8400-e29b-41d4-a716-446655440000",
    "provider": "polar",
    "provider_user_id": "87654321",
    "provider_username": null,
    "scope": "exercise.read",
    "status": "expired",
    "last_synced_at": "2024-02-20T16:45:00Z",
    "created_at": "2023-12-01T09:00:00Z",
    "updated_at": "2024-02-28T12:00:00Z"
  }
]
401 - Unauthorized
{
  "detail": "Invalid or missing API key"
}
404 - Not Found
{
  "detail": "User not found"
}

Status Values

  • active: Connection is valid and can be used for data sync
  • revoked: User has revoked access in the provider’s app/website
  • expired: OAuth tokens have expired and need refresh

Use Cases

  • Display connected providers in user dashboard
  • Check which data sources are available before syncing
  • Monitor connection health and prompt re-authorization
  • Filter data queries by active providers

Build docs developers (and LLMs) love