50 founding slots<br>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.
Claim your slot — $20See supported devices
Private beta opens September 1, 2026. Your $20 converts into month one — you pay early, not extra. Only 50 slots.
NodeWrite backWebhook<br>read — any vendor, one shape<br>const { data } = await stridee.activities.list({<br>user: 'usr_e9f1c40a',<br>since: '2026-07-01',<br>});
data[0].provider; // 'polar'<br>data[0].distance; // 16093.4 metres<br>data[0].avg_heart_rate; // 152<br>data[0].fit_url; // one canonical FIT file
Already syncing in production
Coverage<br>Devices we support<br>Not a list of logos on a pitch deck. Every row below is live behind the Stridee apps today.
ProviderActivitiesWellnessWorkout pushGarminForerunner, Fenix, Epix, Venu, Edge<br>COROSPACE, APEX, VERTIX<br>Apple WatchApple Watch + iPhone HealthKit<br>WahooELEMNT, RIVAL, KICKR<br>PolarVantage, Grit X, Pacer<br>StravaFull 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.<br>Strava backfills an athlete’s entire history, deduplicated against whatever their watch already sent you.
Next on the roadmap<br>Not shipped yet. The founding 50 decide the order — say which one you need and it moves up.<br>SuuntoWhoopOuraFitbitGoogle Health ConnectSamsung HealthZwiftPeloton
Normalization<br>Every vendor, re-encoded into one FIT file.<br>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.
01You get an event, not a blob<br>The webhook carries the normalized summary plus a short-lived signed fit_url. Download the file only for the activities you actually care about.
02You acknowledge with a 2xx<br>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.
03Replay whenever you need<br>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<br>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.<br>GarminCOROSWahooApple Watch
Your handler<br>server/webhooks.ts<br>// Return any 2xx to acknowledge. Anything else — or nothing<br>// at all — and we retry with backoff for 72 hours.<br>app.post('/webhooks/stridee', async (req, res) => {<br>const event = stridee.webhooks.verify(<br>req.body,<br>req.headers['stridee-signature'],<br>process.env.STRIDEE_WEBHOOK_SECRET,<br>);
// Ack first, work after. We only need to know it landed.<br>res.sendStatus(200);
if (event.type === 'activity.created') {<br>// One canonical FIT. Same encoder for all six vendors.<br>const file = await fetch(event.data.fit_url);<br>await ingestFit(await file.arrayBuffer());<br>});
Founding 50Claim your slot for $20.<br>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.<br>Your $20 converts into month one — you pay early, not extra<br>One of only 50 beta slots, reserved by name<br>$20/month for the whole API — every provider, reading and writing<br>Production keys on September 1, 2026, when the private beta opens<br>Every provider we support, and the ones we add next<br>A private Discord channel with the engineers who wrote the integrations<br>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<br>50
Only 50 founding slots exist. When they are gone, they are gone.
Private beta opens September 1, 2026
$20today — converts to month one<br>Charged today. $20/month for the whole API.<br>Claim my slotStripe checkout · converts to month one · refundable until we hand you keys
Not ready to claim?<br>Come talk to us in Discord first. We answer questions there before anywhere else.<br>Join the Discord
Before you claim
What exactly am I paying $20 for today?<br>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.
What does it cost after launch?<br>$20 a month, flat, for the whole API — every provider, reading and writing. Flat rather than priced per connected user, and no contract.
When do I actually get keys?<br>The private beta...