The code is free and it is good. The part it can’t give you is the Garmin developer account — we already hold that one, and the four beside it.
link a watch — no provider application, no client secret
// No Garmin developer account, no OAuth callback route,
// no client secret in your environment. One call.
const link = await stridee.post('/v1/connect', {
provider: 'coros', // or garmin, polar, wahoo, zepp
external_user_id: 'user_4821',
return_uri: 'https://app.yourapp.com/settings/devices',
});
// Redirect their browser. Good for 30 minutes.
res.redirect(link.connect_url);| What is being compared | Open Wearables | Stridee |
|---|---|---|
| Provider approval | You apply to Garmin, Polar and each of the rest yourself — immediate to four weeks, per their docs | We hold the registrations. Your first athlete connects the day you sign up |
| Credentials you store | A client id and secret per provider, in your environment, yours to rotate | None. Not theirs, and not ours either — requests are signed with a key that never leaves your machine |
| What you operate | FastAPI, PostgreSQL, Redis and Celery on your own infrastructure | Nothing. An HTTPS endpoint that receives deliveries |
| When a provider changes their API | You find out from a failing sync, and fix it or wait for a PR | We ship it. Nothing deploys on your side |
| COROS, Wahoo and Zepp | Not in the live provider list today | Live, and COROS and Wahoo take workout push as well |
| WHOOP, Oura, Suunto, Apple Health, Samsung Health | All live today | Not connectable. A connect call naming one comes back a 400 |
| What the software costs | Nothing. MIT licensed, forkable, no vendor to outlive | From 32.50 € a month billed annually |
| Where the health data sits | Your servers only. It never touches theirs | Our infrastructure, then your endpoint, encrypted to your public key |
Who each one reaches
| Provider | Open Wearables | Stridee |
|---|---|---|
| Garmin | ||
| Polar | ||
| COROS | ||
| Wahoo | ||
| Zepp / Amazfit | ||
| WHOOP | ||
| Oura | ||
| Suunto | ||
| Apple Health |
An amber clock means designed and not shipped — a connect call naming it comes back a 400 today. Their list also covers Strava, Ultrahuman, Samsung Health and Google Health Connect, none of which we read. Whichever way you go, every one of those providers still has to approve you or us.
Open Wearables’ licence, provider list, stack and approval guidance read from openwearables.io and the the-momentum/open-wearables repository on 28 August 2026. It is an actively developed project — check the current list before deciding anything on the strength of this page.
Checkout is the signup. No waitlist, no sales call.
Cancel any time from the Stripe billing portal, or email [email protected] within 30 days and we refund you.
Plans start at
Or 39 €/month, month to month. Paying annually gets you two months free.
Hacker, Startup, Scale and Enterprise differ on one thing: how many of your users may connect a watch. Everything else is on every plan.
See the plans14-day free trial · cancel any time
We create the account on the email you pay with, automatically. Sign in at platform.stridee.com/login. Nothing to wait for.
Yes. It is MIT licensed, the source is on GitHub, and you can run it commercially without paying anybody. What it cannot give you is access: the licence covers the code, not a Garmin client id. That is the whole difference between the two options, and it is worth being clear that the free part is genuinely free.
Yes, and their own documentation says so — you apply to each provider directly, with approval timelines they put at anywhere from immediate to one to four weeks. That is per provider, and it is the part of a wearable integration that a codebase cannot shorten. With Stridee there is no application: we hold the registration, the client credentials and the redirect URI, and you never see any of them.
Four cases, and they are common ones. If health data is not allowed to leave your infrastructure, self-hosting is the requirement and no hosted API satisfies it. If your users are on WHOOP, Oura, Suunto or Apple Health, they read those and we do not. If your budget for this is zero and your team is happy running Postgres, Redis and Celery, the maths is not close. And if you want to own the integration outright — fork it, patch it, keep it after any vendor folds — that is what open source is for.
No. Stridee is a hosted API, and the reason is the same fact this page turns on: the provider registrations are ours and a self-hosted copy could not use them. What you can do is leave whenever you like — every activity you have received is already in your own database, because it was pushed there.
One HTTPS endpoint. A finished workout reaches the manufacturer and we deliver an activity.created event to it, sealed to your public key as a JWE and signed with a detached JWS you verify against our published JWKS. There is no database to operate, no job queue to keep alive and no polling loop to schedule — and nothing retries automatically, so a failed delivery is resent by pressing a button in the console.
Yes, and for some products it is the right answer. Your own external_user_id is the handle on both sides, so a user is one row in your database with provider links hanging off it. Run their deployment for the sources they cover and point the sports watches at us, or start here to ship this month and move to self-hosting when a compliance requirement makes you.
The full documentation is public and needs no account. Still have questions? Ask us in Discord