
Connect your stack
27 native integrations. 3,200+ tools via managed connectors. Most are one-click OAuth, some use API keys - Viktor handles auth and starts working. No webhooks, no Zapier zaps.
Viktor is an AI employee that connects to Strava in one click via OAuth and helps you track workouts, activity, and health habits, running 36 Strava actions for you like Get Club, Get route, and Get zones. Ask in plain English in Slack or Microsoft Teams; Viktor does the work in Strava and reports back. Setup takes about two minutes.
Free to start · No credit card · SOC 2 Type 1 · Works in Slack & Microsoft Teams
Messages you'd actually send. Paste one into Slack or Microsoft Teams, swap in your specifics, and Viktor takes it from there.
“Summarize this week's workouts from Strava and compare them to last week.”
— you, in Slack or Teams
“Check Strava for my current streak and tell me what I need to keep it going.”
— you, in Slack or Teams
“Watch Strava for a new personal record and let me know right away.”
— you, in Slack or Teams
“Pull this month's activity trend from Strava and post it here every month.”
— you, in Slack or Teams
Ask in plain English in Slack or Microsoft Teams. Viktor picks the right Strava actions, runs the work, and reports back. No workflows to build.
Retrieves lap data for a specific Strava activity by its identifier. 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. Use this action when you need detailed performance metrics for each lap within an activity, including timing, distance, speed, cadence, and elevation data.
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, sporttype, startdatelocal, elapsedtime. Optional parameters: type (deprecated), description, distance, trainer, commute.
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 - climbcategory: Climbing difficulty (0=NC/flat to 5=HC/hardest) - avggrade: Average gradient percentage - distance: Segment length in meters - elevdifference: Elevation gain in meters - startlatlng/endlatlng: Start and end coordinates - elevationprofile: URL to elevation profile image.
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 readall scope for private routes.
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 readall scope for private routes.
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 'followersonly' - activity:readall scope for activities with visibility set to 'onlyme' The activity must be owned by the authenticated athlete.
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 'velocitysmooth', 'distance', 'time' Requires activity:read scope. Requires activity:readall scope for Only Me (private) activities.
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:readall 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.
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 getauthenticatedathlete to obtain the required athlete ID.
Retrieves the authenticated athlete's heart rate and power training zones. Use this action when you need to access an athlete's configured training zones for heart rate and power, including zone thresholds and time spent in each zone. This is useful for analyzing training intensity distribution and planning workouts based on the athlete's current zone settings. Requires the 'profile:readall' OAuth scope for access.
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:readall' scope: Returns detailed representation (resourcestate=3) including follower counts, measurement preferences, FTP, weight, and equipment. - Without 'profile:readall' scope: Returns summary representation (resourcestate=2) with basic profile information only. This is a read-only endpoint that requires no input parameters.
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 STRAVALISTATHLETECLUBS 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.
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 (gearid field shows equipment used for that activity) Note: Gear IDs use prefixes: 'b' for bikes (e.g., 'b12345678'), 'g' for shoes (e.g., 'g12345678').
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), subtype - Geographic data: distance (meters), elevationgain (meters), start/end coordinates - Map data: polyline for rendering the route path, mapurls - Metadata: createdat, updatedat, estimatedmovingtime, private status - Segments: list of segments included in the route - Waypoints: custom waypoints added to the route Note: Requires readall scope to retrieve private routes.
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 readall scope for private routes. Use listathleteroutes to find route IDs for the authenticated athlete.
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, activitytype (Ride/Run), city, state, country - Geographic data: distance, averagegrade, maximumgrade, elevationhigh/low, start/end coordinates - Map data: polyline for rendering the segment path - Statistics: effortcount, athletecount, starcount - Records: xoms (KOM/QOM times), locallegend info - Athlete-specific stats: personal records (requires readall scope) Note: readall scope is required to retrieve athlete-specific segment information or to access private segments.
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 includeallefforts=True with getactivity) - The listsegmentefforts endpoint for a specific segment Note: Requires an active Strava subscription for the authenticated athlete.
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 readall scope. The segment effort must be from an activity owned by the authenticated athlete. Use getactivity with includeallefforts=true or listsegmentefforts to find segment effort IDs.
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 readall scope for private segments.
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 activityid is populated or an error is returned. Requires activity:write scope.
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:readall' OAuth scope. If you receive a 401 Unauthorized error, ensure your connection has this scope.
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:readall 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.
Returns the athletes who kudoed an activity identified by an identifier. Requires activity:read for Everyone and Followers activities. Requires activity:readall for Only Me activities.
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:readall' scope for private (Only Me) 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'/'perpage' for pagination. Requires OAuth scope: activity:read for public/followers activities, activity:readall for private activities. Note: Returns an empty list if no activities match the criteria.
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.
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 readall scope. Only the authenticated athlete's routes can be accessed; attempting to list another athlete's routes returns 403 Forbidden.
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.
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.
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 perpage parameters. Note: Due to privacy settings, some member information may be limited.
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 - elapsedtime: Time to complete the segment in seconds - movingtime: Moving time on the segment in seconds - startdate: When the effort started - distance: Distance covered in meters - averagewatts: Average power output (if power data available) - averageheartrate: Average heart rate (if HR data available) - prrank: Personal record ranking (1=PR, 2=2nd best, 3=3rd best, null otherwise) - komrank: 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.
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 readall scope. Use pagination parameters (page, perpage) to navigate through large result sets.
Stars/Unstars the given segment for the authenticated athlete. Requires profile:write scope.
Update the currently authenticated athlete's profile. Currently only supports updating the athlete's weight. Requires profile:write scope.
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.
Validates Strava API credentials by fetching the authenticated athlete's profile. Returns basic athlete information to confirm the access token is valid and active. Use this action when you need to verify that Strava API credentials are properly configured and have not been revoked or expired. This is a read-only operation that requires no input parameters.

27 native integrations. 3,200+ tools via managed connectors. Most are one-click OAuth, some use API keys - Viktor handles auth and starts working. No webhooks, no Zapier zaps.
Message Viktor in Slack like you'd message a teammate. "Summarize this week's workouts from Strava and compare them to last week." "Check Strava for my current streak and tell me what I need to keep it going." Plain English, any tool.
Viktor opens Strava, runs the work, and posts back what changed. Sensitive actions wait for your approval. Everything is logged. You stop doing the work and start reviewing it.
A Strava AI agent is an AI that connects to your Strava account and completes work in it - it doesn't just answer questions about Strava, it takes the actions. Viktor is that agent: an AI employee that works in Strava on your behalf and delivers the finished result in Slack or Microsoft Teams.
Unlike workflow builders such as Zapier or Make, there is nothing to configure - no triggers to map, no workflows to maintain. You describe the outcome in plain English, and Viktor picks the right Strava actions, chains them with the other 3,200+ tools it connects to, and asks for approval before anything sensitive runs.
Designed by athletes, for athletes, Strava's mobile app and website connect millions of runners and cyclists through the sports they love.
One-click OAuth - Viktor never sees your password, and you can revoke access at any time.
Review-first approvals: sensitive Strava actions wait for your sign-off before they run.
Isolated compute per team, encrypted in transit and at rest - and your data is never used to train models.
SOC 2 Type 1 compliant, with Type 2 and ISO 27001 in progress.
Yes. Strava is one of the 3,200+ tools Viktor connects to, via a managed connector. Once connected, anyone on your team can put Viktor to work in Strava from Slack or Microsoft Teams - no workflow builder, no code.