Compare HR curves across activities
OptionalathleteId: stringBest pace over a set of distances across the activities in a date range. Returns { distances, gap, curves } (no spec schema; shape observed live 2026-09-22).
OptionalathleteId: stringSame as getActivityPaceCurves, as CSV. Observed live (2026-09-22): this form returns HTTP 500
unless distances is supplied (the JSON form accepts the omission), so distances is required here.
At least one distance is required: axios drops an empty array from the query string, which
reproduces the 500.
OptionalathleteId: stringCompare power curves across activities
Optionaloptions: { afterKj?: number }OptionalathleteId: stringGet athlete-level HR curves. The window comes from options.curves (default: the past year).
Optionaloptions: CurveOptionsOptionalathleteId: stringGet athlete-level pace curves. The window comes from options.curves (default: the past year).
Optionaloptions: PaceCurveOptionsOptionalathleteId: stringGet athlete-level power curves (best efforts over time). type is required: the API
returns HTTP 422 without it. The window comes from options.curves (default: the past year).
OptionalathleteId: stringGet the athlete's power vs heart rate curve for a date range
OptionalathleteId: string
Service for athlete-level performance curves (power, pace, HR)
Activity-level curves are on ActivityService (getPowerCurve, getPaceCurve, getHRCurve). This service handles aggregate/historical curves at the athlete level.