Strava data, in your own stack.
Users connect their Strava account over OAuth. Open Health Sync pulls their activities as workouts on a schedule and when Strava sends a webhook event.
- Source
- Activity platform
- How the data arrives
- Cloud API v3, OAuth 2.0, scheduled pulls and webhook events.
What it collects.
Each record maps to the same model as every other source, with the provider, source and device it came from.
- Activities as workouts, with their summary figures
How it works.
- 01
The user connects
Your server asks for a consent URL and sends the user to Strava. Tokens are stored encrypted.
- 02
The server pulls
A first backfill, then scheduled pulls, and webhooks where the provider sends them. Every raw payload is kept.
- 03
You read one model
Units, time zones and duplicates handled, served over REST, the read-only MCP server and FHIR R4.
Before you start.
- Streams and routes aren't pulled yet: the connector reads summary activities, one request per 200, to stay inside Strava's shared rate limits.
- A new Strava application serves 1 athlete, 10 after you raise it in the API settings, and more only after Strava's review.
- Strava's 2026 API terms forbid training AI on API data and restrict intermediary platforms. Third parties report a paid Strava subscription is now needed for API access.
Set it up.
Register your own Strava app, set its callback to <OHS_PUBLIC_URL>/oauth/strava/callback and put its credentials in .env. The guide has every step.
# .envOHS_STRAVA_CLIENT_ID=...OHS_STRAVA_CLIENT_SECRET=...OHS_STRAVA_VERIFY_TOKEN=...# Ask for a consent URL, then send the user to authorize_urlcurl -s -X POST $OHS/v1/users/$USER_ID/connections/strava \ -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \ -d '{"redirect_uri":"https://app.example.org/connected"}'# Read what came incurl -s "$OHS/v1/users/$USER_ID/workouts" -H "Authorization: Bearer $KEY"Questions.
Can I use Strava with Open Health Sync today?
Yes. The Strava connector ships in v0.1.0.
Do I need anything from Strava?
Streams and routes aren't pulled yet: the connector reads summary activities, one request per 200, to stay inside Strava's shared rate limits.
Where does the data go?
Only to the server you run. Open Health Sync is self-hosted software, not a service: no account with us and no call home. Each user can be deleted with one call, raw files included.