StrideeStridee
50 founding slots

One API for every wearable.Read and write.

Garmin, COROS, Polar, Wahoo, Apple Watch and Strava — normalized into one FIT file, so you interpret one format instead of six APIs. Then push structured workouts straight back to the athlete’s watch.

Private beta opens September 1, 2026. Your $20 converts into month one — you pay early, not extra. Only 50 slots.

read — any vendor, one shape

const { data } = await stridee.activities.list({
  user: 'usr_e9f1c40a',
  since: '2026-07-01',
});

data[0].provider;        // 'polar'
data[0].distance;        // 16093.4 metres
data[0].avg_heart_rate;  // 152
data[0].fit_url;         // one canonical FIT file

Already syncing in production

Apple WatchGarminWahooPolarCOROSStrava

Coverage

Devices we support

Not a list of logos on a pitch deck. Every row below is live behind the Stridee apps today.

ProviderActivitiesWellnessWorkout push
GarminGarminForerunner, Fenix, Epix, Venu, Edge
COROSCOROSPACE, APEX, VERTIX
Apple WatchApple WatchApple Watch + iPhone HealthKit
WahooWahooELEMNT, RIVAL, KICKR
PolarPolarVantage, Grit X, Pacer
StravaStravaFull history import

Apple Watch reads through HealthKit and schedules with WorkoutKit — both on-device by design, so that one runs through our iOS SDK inside your app rather than server-to-server.

Strava backfills an athlete’s entire history, deduplicated against whatever their watch already sent you.

Next on the roadmap

Not shipped yet. The founding 50 decide the order — say which one you need and it moves up.

SuuntoWhoopOuraFitbitGoogle Health ConnectSamsung HealthZwiftPeloton

Normalization

Every vendor, re-encoded into one FIT file.

Garmin hands you FIT. Polar hands you its own JSON. COROS, Wahoo and Strava each do something else again — different sport names, different units, a different idea of what a lap is. We decode all of it and re-encode a single canonical FIT, the format your tooling already reads.

01

You get an event, not a blob

The webhook carries the normalized summary plus a short-lived signed fit_url. Download the file only for the activities you actually care about.

02

You acknowledge with a 2xx

Anything else counts as undelivered and we retry with exponential backoff for 72 hours. Ack first, process after — a slow handler should not look like a failed one.

03

Replay whenever you need

Every event is stored. Re-send it from the dashboard, or POST /v1/events/{id}/retry once you have shipped the fix — no vendor backfill required.

And it goes the other way

Post a structured session and we encode it into each vendor’s native workout format, so pace, power and heart-rate targets survive the trip to the wrist.

GarminCOROSWahooApple Watch

server/webhooks.ts

// Return any 2xx to acknowledge. Anything else — or nothing
// at all — and we retry with backoff for 72 hours.
app.post('/webhooks/stridee', async (req, res) => {
  const event = stridee.webhooks.verify(
    req.body,
    req.headers['stridee-signature'],
    process.env.STRIDEE_WEBHOOK_SECRET,
  );

  // Ack first, work after. We only need to know it landed.
  res.sendStatus(200);

  if (event.type === 'activity.created') {
    // One canonical FIT. Same encoder for all six vendors.
    const file = await fetch(event.data.fit_url);
    await ingestFit(await file.arrayBuffer());
  }
});
Founding 50

Claim your slot for $20.

A deposit, but not one you lose. Your $20 is charged today, holds one of only fifty beta slots, and converts into your first month when the private beta opens on September 1, 2026. You are paying early, not paying extra.

  • Your $20 converts into month one — you pay early, not extra
  • One of only 50 beta slots, reserved by name
  • $20/month for the whole API — every provider, reading and writing
  • Production keys on September 1, 2026, when the private beta opens
  • Every provider we support, and the ones we add next
  • A private Discord channel with the engineers who wrote the integrations

If we never ship, or you change your mind before we hand you keys, email hi@stridee.fit and we refund you. No forms, no conditions.

Founding slots

50

Only 50 founding slots exist. When they are gone, they are gone.

Private beta opens September 1, 2026

$20today — converts to month one

Charged today. $20/month for the whole API.

Claim my slot

Stripe checkout · converts to month one · refundable until we hand you keys

Not ready to claim?

Come talk to us in Discord first. We answer questions there before anywhere else.

Join the Discord

Before you claim

Your first month, paid early. It is a deposit, charged today, but not one you lose — it reserves one of fifty beta slots and converts into your first month when the private beta opens on September 1, 2026. You pay early, not extra. If we never ship, or you change your mind before you get keys, email us and we refund you.

$20 a month, flat, for the whole API — every provider, reading and writing. Flat rather than priced per connected user, and no contract.

The private beta opens on September 1, 2026, and that is when founding partners get production keys. Your $20 is charged when you claim your slot and converts into your first month.

Garmin, COROS, Polar, Wahoo, Apple Watch and Strava history import — all in production behind the Stridee apps right now. Suunto, Whoop, Oura, Fitbit, Health Connect, Samsung Health, Zwift and Peloton are on the roadmap; founding partners decide the order.

Only if you want to. Every event carries a normalized JSON summary, and laps and per-second streams are one REST call away. The FIT file sits behind a short-lived signed URL for when you need the raw record messages — and it is the same canonical FIT whether the session came off a Garmin, a Polar, a COROS, a Wahoo or a Strava import, so your parser has exactly one shape to handle.

Yes, and it is the part most aggregation APIs skip. Post a structured session — warmup, intervals with pace, power or heart-rate targets, cooldown — and it lands on the athlete’s Garmin, COROS or Wahoo, or is scheduled on their Apple Watch through WorkoutKit. You get a per-device sync status back.

You redirect to a hosted connect flow, the athlete authorizes their vendor, and we hand you back a stable user id. Apple Watch is the exception: HealthKit and WorkoutKit are on-device by design, so that one runs through our iOS SDK inside your app.

Return any 2xx and the event is acknowledged. Anything else — an error, a timeout, nothing at all — and we retry with exponential backoff for 72 hours. Every event is stored either way, so you can replay from the dashboard or POST /v1/events/{id}/retry once you are back, without asking the vendor for a backfill.

Still have questions? Ask us in Discord

Stridee API — one wearable data API for Garmin, COROS, Polar, Wahoo & Apple Watch