# Strava

Strava is a social fitness network and app designed for cyclists and runners.

- **Category:** fitness
- **Auth:** OAUTH2
- **Tools:** 33
- **Triggers:** 0
- **Slug:** `STRAVA`
- **Version:** 20260211_00

## Frequently Asked Questions

### How do I set up custom OAuth credentials for Strava?

For a step-by-step guide on creating and configuring your own Strava OAuth credentials with Composio, see [How to create OAuth credentials for Strava](https://composio.dev/auth/strava).

## Tools

### Create an Activity

**Slug:** `STRAVA_CREATE_AN_ACTIVITY`

Creates a manual activity for an athlete. Requires activity:write scope. This endpoint is for manually entered activities only. To upload activity files (FIT, TCX, GPX), use the Upload Activity endpoint instead. Required parameters: name, sport_type, start_date_local, elapsed_time. Optional parameters: type (deprecated), description, distance, trainer, commute.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | The name/title of the activity (required). |
| `type` | string | No | Deprecated activity type. Use sport_type instead. If both are provided, type is ignored. Common values: Run, Ride, Swim, Walk, Hike, Workout. |
| `commute` | integer | No | Set to 1 to mark the activity as a commute. Set to 0 or omit for non-commute activities. |
| `trainer` | integer | No | Set to 1 to mark the activity as done on a trainer/indoor. Set to 0 or omit for outdoor activities. |
| `distance` | number | No | Distance in meters. Example: 5000.0 for 5km. |
| `sport_type` | string | Yes | Sport type of the activity (required). Common values include: Run, TrailRun, Walk, Hike, Ride, MountainBikeRide, GravelRide, VirtualRide, Swim, Workout, WeightTraining, Yoga, CrossFit, Rowing, Kayaking, Skiing, Snowboarding. |
| `description` | string | No | Optional text description of the activity. |
| `elapsed_time` | integer | Yes | Total elapsed time of the activity in seconds (required). Example: 3600 for 1 hour. |
| `start_date_local` | string | Yes | ISO 8601 formatted local date-time when the activity started (required). Example: '2024-01-15T09:30:00Z' or '2024-01-15T09:30:00+00:00'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Explore segments

**Slug:** `STRAVA_EXPLORE_SEGMENTS`

Explore segments within a geographic bounding box. Returns the top 10 segments matching the specified geographic boundary and optional filters. Segments are sections of roads or trails where Strava athletes can compete for times. The response includes segment details like: - id: Unique segment identifier - name: Segment name - climb_category: Climbing difficulty (0=NC/flat to 5=HC/hardest) - avg_grade: Average gradient percentage - distance: Segment length in meters - elev_difference: Elevation gain in meters - start_latlng/end_latlng: Start and end coordinates - elevation_profile: URL to elevation profile image

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bounds` | string | Yes | The latitude and longitude for two points describing a rectangular boundary for the search as a comma-separated string: 'southwest_lat,southwest_lng,northeast_lat,northeast_lng'. Example: '37.7,-122.5,37.8,-122.4' for San Francisco area. |
| `max_cat` | integer | No | The maximum climbing category (0-5, where 0 is the easiest 'NC' category and 5 is the hardest 'HC' category). |
| `min_cat` | integer | No | The minimum climbing category (0-5, where 0 is the easiest 'NC' category and 5 is the hardest 'HC' category). |
| `activity_type` | string ("running" | "riding") | No | Desired activity type. Must be 'running' or 'riding'. Defaults to riding. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Route as GPX

**Slug:** `STRAVA_EXPORT_ROUTE_GPX`

Exports a Strava route as a GPX (GPS Exchange Format) file. GPX files can be used to import routes into GPS devices, other fitness apps, or mapping software. Requires read_all scope for private routes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the Strava route to export as GPX. You can get route IDs from the List Athlete Routes action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Route as TCX

**Slug:** `STRAVA_EXPORT_ROUTE_TCX`

Exports a Strava route as a TCX (Training Center XML) file. TCX format is widely supported by GPS devices, fitness watches, and training software like Garmin Connect and TrainingPeaks. The exported file contains the route's waypoints, distance, and elevation profile. Requires read_all scope for private routes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the Strava route to export as TCX. This must be a valid route ID that the authenticated user has access to view (either their own route or a public route). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Activity

**Slug:** `STRAVA_GET_ACTIVITY`

Retrieves detailed information about a specific activity by its ID. Returns a DetailedActivity object containing comprehensive data including distance, time, elevation, speed, heart rate, power data (if available), segment efforts, laps, splits, and more. Permissions required: - activity:read scope for activities with visibility set to 'everyone' or 'followers_only' - activity:read_all scope for activities with visibility set to 'only_me' The activity must be owned by the authenticated athlete.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the activity to retrieve. This is the numeric ID assigned by Strava when the activity was created. |
| `include_all_efforts` | boolean | No | When set to true, includes all segment efforts in the response. When false or omitted, only segment efforts that match the athlete's best efforts are included. Setting this to true may significantly increase response size for activities with many segments. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get activity streams

**Slug:** `STRAVA_GET_ACTIVITY_STREAMS`

Retrieves time-series stream data for a specific activity. Streams are the raw spatial and sensor data recorded during an activity, including GPS coordinates, speed, heart rate, power, etc. Each stream type returns an array of values that correspond to specific time points during the activity. All requested streams have the same number of data points, aligned by index. Common use cases: - GPS track visualization: request 'latlng', 'altitude', 'time' - Performance analysis: request 'heartrate', 'cadence', 'watts', 'time' - Pace/speed analysis: request 'velocity_smooth', 'distance', 'time' Requires activity:read scope. Requires activity:read_all scope for Only Me (private) activities.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the activity to retrieve streams for. Can be obtained from list_athlete_activities or get_activity. |
| `keys` | array | Yes | List of stream types to retrieve. Common combinations: ['time', 'distance', 'latlng'] for GPS track, ['time', 'heartrate', 'cadence', 'watts'] for performance data. Available types: time, distance, latlng, altitude, velocity_smooth, heartrate, cadence, watts, temp, moving, grade_smooth. |
| `key_by_type` | boolean | No | Must be true. Returns streams keyed by stream type. This is the only supported format. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Activity Zones

**Slug:** `STRAVA_GET_ACTIVITY_ZONES`

Returns the heart rate and power zones of a given activity. This is a Summit/Premium feature that provides zone distribution data showing time spent in each training zone. The response includes an array of ActivityZone objects, typically containing: - Heart rate zones: Time distribution across heart rate training zones - Power zones: Time distribution across power training zones (for cycling with power meter) Requirements: - Strava Summit/Premium subscription for the athlete who owns the activity - activity:read scope for Everyone and Followers visibility activities - activity:read_all scope for Only Me (private) activities Common errors: - 404: Activity not found or not accessible - 403: Insufficient permissions to view activity - 402: Summit subscription required

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the activity. Must be an activity owned by or visible to the authenticated athlete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get athlete stats

**Slug:** `STRAVA_GET_ATHLETE_STATS`

Returns the activity stats of an athlete, including ride, run, and swim totals for recent (last 4 weeks), year-to-date, and all-time periods. Only includes data from activities set to 'Everyone' visibility. Use get_authenticated_athlete to obtain the required athlete ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The numeric identifier of the athlete. Must match the authenticated athlete's ID, which can be obtained from the get_authenticated_athlete action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get authenticated athlete

**Slug:** `STRAVA_GET_AUTHENTICATED_ATHLETE`

Retrieves the profile of the currently authenticated Strava athlete. Returns athlete information including name, location, account status, profile photos, and social connections. The level of detail depends on the OAuth scope: - With 'profile:read_all' scope: Returns detailed representation (resource_state=3) including follower counts, measurement preferences, FTP, weight, and equipment. - Without 'profile:read_all' scope: Returns summary representation (resource_state=2) with basic profile information only. This is a read-only endpoint that requires no input parameters.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Club

**Slug:** `STRAVA_GET_CLUB`

Retrieves detailed information about a specific Strava club by its ID. Returns comprehensive club details including name, description, location (city/state/country), member count, sport type, activity types, club type (casual, racing team, company, etc.), privacy settings, and the authenticated athlete's membership status. Use STRAVA_LIST_ATHLETE_CLUBS to get club IDs for clubs the authenticated athlete belongs to, or use a known club ID from a Strava club URL. Returns a 404 error if the club does not exist.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique numeric identifier of the Strava club. Can be obtained from the STRAVA_LIST_ATHLETE_CLUBS action or from a club's URL (e.g., strava.com/clubs/1 has id=1). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get equipment

**Slug:** `STRAVA_GET_EQUIPMENT`

Retrieves detailed information about a specific piece of gear/equipment. Returns comprehensive details about bikes or shoes including name, brand, model, total distance, and status (primary/retired). The requesting athlete must own the gear - you cannot view other athletes' equipment. Use Cases: - Get detailed specs and usage statistics for a specific bike or shoe - Check if gear is retired or still in active use - View total distance traveled with specific equipment - Retrieve brand and model information for gear inventory Prerequisites: - Gear ID can be obtained from: 1. Get Authenticated Athlete (bikes/shoes arrays in detailed response) 2. Get Activity (gear_id field shows equipment used for that activity) Note: Gear IDs use prefixes: 'b' for bikes (e.g., 'b12345678'), 'g' for shoes (e.g., 'g12345678').

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the gear/equipment. Bike IDs start with 'b' (e.g., 'b12345678'), shoe IDs start with 'g' (e.g., 'g12345678'). Gear IDs can be obtained from the authenticated athlete's profile (bikes/shoes arrays) or from activity details (gear_id field). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get route

**Slug:** `STRAVA_GET_ROUTE`

Retrieve detailed information about a specific Strava route. A route is a planned path that athletes can follow, created via the Strava Route Builder. This endpoint returns comprehensive route data including: - Basic info: name, description, activity type (Ride/Run), sub_type - Geographic data: distance (meters), elevation_gain (meters), start/end coordinates - Map data: polyline for rendering the route path, map_urls - Metadata: created_at, updated_at, estimated_moving_time, private status - Segments: list of segments included in the route - Waypoints: custom waypoints added to the route Note: Requires read_all scope to retrieve private routes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique numeric identifier of the Strava route. Route IDs can be obtained from list_athlete_routes or from the URL when viewing a route on Strava (e.g., strava.com/routes/12345678). Example: 12345678 |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get route streams

**Slug:** `STRAVA_GET_ROUTE_STREAMS`

Get detailed stream data for a route. Returns raw GPS coordinates, elevation, and distance data points along a route's path. This data can be used for mapping, elevation profiles, and route analysis. Available stream types for routes: - latlng: Latitude/longitude coordinate pairs for mapping the route - distance: Cumulative distance along the route in meters - altitude: Elevation values in meters for elevation profiles Note: Requires read_all scope for private routes. Use list_athlete_routes to find route IDs for the authenticated athlete.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the route. Use list_athlete_routes to find route IDs for the authenticated athlete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get segment

**Slug:** `STRAVA_GET_SEGMENT`

Retrieve detailed information about a specific Strava segment. A segment is a portion of a road or trail where athletes can compete for times. This endpoint returns comprehensive segment data including: - Basic info: name, activity_type (Ride/Run), city, state, country - Geographic data: distance, average_grade, maximum_grade, elevation_high/low, start/end coordinates - Map data: polyline for rendering the segment path - Statistics: effort_count, athlete_count, star_count - Records: xoms (KOM/QOM times), local_legend info - Athlete-specific stats: personal records (requires read_all scope) Note: read_all scope is required to retrieve athlete-specific segment information or to access private segments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique numeric identifier of the Strava segment. Segment IDs can be obtained from explore_segments, list_starred_segments, list_segment_efforts, or from activity details. Example: 229781 |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get segment effort

**Slug:** `STRAVA_GET_SEGMENT_EFFORT`

Retrieves detailed information about a specific segment effort by its unique ID. A segment effort represents an athlete's attempt at a particular segment during an activity. This endpoint returns performance metrics including elapsed time, distance, speed, heart rate, power, and cadence data. The segment effort ID can be obtained from: - Activity details (when using include_all_efforts=True with get_activity) - The list_segment_efforts endpoint for a specific segment Note: Requires an active Strava subscription for the authenticated athlete.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the segment effort. This can be obtained from activity details (segment_efforts array) or from the list_segment_efforts endpoint. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get segment effort streams

**Slug:** `STRAVA_GET_SEGMENT_EFFORT_STREAMS`

Returns stream data for a segment effort completed by the authenticated athlete. Streams provide the raw time-series data associated with a segment effort, such as GPS coordinates, altitude, speed, heart rate, power, etc. All streams for a given segment effort have the same length, with values at each index corresponding to the same point in time. Requires read_all scope. The segment effort must be from an activity owned by the authenticated athlete. Use get_activity with include_all_efforts=true or list_segment_efforts to find segment effort IDs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the segment effort. Obtain this ID from activities (segment_efforts array) or from list_segment_efforts action. |
| `keys` | string | Yes | Comma-separated list of stream types to return. Available types: 'time', 'distance', 'latlng', 'altitude', 'velocity_smooth', 'heartrate', 'cadence', 'watts', 'temp', 'moving', 'grade_smooth'. Example: 'time,distance,altitude' for time, distance, and altitude streams. Not all streams may be available depending on the activity data. |
| `key_by_type` | boolean | No | Must be true. Defaults to true. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get segment streams

**Slug:** `STRAVA_GET_SEGMENT_STREAMS`

Get detailed stream data for a segment. Returns raw GPS, elevation, and distance data points along a segment's route. This data can be used for mapping, elevation profiles, and route analysis. Available stream types: - distance: Distance along the segment in meters - latlng: Latitude/longitude coordinate pairs for mapping - altitude: Elevation values in meters for elevation profiles Note: Only distance, altitude, and latlng stream types are available for segments. Other stream types (like heartrate, watts) are only available for activities. Requires read_all scope for private segments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the segment. Use explore_segments or list_starred_segments to find segment IDs. |
| `keys` | string | Yes | Comma-separated list of stream types to return. Available types: 'distance', 'latlng', 'altitude'. Example: 'distance,latlng,altitude' to get all stream types. |
| `key_by_type` | boolean | No | Must be true. Defaults to true. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Upload Status

**Slug:** `STRAVA_GET_UPLOAD`

Retrieves the status of an upload by its ID. Use this endpoint to poll the processing status of an uploaded activity file. Uploads are processed asynchronously, so you should poll this endpoint (recommended: no more than once per second) until the activity_id is populated or an error is returned. Requires activity:write scope.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `uploadId` | integer | Yes | The unique identifier of the upload to retrieve. This ID is returned when uploading an activity file via the Upload Activity endpoint. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get zones

**Slug:** `STRAVA_GET_ZONES`

Retrieves the authenticated athlete's heart rate and power zones. This endpoint returns the athlete's configured training zones for both heart rate and power, including zone thresholds and time spent in each zone. Note: Requires the 'profile:read_all' OAuth scope. If you receive a 401 Unauthorized error, ensure your connection has this scope.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List activity comments

**Slug:** `STRAVA_LIST_ACTIVITY_COMMENTS`

Retrieves comments on a specific Strava activity, sorted oldest first. Returns comment details including the comment text, author information, and timestamps. Supports cursor-based pagination for activities with many comments. Requires OAuth scope: activity:read for Everyone/Followers activities, activity:read_all for Only Me (private) activities. Note: Returns an empty list if the activity has no comments or if you don't have permission to view the activity.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the Strava activity to retrieve comments for. |
| `page_size` | integer | No | Number of comments to return per page (1-200). Defaults to 30. |
| `after_cursor` | string | No | Cursor for pagination. Pass the cursor from a previous response to fetch the next page of comments. Omit to fetch the first page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List activity kudoers

**Slug:** `STRAVA_LIST_ACTIVITY_KUDOERS`

Returns the athletes who kudoed an activity identified by an identifier. Requires activity:read for Everyone and Followers activities. Requires activity:read_all for Only Me activities.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the activity to retrieve kudoers for. This is a numeric ID returned when creating or listing activities. |
| `page` | integer | No | Page number for pagination. Defaults to 1 if not specified. |
| `per_page` | integer | No | Number of kudoers to return per page. Defaults to 30, maximum is 200. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List activity laps

**Slug:** `STRAVA_LIST_ACTIVITY_LAPS`

Retrieves lap data for a specific Strava activity. Laps represent segments of an activity, typically auto-generated during activities like running or cycling based on distance intervals, manual lap button presses, or course segments. Each lap contains detailed metrics including timing, distance, speed, cadence, and power data. Note: Pace zones in lap data are only populated for running activities and are based on the athlete's configured race times. Authorization: - Requires 'activity:read' scope for public (Everyone) and Followers-only activities. - Requires 'activity:read_all' scope for private (Only Me) activities.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique numeric identifier of the Strava activity. This can be obtained from the STRAVA_LIST_ATHLETE_ACTIVITIES or STRAVA_GET_ACTIVITY actions. Example: 12345678901. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List athlete activities

**Slug:** `STRAVA_LIST_ATHLETE_ACTIVITIES`

Retrieves a paginated list of activities for the authenticated athlete. Returns activity summaries including name, type, distance, duration, elevation gain, speed, heart rate data, and timestamps. Use 'before' and 'after' parameters to filter activities by date range, and 'page'/'per_page' for pagination. Requires OAuth scope: activity:read for public/followers activities, activity:read_all for private activities. Note: Returns an empty list if no activities match the criteria.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number for pagination, starting at 1. Use with per_page to paginate through large result sets. |
| `after` | integer | No | Unix epoch timestamp (seconds since 1970-01-01). Returns only activities that started after this time. Example: 1704067200 for Jan 1, 2024. |
| `before` | integer | No | Unix epoch timestamp (seconds since 1970-01-01). Returns only activities that started before this time. Example: 1704067200 for Jan 1, 2024. |
| `per_page` | integer | No | Number of activities per page (1-200). Defaults to 30. Maximum is 200 activities per request. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List athlete clubs

**Slug:** `STRAVA_LIST_ATHLETE_CLUBS`

Retrieves a paginated list of Strava clubs the authenticated athlete is a member of. Returns club details including id, name, location, member count, sport type, and profile images. Use the club id from the response to fetch detailed club information with other club endpoints. Note: Returns an empty list if the athlete is not a member of any clubs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. Starts at 1. If not provided, defaults to 1. |
| `per_page` | integer | No | Number of clubs to return per page. Must be between 1 and 200. Defaults to 30. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List athlete routes

**Slug:** `STRAVA_LIST_ATHLETE_ROUTES`

Lists routes created by a specific athlete. Returns an array of Route summaries including id, name, distance, elevation gain, and type. Private routes are filtered out unless the token has read_all scope. Only the authenticated athlete's routes can be accessed; attempting to list another athlete's routes returns 403 Forbidden.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The identifier of the athlete. Must match the authenticated athlete to list their routes. |
| `page` | integer | No | Page number for paginated results. Defaults to 1. |
| `per_page` | integer | No | Number of routes per page. Maximum is 200. Defaults to 30. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List club activities

**Slug:** `STRAVA_LIST_CLUB_ACTIVITIES`

Retrieve recent activities from members of a specific club. IMPORTANT: The authenticated athlete must be a member of the requested club to access this endpoint. Use 'List Athlete Clubs' first to get club IDs the athlete belongs to. Pagination is supported (max 200 activities total). Enhanced Privacy Mode is respected for all activities. Note: Club activities have limited data for privacy - they do not include activity IDs, dates, or full athlete names.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the club. You can obtain club IDs using the 'List Athlete Clubs' endpoint to retrieve clubs the authenticated athlete belongs to. |
| `page` | integer | No | Page number for pagination. Defaults to 1. |
| `per_page` | integer | No | Number of activities per page. Defaults to 30. Maximum is 200. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List club administrators

**Slug:** `STRAVA_LIST_CLUB_ADMINISTRATORS`

Returns a list of the administrators of a given Strava club. The response includes each administrator's first name, last name (possibly abbreviated), and resource state. For public clubs, this endpoint is accessible without membership. For private clubs, the authenticated user may need to be a member to view administrators. Returns an empty list if the club has no visible administrators or access is restricted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the Strava club. Can be obtained from STRAVA_LIST_ATHLETE_CLUBS or STRAVA_GET_CLUB actions. |
| `page` | integer | No | Page number for pagination (1-indexed). If not specified, defaults to 1. |
| `per_page` | integer | No | Number of administrators to return per page. Defaults to 30. Maximum is 200. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List club members

**Slug:** `STRAVA_LIST_CLUB_MEMBERS`

Returns a list of the athletes who are members of a given club. The authenticated athlete must belong to the requested club to access this endpoint. Results are paginated and can be controlled using page and per_page parameters. Note: Due to privacy settings, some member information may be limited.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the club. Use STRAVA_LIST_ATHLETE_CLUBS to get club IDs for clubs the authenticated user belongs to, or STRAVA_GET_CLUB to verify a club ID. |
| `page` | integer | No | Page number for pagination. Defaults to 1 if not specified. |
| `per_page` | integer | No | Number of members to return per page. Defaults to 30, maximum is 200. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List segment efforts

**Slug:** `STRAVA_LIST_SEGMENT_EFFORTS`

List the authenticated athlete's efforts on a given segment. Returns all segment efforts for the authenticated athlete on the specified segment, optionally filtered by date range. Segment efforts represent each time an athlete has ridden/run a particular segment. The response includes details like: - id: Unique effort identifier - elapsed_time: Time to complete the segment in seconds - moving_time: Moving time on the segment in seconds - start_date: When the effort started - distance: Distance covered in meters - average_watts: Average power output (if power data available) - average_heartrate: Average heart rate (if HR data available) - pr_rank: Personal record ranking (1=PR, 2=2nd best, 3=3rd best, null otherwise) - kom_rank: King/Queen of Mountain ranking position (if in top 10) Note: This endpoint only returns efforts for segments the authenticated athlete has actually completed. If the athlete hasn't ridden/run a segment, an empty list will be returned.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `per_page` | integer | No | Number of items per page. Must be between 1 and 200. Defaults to 30. |
| `segment_id` | integer | Yes | The unique identifier of the segment. You can get segment IDs from explore_segments, get_activity (which includes segment_efforts), or starred_segments endpoints. |
| `end_date_local` | string | No | Filter efforts to those ending before this ISO 8601 formatted date time. Example: '2023-12-31T23:59:59Z'. If not provided, returns all efforts. |
| `start_date_local` | string | No | Filter efforts to those starting after this ISO 8601 formatted date time. Example: '2023-01-01T00:00:00Z'. If not provided, returns all efforts. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List starred segments

**Slug:** `STRAVA_LIST_STARRED_SEGMENTS`

Returns a list of the authenticated athlete's starred segments with summary details including segment name, distance, elevation, grade, and location. Private segments are filtered out unless requested by a token with read_all scope. Use pagination parameters (page, per_page) to navigate through large result sets.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number for paginated results. Starts at 1. If not specified, defaults to 1. |
| `per_page` | integer | No | Number of segments to return per page. Maximum is 200. Defaults to 30. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Star segment

**Slug:** `STRAVA_STAR_SEGMENT`

Stars/Unstars the given segment for the authenticated athlete. Requires profile:write scope.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the Strava segment to star or unstar. Can be obtained from explore_segments or get_segment actions. |
| `starred` | boolean | No | If true, star (favorite) the segment; if false, unstar (remove from favorites) the segment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Athlete

**Slug:** `STRAVA_UPDATE_ATHLETE`

Update the currently authenticated athlete's profile. Currently only supports updating the athlete's weight. Requires profile:write scope.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `weight` | number | Yes | The weight of the athlete in kilograms. Must be a positive number (e.g., 70.5). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upload Activity

**Slug:** `STRAVA_UPLOAD_ACTIVITY`

Uploads a new activity file (FIT, TCX, or GPX) to create an activity on Strava. The upload is processed asynchronously. This endpoint returns an upload ID immediately, which can be used with the Get Upload endpoint to check processing status and retrieve the created activity ID once processing completes. Typical processing time is under 2 seconds. Files must be 25MB or smaller and contain actual workout data with timestamps for each trackpoint. Requires the activity:write OAuth scope.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | Yes | The activity file to upload. FileUploadable object with 'name' (filename with extension, e.g., 'activity.gpx'), 'mimetype' (e.g., 'application/gpx+xml'), and 's3key' (internal storage key). Supported formats: FIT, TCX, GPX (and their gzipped variants). Files must contain timestamps for each trackpoint. Max size: 25MB. |
| `name` | string | No | The activity name to display on Strava. If not provided, Strava will auto-generate a name based on the activity type and time. |
| `commute` | boolean | No | Set to true to mark as a commute activity. |
| `trainer` | boolean | No | Set to true to mark as a trainer activity (indoor on a stationary trainer). |
| `data_type` | string ("fit" | "fit.gz" | "tcx" | "tcx.gz" | "gpx" | "gpx.gz") | Yes | The format of the uploaded file. Must match the actual file format. Options: 'fit', 'fit.gz', 'tcx', 'tcx.gz', 'gpx', 'gpx.gz'. |
| `sport_type` | string ("AlpineSki" | "BackcountrySki" | "Badminton" | "Canoeing" | "Crossfit" | "EBikeRide" | "Elliptical" | "EMountainBikeRide" | "Golf" | "GravelRide" | "Handcycle" | "HighIntensityIntervalTraining" | "Hike" | "IceSkate" | "InlineSkate" | "Kayaking" | "Kitesurf" | "MountainBikeRide" | "NordicSki" | "Pickleball" | "Pilates" | "Racquetball" | "Ride" | "RockClimbing" | "RollerSki" | "Rowing" | "Run" | "Sail" | "Skateboard" | "Snowboard" | "Snowshoe" | "Soccer" | "Squash" | "StairStepper" | "StandUpPaddling" | "Surfing" | "Swim" | "TableTennis" | "Tennis" | "TrailRun" | "Velomobile" | "VirtualRide" | "VirtualRow" | "VirtualRun" | "Walk" | "WeightTraining" | "Wheelchair" | "Windsurf" | "Workout" | "Yoga") | No | Sport types that can be assigned to uploaded activities. |
| `description` | string | No | A text description of the activity. |
| `external_id` | string | No | An arbitrary unique identifier for this upload. Useful for tracking uploads from external systems and preventing duplicate uploads. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
