Workout & Activity API
Workouts data from every wearable, in one schema
614 provider sport names collapsed into 90 unified workout types, with per-workout metrics and streams.

7/10
providers connectable today
12
webhook event types
Canonical unit
SI — metres, seconds, watts, metres per second
What workouts looks like through one API
Workout data is where the cost of building your own integration layer shows up most concretely. Every provider has its own sport taxonomy, and they do not overlap cleanly: Strava uses PascalCase sport-type strings, Fitbit uses numeric activity IDs, WHOOP uses lowercase sport names, Garmin uses its own constants. There is no shared vocabulary and no published crosswalk.
WearLink maintains that crosswalk. 614 provider-specific sport identifiers are mapped into 90 unified workout types, per-provider, in code — so a "TrailRun" from Strava, activity ID 90009 from Fitbit and "running" from WHOOP all arrive as the same normalised type with the same field names. When a provider adds a sport, the mapping is updated once rather than in every downstream product.
Beyond the type, workouts carry duration, distance, energy, heart-rate summary and, where the device produces them, the running- and cycling-dynamics series: power, cadence, ground contact time, vertical oscillation, stroke count.
Where providers disagree
Sport taxonomies have no shared vocabulary
Providers disagree not just on naming but on granularity. One vendor has a single "Cycling" type; another distinguishes road, gravel, mountain, virtual and commute. Collapsing upward loses information; mapping downward invents it. WearLink maps to the unified type and preserves the original provider string so you can always recover the source label.
Distance and energy are computed differently
GPS-derived distance, accelerometer-derived distance and treadmill-reported distance are all reported in the same field by different providers, with materially different error characteristics. Calorie figures are estimates from proprietary models and are not comparable across vendors at all — treat them as within-device trends.
The same workout can arrive twice
A user with a Garmin watch connected to both Garmin and Strava will produce two records for one ride. Deduplication has to happen on time-overlap plus user, not on ID. WearLink flags likely duplicates across connected sources so you can decide the policy rather than discovering the double-count in a leaderboard.
Adapter depth varies
Not every provider adapter carries a full sport crosswalk today — the Polar and Suunto mappings are thin relative to Garmin, WHOOP and Apple. Unmapped sports fall through to a generic type with the original string preserved rather than being dropped.
Webhook events for workouts
Summary: workout.created
Series streams:
series.power.createdseries.speed.createdseries.cadence.createdseries.distance_walking_running.createdseries.distance_cycling.createdseries.distance_swimming.createdseries.running_power.createdseries.running_ground_contact_time.createdseries.running_vertical_oscillation.createdseries.swimming_stroke_count.createdseries.workout_effort_score.created
The full catalogue is in the event catalogue.
FAQ
Workouts — frequently asked questions
How many workout types does WearLink normalise to?
What happens to a sport WearLink has not mapped?
Do I get GPS routes?
How do I avoid counting the same workout twice?
Get workouts from every device your users own
Free for up to 3 connected users. No credit card. Your first API key is issued the moment you sign up.