Stridee
Stridee Platform Docs

Get started

Create an account and start building on one API for Garmin, COROS, Polar, Wahoo, Zepp, Hammerhead, Fitbit, Suunto, WHOOP and Apple Health.

The Stridee API gives your product one integration instead of 20+. Your users connect the watch, bike computer or platform they already own, you read their finished activities in a single shape, and you push structured workouts back to the watch — with one set of credentials, one webhook handler and one set of rate limits.

How it fits together

Four pieces, each a screen in the console.

  • Connections. You send us your own id for one of your users and get back a URL to redirect them to. They consent at the provider, and from then on their data is yours to read. You never hold a provider client secret or implement an OAuth callback — see Connect a device.
  • Keys. You hold the private halves, we hold the public ones: an Ed25519 key signs your requests, and an X25519 key is what deliveries are sealed to. There is no bearer token and no shared secret anywhere, which is why no key is masked in the console — signing keys under API keys, encryption keys under Webhooks.
  • Events. Something happens on a provider — a run finishes, a token expires — and we turn it into an event with a stable type and an id.
  • Webhooks. We deliver those events to your endpoint, sealed to your key so the body is readable by your service and nothing between us and it.

What each provider serves

Nine providers sit behind one connect call, and they differ more than a list of names suggests: wellness and workout push are different subsets of the nine, and history on connect ranges from years on Garmin to none on Hammerhead. Where a provider does not send something, the field is absent rather than estimated.

Apple Health is the tenth, and the exception: HealthKit has no server to connect to, so your iOS app pushes it with our SDK — see Apple Health.

Provider support & limits has all of it, generated from the constants the API enforces — including what is not live yet: laps and streams parsed into JSON (they are in the recording file today) and a canonical re-encoded FIT.

These docs describe shipped behaviour. Anything not live yet says so on the page itself.

Something wrong or missing on this page? Tell us in Discord. Need something the API doesn’t do yet? Request it on the roadmap.