Stride

Search Documentation

Search for articles, guides, and more

← API overview

Get an activity's recorded series

GET/v1/activities/{activity_id}/streamsrequires activities.read

The session as time series: elapsed seconds, power and heart rate, every stream the same length and aligned to time, so you can zip them without checking.

A sensor the recording did not carry is absent rather than present and full of zeroes, which would be indistinguishable from an athlete freewheeling. Roughly 400 points - the same downsampling Stride's own charts draw from, which is enough to plot a session and reason about its shape.

For every sample the head unit recorded, fetch the file itself from /activities/{activity_id}/file: the original FIT carries the full resolution, and serving a decoded second-by-second stream over JSON would cost far more than handing over the file that already exists.

Path parameters

  • activity_idstringrequired

    The activity ID, e.g. `act_2f...`. The owner is resolved from it.

Query parameters

  • keysenum

    Comma-separated streams to return. Omit for all of them. `time` is always included, since it is the index the others are read against.

    time · power · heart_rate

    e.g. time,power

Example

bash
curl -X GET "https://api.stride.is/v1/activities/{activity_id}/streams" \
  -H "Authorization: Bearer $STRIDE_TOKEN"

Response 200

Success.

  • activity_idstringalways present
  • heart_rateinteger[]
  • messagestring
  • pointsintegeralways present
  • powerinteger[]
  • resolutionstringalways present
  • timeinteger[]

Errors

Every error is an RFC 9457 problem document. Branch on its code, which is stable; detail is prose and may be reworded.

  • 400The request was malformed: an unparseable date, an unknown enum value, or a parameter combination that cannot be satisfied.
  • 401No access token was supplied, or it is not valid for this API.
  • 402The Stride account the token belongs to has no active subscription or trial.
  • 403The token does not hold the scope this endpoint requires, or may not act on the athlete or team named.
  • 404No such resource, or it is not visible to this token. The two are deliberately indistinguishable.
  • 405The path exists but does not serve this method. The Allow header lists the ones it does.
  • 429A rate limit was exceeded. Retry after the period in the Retry-After header.
  • 500Something failed on Stride's side. The failure is logged with a trace ID.