Skip to main content

Endpoint

GET /api/v1/pulse/providers

Overview

Retrieve information about all health device providers available in the system, including their configuration status and capabilities.

Request

curl http://localhost:18080/api/v1/pulse/providers

Response

{
  "code": 0,
  "msg": "ok",
  "data": {
    "providers": [
      {
        "slug": "theta_garmin",
        "name": "Garmin Connect",
        "platform": "theta",
        "description": "Connect your Garmin device to sync activity, sleep, and health metrics",
        "logo": "https://static.thetahealth.ai/res/garmin.png",
        "supported": true,
        "auth_type": "oauth1",
        "status": "available",
        "capabilities": ["activity", "sleep", "heart_rate", "stress"]
      },
      {
        "slug": "theta_whoop",
        "name": "Whoop",
        "platform": "theta",
        "description": "Connect your Whoop strap for recovery, strain, and sleep tracking",
        "logo": "https://static.thetahealth.ai/res/whoop.png",
        "supported": true,
        "auth_type": "oauth2",
        "status": "available",
        "capabilities": ["recovery", "strain", "sleep", "heart_rate"]
      },
      {
        "slug": "apple_health",
        "name": "Apple Health",
        "platform": "apple",
        "description": "Import Apple Health export data",
        "logo": "https://static.thetahealth.ai/res/apple.png",
        "supported": true,
        "auth_type": "file_upload",
        "status": "available",
        "capabilities": ["activity", "sleep", "heart_rate", "nutrition", "workouts"]
      }
    ]
  }
}

Response Fields

code
integer
required
Response code (0 = success)
msg
string
required
Response message
data
object
required
Response data containing providers array

Platform Types

PlatformDescriptionExamples
thetaOAuth-based wearable device providersGarmin, Whoop, Fitbit
appleApple Health platform (file upload)Apple Health Export, CDA documents
vitalVital API integrationVarious devices via Vital

Example Usage

import aiohttp

async def list_providers():
    async with aiohttp.ClientSession() as session:
        async with session.get("http://localhost:18080/api/v1/pulse/providers") as resp:
            providers = await resp.json()
            return providers["providers"]

providers = await list_providers()
for provider in providers:
    print(f"{provider['name']}: {provider['status']}")
Use the slug field when linking providers or querying provider-specific data.