Stride

Search Documentation

Search for articles, guides, and more

← API overview

Get the full analysis of one activity

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

Everything Stride derived from one recording: the session overview (training score, weighted power, intensity, variability, decoupling, W'bal, pacing splits), the power curve and its durability curves, laps and climbs, weather with the wind decomposed into head, tail and crosswind, detected intervals scored against their targets, time in zones, and workout compliance.

This is the largest response the API returns. Two parameters control its size: sections picks which blocks come back, and detail picks how deep each one goes. When scanning many activities use detail=summary, which is an order of magnitude cheaper and still carries the shape of the session.

There is no athlete in this path and none is needed: the activity's owner is resolved from its ID and checked against what this token may read. An activity you may not read is indistinguishable from one that does not exist.

Path parameters

  • activity_idstringrequired

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

Query parameters

  • sectionsstring

    Comma-separated subset of sections. Omit for everything except `ai_insight`, which is only returned when named.

    e.g. overview,intervals

  • detailenum

    How much of each section to return. `summary` is the shape of the session only and by far the cheapest. `standard` is the default. `detailed` adds every sensor block the recording carried.

    summary · standard · detailed · custom

  • fieldsstring

    Comma-separated dotted field paths, used with `detail=custom` and implying it. Lists are transparent, so one path reaches the field on every element of an array.

    e.g. intervals.intervals.label,intervals.intervals.actual.avg_power

Example

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

Response 200

Success.

A free-form object whose shape depends on the request.

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.