Stridee
Stridee Docs

Introduction

Private beta

One API for training data from Garmin, COROS, Polar, Wahoo, Apple Watch and Strava.

The Stridee API gives your product one integration instead of six. Your users connect whichever watch or platform they already own, and you read activities, daily summaries and workouts in a single shape — with one set of credentials, one webhook handler and one set of rate limits.

What it covers

ProviderActivitiesDaily summariesWorkout push
GarminYesYesYes
COROSYesYesYes
PolarYesYesPlanned
WahooYesPlanned
Apple WatchYesYes
StravaYes

Coverage differs because provider APIs differ. Where a provider does not send something, the field is absent rather than estimated — a null you can branch on is worth more than a number nobody measured.

How it fits together

Four pieces, and they map onto the console's sidebar.

  • 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 Connecting a device.
  • Encryption keys. You hold an X25519 private key; we hold the public half. There is no bearer token and no shared secret anywhere in this, which is why nothing on the keys screen is masked.
  • 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.

Every id in that picture — a key, an endpoint, an event, a delivery — is a UUID v4, 36 characters, lower case. There is no prefix and nothing in an id tells you what it names, so store them as a uuid column or a plain string and never parse one. Two ids are worth keeping apart: an event id is the thing that happened, and a delivery id is one endpoint's copy of it, which is what arrives as webhook-id and what you dedupe on. One event sent to three endpoints is one event id and three delivery ids.

What lands on your endpoint
{
  "id": "c41e9b02-7a3d-4e58-8f19-6b0d2c85af73",
  "type": "encrypted",
  "enc": "eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSIsImtpZCI6IjVhOGYzMWQ2LTBjOTQt…"
}

Standard JWE compact, so opening it is a library call rather than homegrown crypto. The Quickstart does the whole path in about fifteen lines.

Getting access

The private beta is open and self-serve. A founding slot is three days free and then $20 a month, flat, for the whole API — claim one and the checkout creates your account and opens the console on it. Sign in at platform.stridee.fit/login with the address you paid with; there is no application to wait on. Fifty slots exist, and cancelling is a button in the Stripe billing portal.

What is not here yet

Keys, webhook endpoints, deliveries, the event stream, connected accounts and request logs are live. Workout push, daily summaries and an activities REST API are not. The screens for anything unbuilt say so plainly rather than showing a plausible zero — a registered endpoint shows no delivery history because none exists, not because it is quiet.

This documentation is written against the shipped behaviour of the platform. Where a page describes something that isn't live yet it says so in the page itself — no section here is aspirational without labelling itself.

Where to go next

Something wrong or missing on this page? Tell us in Discord.