icu_get_activity_streams
Fetch raw per-sample time-series arrays (power, heart rate, cadence, GPS, etc.) for a single activity. Use for visualization or custom signal analysis when summary metrics are insufficient.
Instructions
Fetch RAW per-sample time-series of one activity — second-by-second arrays for power, HR, cadence, speed, altitude, GPS, temperature, grade, etc.
Heavy payload. Use only when you need the underlying signal for visualization or custom analysis. Most "how was my ride?" questions are better answered by get_activity_details (summary metrics) or get_activity_intervals (per-lap breakdown).
Stream-type filter accepts any of: watts, heartrate, cadence, velocity_smooth, altitude, distance, time, latlng, temp, moving, grade_smooth, raw_heartrate, fixed_heartrate.
latlng comes back as [lat, lng] pairs (null where the sample has no
GPS fix).
heartrate is CORRECTED data: Intervals.icu replaces readings above the
athlete's configured max HR with an interpolated line at import, so it can
never exceed that setting. raw_heartrate is the uncorrected trace and is
the only way to see a genuine new max that was clipped away — the platform
never raises the setting on its own. Request it explicitly; it is not in
the default set.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| streams | No | List of stream types (e.g., ['watts', 'heartrate', 'cadence']). If not specified, the activity's default streams are fetched — which does NOT include raw_heartrate or fixed_heartrate; ask for those by name. | |
| max_points | No | Thin every returned stream to at most this many samples by keeping every Nth one (the same N for all streams, so indices stay aligned). Omit for full resolution. ~500 is plenty to trace a route or see the shape of a ride. Samples are not always 1 s apart, so include 'time' to know when each kept sample was recorded. | |
| activity_id | Yes | Activity ID to fetch streams for |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |