Analysis data format
Analysis exports and the summary API
Overview and activity-detail exports use version: "activity-analytics-v1". This analysis format is distinct from the summary API's schema_version: 1. Reject unknown versions explicitly or request an update instead of silently interpreting them as an older schema.
Signed-in users obtain analysis exports from the console. The personal-token API still exposes activity summaries and CSV/JSON summary exports only. It does not grant analysis-detail, location or training-plan write access. Do not copy browser cookies or login tokens into third-party software.
Overview fields
| Field | Meaning |
|---|---|
| analysis | status is processing or ready; completed / total count analyzed and required originals |
| range / comparison | Inclusive YYYY-MM-DD date intervals |
| sport | Selected sport, or null for all |
| totals / previous_totals | Sessions, active days, duration, distance, ascent and coverage counts |
| days / previous_days | Consecutive calendar days, including rest and explicit missing values |
| rows | Selected activity metrics with original activity UUIDs |
| zones_ms | Time in Z1–Z5, in milliseconds |
| heart_covered_ms | All valid heart-rate time, including samples below Z1 |
| records | Continuous distance efforts, elevation by distance and sustained heart-rate/power peaks |
| fitness_history | Running ability and cardio fitness with sources |
| efficiency | Stable-window efficiency and aerobic decoupling |
Seconds are seconds; meters and ascent_meters are metres. Pace fields use seconds per kilometre, heart rate uses bpm, and power uses watts. Cardio fitness and some recording fields use scaled x10 integers: convert according to each field name rather than dividing every number by ten.
Edwards, sRPE, CTL, ATL and balance have separate fields. Unknown values are null; rest-day load is zero. See Metric definitions. Distance or elevation totals may include only covered activities, so inspect their coverage counts too.
Activity-detail fields
Activity contains the saved summary and training content; summary contains analysis metrics. Recording, sensor_analysis, energy and outdoor are supplied when supported.
Each series has key, unit and points. Points are [active_ms, value | null]. Active time is milliseconds of activity, not UTC time. Null breaks the signal and must not be interpolated or filled forward.
Segments are separate route lines with points [longitude, latitude, active_ms]; coordinates are decimal degrees. Never connect separate segments. Map and chart points are reduced for display and are not a raw archive or a source for maximum-precision record calculations.
Split interval indices match activity splits and start at 1. For distance records, target is metres and value is seconds. For heart-rate/power records, target is window duration in seconds and value is bpm/W respectively. Elevation target and value both use metres. Start_ms locates the activity window.
While analysis.status is processing, only saved summaries and completed derivations are available. Unfinished fields are not evidence of permanently missing data. The page refreshes automatically; export again after completion for a full snapshot. Series keys ending in _estimate distinguish motion-sensor estimates from device-reported gait.
Handling exports
Analysis JSON can contain locations, training and physiological measurements. Use trusted tools and limit retention and sharing to your purpose. PNG and print exports may also reveal dates and training information. Every download is a snapshot; later sync, calibration or filter changes do not update it.
Updated