Skip to content

Activities

activities


GET /api/v1/activities/

List Activities

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
end query No
limit query integer 50 No
offset query integer 0 No
refreshed-token header No
sport query array No
start query No
tags query array No
token cookie string No

Responses

[
    {
        "tags": [
            "string"
        ],
        "id": "string",
        "sport": "string",
        "start": "2022-04-13T15:42:05.901Z",
        "end": "2022-04-13T15:42:05.901Z",
        "metrics": [
            "duration"
        ],
        "source_id": "string",
        "summary": null,
        "laps": null,
        "traces": null,
        "app_metadata": null,
        "duration": "string",
        "start_local": "2022-04-13T15:42:05.901Z",
        "end_local": "2022-04-13T15:42:05.901Z"
    }
]
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "type": "array",
    "items": {
        "$ref": "#/components/schemas/ActivitySummary"
    },
    "title": "Response List Activities Api V1 Activities  Get"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/activities/latest

Latest Activity

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
refreshed-token header No
sport query No
token cookie string No

Responses

{
    "tags": [
        "string"
    ],
    "id": "string",
    "sport": "string",
    "start": "2022-04-13T15:42:05.901Z",
    "end": "2022-04-13T15:42:05.901Z",
    "metrics": [
        "duration"
    ],
    "source_id": "string",
    "summary": null,
    "laps": null,
    "traces": null,
    "app_metadata": null,
    "distance": null,
    "devices": [
        "string"
    ],
    "duration": "string",
    "start_local": "2022-04-13T15:42:05.901Z",
    "end_local": "2022-04-13T15:42:05.901Z"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "tags": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Tags"
        },
        "id": {
            "type": "string",
            "title": "Id"
        },
        "sport": {
            "type": "string",
            "description": "Sport string in OpenSportTaxonomy format (e.g., 'cycling.road+stationary')"
        },
        "start": {
            "type": "string",
            "format": "date-time",
            "title": "Start",
            "description": "Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field."
        },
        "end": {
            "type": "string",
            "format": "date-time",
            "title": "End",
            "description": "Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field."
        },
        "metrics": {
            "items": {
                "$ref": "#/components/schemas/Metric"
            },
            "type": "array",
            "title": "Metrics"
        },
        "source_id": {
            "type": "string",
            "title": "Source Id"
        },
        "summary": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ActivitySummarySummary"
                },
                {
                    "type": "null"
                }
            ]
        },
        "laps": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/Lap"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Laps"
        },
        "traces": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/TraceDetails"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Traces"
        },
        "app_metadata": {
            "anyOf": [
                {
                    "additionalProperties": true,
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "App Metadata"
        },
        "distance": {
            "anyOf": [
                {
                    "type": "number"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Distance"
        },
        "devices": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Devices"
        },
        "duration": {
            "type": "string",
            "format": "duration",
            "title": "Duration",
            "readOnly": true
        },
        "start_local": {
            "type": "string",
            "format": "date-time",
            "title": "Start Local",
            "description": "Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.",
            "readOnly": true
        },
        "end_local": {
            "type": "string",
            "format": "date-time",
            "title": "End Local",
            "description": "Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "sport",
        "start",
        "end",
        "metrics",
        "source_id",
        "duration",
        "start_local",
        "end_local"
    ],
    "title": "ActivityDetails"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/activities/backfill-status

Get Backfill Status

Description

Get the backfill status as a streaming newline-delimited JSON (NDJSON) response.

This endpoint is intended for newly connected users who your application needs to wait for historical activity data to be backfilled. It provides real-time progress updates as the backfill processes.

Streaming behavior: - Updates are sent periodically, approximately every few seconds. - Each line contains a complete JSON object followed by a newline character - Streaming automatically stops after 60 seconds

The backfill_loaded_until timestamp indicates the earliest activity date that has been successfully loaded. As activities are backfilled from newest to oldest, this timestamp moves backward in time toward the user's historical data.

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
refreshed-token header No
token cookie string No

Responses

[
    null
]
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "type": "array",
    "items": {
        "anyOf": [
            {
                "$ref": "#/components/schemas/BackfillStatus"
            },
            {
                "$ref": "#/components/schemas/BackfillError"
            }
        ]
    },
    "title": "Response Get Backfill Status Api V1 Activities Backfill Status Get"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/activities/longitudinal-data

Get Longitudinal Data

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
end query No End of the local-date range (inclusive).
metrics query array ['duration', 'power', 'speed', 'heart_rate'] No Metrics to include in the longitudinal data. Duration is always included.
refreshed-token header No
segmentation_on query No
sport query array No
start query No Start of the local-date range (each activity's own local date).
token cookie string No

Responses

Schema of the response body

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/activities/longitudinal-mean-max

Get Longitudinal Mean Max

Description

The best mean-max curve across activities, as Parquet.

For a sport and metric over a date range: per duration, the best average any matching activity sustained, and which activity it was. One row per duration, no index. Columns: duration, <metric> (W or m/s), start (UTC timestamp at which that best effort began), activity_id, sport, and after with fatigue states.

Durations are a fixed 19-point default (1 s to 6 h), the full grid with durations=all, or your own list; rows exist only where an activity reached that duration. The curve is returned as it is: mean-max can rise again at longer durations (intermittent efforts), and nothing smooths that away.

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
after query No Optional, repeatable fatigue state(s): the curve over the portion of each activity after this much accumulated work (kJ, for power) or distance (metres, for speed; experimental). At most 5; the date range is then capped at 1 year and the response gains an 'after' column. Computed from the activity's adaptive segments, which are exact at 1 to 20 s and within about 2 % beyond, so 'after=0' can differ slightly from the curve without 'after'.
date query No Deprecated: use 'start' and 'end' instead.
durations query No Durations to return, in seconds. Omit for the default 19 (1, 2, 5, 10, 20, 30 s; 1, 2, 3, 5, 10, 15, 20, 30 min; 1, 2, 3, 4, 6 h), pass 'all' for the full grid (1 s steps to 3 min, then 5, 10, 30 and 60 s steps), or a comma-separated list (e.g. '5,60,300,1200'). Values between stored points are interpolated. Durations no activity reached are left out.
end query No End of date range (defaults to today). Used with 'start'.
metric query string No
refreshed-token header No
sport query array No
start query No Start of date range. Preferred over 'date'/'window_days'.
token cookie string No
window_days query No Deprecated: use 'start' and 'end' instead.

Responses

Schema of the response body

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/activities/longitudinal-accumulated-work-duration

Get Longitudinal Accumulated Work Duration

Description

Warning: This endpoint is in development and subject to change.

Get longitudinal accumulated work duration (AWD) data for a given sport and metric.

Returns AWD values for each intensity level: - max: The highest daily AWD - hard: Sustainable AWD for hard workouts - medium: Sustainable AWD for medium workouts - easy: Sustainable AWD for easy workouts

Args: format: Response format - "parquet" (default) or "json"

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
date query No Deprecated: use 'start' and 'end' instead.
end query No End of date range (defaults to today). Used with 'start'.
format query string parquet No
metric query No
refreshed-token header No
sport query array No
start query No Start of date range. Preferred over 'date'/'window_days'.
token cookie string No
window_days query No Deprecated: use 'start' and 'end' instead.

Responses

Schema of the response body

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/activities/{activity_id}/data

Get Activity Data

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
activity_id path string No
metrics query array ['duration', 'power', 'speed', 'heart_rate'] No
refreshed-token header No
segmentation_on query No
token cookie string No

Responses

Schema of the response body

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/activities/{activity_id}/mean-max

Get Activity Mean Max

Description

The activity's mean-max curve, as Parquet: per duration, the best average it sustained.

One row per duration, no index. Columns: duration, <metric> (W or m/s), start (UTC timestamp at which that best effort began). Durations as on the longitudinal endpoint: a 19-point default, durations=all, or your own list, cut at the activity's length. The curve is returned as it is, including rises at longer durations.

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
activity_id path string No
durations query No Durations to return, in seconds. Omit for the default 19 (1, 2, 5, 10, 20, 30 s; 1, 2, 3, 5, 10, 15, 20, 30 min; 1, 2, 3, 4, 6 h), pass 'all' for the full grid (1 s steps to 3 min, then 5, 10, 30 and 60 s steps), or a comma-separated list (e.g. '5,60,300,1200'). Values between stored points are interpolated. Durations no activity reached are left out.
metric query string No
refreshed-token header No
token cookie string No

Responses

Schema of the response body

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/activities/{activity_id}/accumulated-work-duration

Get Activity Accumulated Work Duration

Description

Get accumulated work duration (AWD) for an activity.

AWD represents the total duration spent at each intensity level, calculated by sorting the activity data by intensity and accumulating the time spent at or above each level.

If no metric is specified, the default metric is determined by the activity's sport: - Cycling: power - Other sports: speed

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
activity_id path string No
metric query No
refreshed-token header No
token cookie string No

Responses

Schema of the response body

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/activities/{activity_id}

Get Activity

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
activity_id path string No
refreshed-token header No
token cookie string No

Responses

{
    "tags": [
        "string"
    ],
    "id": "string",
    "sport": "string",
    "start": "2022-04-13T15:42:05.901Z",
    "end": "2022-04-13T15:42:05.901Z",
    "metrics": [
        "duration"
    ],
    "source_id": "string",
    "summary": null,
    "laps": null,
    "traces": null,
    "app_metadata": null,
    "distance": null,
    "devices": [
        "string"
    ],
    "duration": "string",
    "start_local": "2022-04-13T15:42:05.901Z",
    "end_local": "2022-04-13T15:42:05.901Z"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "tags": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Tags"
        },
        "id": {
            "type": "string",
            "title": "Id"
        },
        "sport": {
            "type": "string",
            "description": "Sport string in OpenSportTaxonomy format (e.g., 'cycling.road+stationary')"
        },
        "start": {
            "type": "string",
            "format": "date-time",
            "title": "Start",
            "description": "Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field."
        },
        "end": {
            "type": "string",
            "format": "date-time",
            "title": "End",
            "description": "Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field."
        },
        "metrics": {
            "items": {
                "$ref": "#/components/schemas/Metric"
            },
            "type": "array",
            "title": "Metrics"
        },
        "source_id": {
            "type": "string",
            "title": "Source Id"
        },
        "summary": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ActivitySummarySummary"
                },
                {
                    "type": "null"
                }
            ]
        },
        "laps": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/Lap"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Laps"
        },
        "traces": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/TraceDetails"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Traces"
        },
        "app_metadata": {
            "anyOf": [
                {
                    "additionalProperties": true,
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "App Metadata"
        },
        "distance": {
            "anyOf": [
                {
                    "type": "number"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Distance"
        },
        "devices": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Devices"
        },
        "duration": {
            "type": "string",
            "format": "duration",
            "title": "Duration",
            "readOnly": true
        },
        "start_local": {
            "type": "string",
            "format": "date-time",
            "title": "Start Local",
            "description": "Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.",
            "readOnly": true
        },
        "end_local": {
            "type": "string",
            "format": "date-time",
            "title": "End Local",
            "description": "Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "sport",
        "start",
        "end",
        "metrics",
        "source_id",
        "duration",
        "start_local",
        "end_local"
    ],
    "title": "ActivityDetails"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/activities/{activity_id}/download

Download Activity

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
activity_id path string No
refreshed-token header No
token cookie string No

Responses

Schema of the response body

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

POST /api/v1/activities/upload

Upload Activity File

Description

Upload up to 10 activity files at once. Supported formats: .fit, .csv.

A FIT file carries its own sport; a CSV must include a sport column with an Open Sport Taxonomy code (e.g. cycling.road) — there is no sport parameter. The CSV must also have a timestamp column with offset-aware ISO 8601 datetimes (e.g. ...+02:00 or ...Z).

Returns 202 with one source per file (plan 041): {"sources": [SourceResponse, …]}. Each is processing (accepted, ingest continues asynchronously) or failed (a per-file problem caught at the door). Poll GET /api/v1/sources/{id} or listen for source_processed/source_failed webhooks for the outcome. Request-shape problems (no files, too many) are an RFC 7807 4xx.

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
refreshed-token header No
token cookie string No

Request body

{
    "files": [
        "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ="
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "files": {
            "items": {
                "type": "string",
                "format": "binary"
            },
            "type": "array",
            "title": "Files"
        }
    },
    "type": "object",
    "required": [
        "files"
    ],
    "title": "Body_upload_activity_file_api_v1_activities_upload_post"
}

Responses

Schema of the response body

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

PUT /api/v1/activities/{activity_id}/app-metadata

Put Activity Metadata

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
activity_id path string No
refreshed-token header No
token cookie string No

Request body

Schema of the request body
{
    "type": "object",
    "additionalProperties": true,
    "title": "Data"
}

Responses

Schema of the response body

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

DELETE /api/v1/activities/{activity_id}/app-metadata

Delete Activity Metadata

Input parameters

Parameter In Type Default Nullable Description
HTTPBearer header string N/A No JWT Bearer token
activity_id path string No
refreshed-token header No
token cookie string No

Responses

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

Schemas

ActivityDetails

Name Type Description
app_metadata
devices Array<string>
distance
duration string(duration)
end string(date-time) Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field.
end_local string(date-time) Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.
id string
laps
metrics Array<Metric>
source_id string
sport string Sport string in OpenSportTaxonomy format (e.g., 'cycling.road+stationary')
start string(date-time) Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field.
start_local string(date-time) Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.
summary
tags Array<string>
traces

ActivitySummary

Name Type Description
app_metadata
duration string(duration)
end string(date-time) Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field.
end_local string(date-time) Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.
id string
laps
metrics Array<Metric>
source_id string
sport string Sport string in OpenSportTaxonomy format (e.g., 'cycling.road+stationary')
start string(date-time) Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field.
start_local string(date-time) Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.
summary
tags Array<string>
traces

ActivitySummarySummary

Name Type Description
altitude
cadence
core_temperature
distance
heart_rate
power
smo2
speed
temperature

AltitudeSummary

Name Type Description
gain
loss
max
mean
min

BackfillError

Name Type Description
error string

BackfillStatus

Name Type Description
backfill_loaded_until

Body_upload_activity_file_api_v1_activities_upload_post

Name Type Description
files Array<string(binary)>

CadenceSummary

Name Type Description
max
mean

CoreTemperatureSummary

Name Type Description
end
max
mean
min
start

DistanceSummary

Name Type Description
sum

HeartRateSummary

Name Type Description
end
max
mean
min
start

HTTPValidationError

Name Type Description
detail Array<ValidationError>

Lap

Name Type Description
altitude
cadence
core_temperature
distance
duration string(duration)
end string(date-time) Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field.
end_local string(date-time) Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.
heart_rate
power
smo2
speed
start string(date-time) Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field.
start_local string(date-time) Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.
temperature

Marker

Name Type Description
heart_rate
lactate
power
speed
vo2

Metric

Type: string

PowerSummary

Name Type Description
max
mean

Smo2Summary

Name Type Description
end
max
mean
min
start

SpeedSummary

Name Type Description
max
mean

TemperatureSummary

Name Type Description
end
max
mean
min
start

TestResults

Name Type Description
critical_power
critical_speed
d_prime
economy
efficiency
fatmax
first_threshold
heart_rate_max
lt1
lt2
mlss
second_threshold
vlamax
vo2max
vo2peak
vt1
vt2
w_prime

TestSummary

Name Type Description
app_metadata
created_by
end Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field.
end_local Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.
id string
results
sport string Sport string in OpenSportTaxonomy format (e.g., 'cycling.road+stationary')
start string(date-time) Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field.
start_local string(date-time) Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.
tags Array<string>
title

TraceDetails

Name Type Description
activity
app_metadata
heart_rate
id string
lactate
lap
notes
power
rpe
speed
sport
tags Array<string>
test
test_id
test_match
timestamp string(date-time) Absolute instant in UTC (ISO 8601 with `Z`, e.g. `2026-05-18T15:32:00Z`). Sort, compare and merge on this; for the local wall-clock use the matching `*_local` field.
timestamp_local string(date-time) Naive local wall-clock at the record's own place/time (ISO 8601 without an offset, e.g. `2026-05-18T17:32:00`). Use for display and for grouping by local calendar date.
vo2

ValidationError

Name Type Description
loc Array<>
msg string
type string

Security schemes

Name Type Scheme Description
HTTPBearer http bearer
HTTPBasic http basic