Supported Providers
Before connecting, check which providers are available and enabled:Use
cloud_only=true to filter only OAuth-enabled providers. Some providers may support local device sync only.OAuth Connection Flow
Redirect user to authorization URL
Send the user to the
authorization_url in their browser. They’ll log in to their wearable provider account and grant permissions.Handle callback
After authorization, the provider redirects back to Open Wearables callback URL:Open Wearables automatically:
- Exchanges the authorization code for access tokens
- Stores the connection in the database
- Triggers an initial data sync
- For Garmin: Starts a 30-day historical data backfill
- Redirects to your
redirect_urior the default success page
You don’t need to implement the callback endpoint - Open Wearables handles this automatically.
Provider-Specific Notes
Garmin
- Automatic backfill: On first connection, Garmin automatically backfills up to 30 days of historical data
- Webhook support: Real-time data updates via push/ping webhooks
- Data types: Activities, sleep, daily summaries, heart rate, stress, HRV, body composition, and more
- Permissions: Requires
ACTIVITY_EXPORTandHEALTH_EXPORTscopes
Whoop
- Recovery scores: Provides detailed recovery, strain, and sleep metrics
- Real-time data: Updates throughout the day as user syncs their device
- Rate limits: Respects Whoop API rate limits (200 requests per 5 minutes)
Strava
- Activity focused: Primarily provides workout/activity data
- Public activities: Only syncs public activities by default
- Webhook support: Real-time activity updates via webhooks
Polar
- Training data: Comprehensive training metrics and heart rate zones
- Sleep analysis: Detailed sleep stage data
Suunto
- Outdoor activities: Strong support for outdoor sports and GPS tracking
- Training insights: Detailed exercise and recovery metrics
Connection Management
List User Connections
Check Connection Status
Connections can become inactive if:- User revokes access from the provider’s website
- Access token expires and refresh fails
- Provider account is deleted
is_active field in the connection response indicates current status.
Webhooks for Real-Time Updates
Many providers support webhooks to push data in real-time instead of polling:- Garmin: Push and ping notifications for activities, sleep, and wellness data
- Strava: Activity creation/update webhooks
Testing Connections
For development and testing:- Use sandbox environments when available (Garmin, Strava)
- Test with your own accounts first
- Check logs in the Open Wearables dashboard for connection errors
- Verify data sync by querying the events or summaries endpoints
Troubleshooting
Connection fails during OAuth
- Verify the
user_idexists in your system - Check that the provider is enabled in your account settings
- Ensure your API key has proper permissions
No data appears after connection
- Wait a few minutes for initial sync to complete
- Check connection status - it should be
is_active: true - For Garmin backfill, check the backfill status endpoint
- Review webhook logs if applicable
Token expired errors
- Open Wearables automatically refreshes tokens when needed
- If refresh fails, the connection becomes inactive
- User will need to reconnect via OAuth flow
Next Steps
Access Data
Retrieve workouts, sleep, and health metrics
Webhooks
Set up webhooks to receive real-time data updates
