# Strava AI agent for Slack & Microsoft Teams

Viktor is an AI employee that connects to Strava 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. Viktor connects in one click via OAuth.

- Tool: Strava
- Category: Productivity
- Connection: One-click OAuth
- Actions available: 36
- Works from: Slack and Microsoft Teams
- Page: https://viktor.com/integrations/strava

## What can you ask Viktor to do in Strava?

- "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."
- "Watch Strava for a new personal record and let me know right away."
- "Pull this month's activity trend from Strava and post it here every month."

## What can Viktor do in Strava? (36 actions)

- **Get Activity Laps** - 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.
- **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, sporttype, startdatelocal, elapsedtime. Optional parameters: type (deprecated), description, distance, trainer, commute.
- **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 - 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.
- **Export Route as 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 readall scope for private routes.
- **Export Route as 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 readall scope for private routes.
- **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 'followersonly' - activity:readall scope for activities with visibility set to 'onlyme' The activity must be owned by the authenticated athlete.
- **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 'velocitysmooth', 'distance', 'time' Requires activity:read scope. Requires activity:readall scope for Only Me (private) activities.
- **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: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.
- **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 getauthenticatedathlete to obtain the required athlete ID.
- **Get athlete zones** - 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.
- **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: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.
- **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 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.
- **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 (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').
- **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), 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 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 readall scope for private routes. Use listathleteroutes to find route IDs for the authenticated athlete.
- **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, 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.
- **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 includeallefforts=True with getactivity) - The listsegmentefforts endpoint for a specific segment Note: Requires an active Strava subscription for the authenticated athlete.
- **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 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 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 readall scope for private segments.
- **Get Upload Status** - 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.
- **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:readall' OAuth scope. If you receive a 401 Unauthorized error, ensure your connection has this scope.
- **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: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.
- **List activity kudoers** - 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.
- **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:readall' scope for private (Only Me) activities.
- **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'/'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.
- **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.
- **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 readall scope. Only the authenticated athlete's routes can be accessed; attempting to list another athlete's routes returns 403 Forbidden.
- **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.
- **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.
- **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 perpage parameters. Note: Due to privacy settings, some member information may be limited.
- **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 - 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.
- **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 readall scope. Use pagination parameters (page, perpage) to navigate through large result sets.
- **Star segment** - Stars/Unstars the given segment for the authenticated athlete. Requires profile:write scope.
- **Update Athlete** - Update the currently authenticated athlete's profile. Currently only supports updating the athlete's weight. Requires profile:write scope.
- **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.
- **Validate credential** - 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.

## How does Viktor work with Strava?

1. Add Viktor to Slack or Microsoft Teams.
2. Connect Strava with one-click OAuth - Viktor handles authentication.
3. Ask in plain English. Viktor runs the Strava actions, chains them with your other tools when needed, and reports back. Sensitive actions wait for your approval.

## What is a Strava AI agent?

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.

### About Strava

Designed by athletes, for athletes, Strava's mobile app and website connect millions of runners and cyclists through the sports they love.

## Security and permissions

- 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.

## FAQ

### Does Viktor integrate with Strava?

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.

### How do I connect Strava to Viktor?

Ask Viktor in Slack or Microsoft Teams to connect Strava, then approve the one-click OAuth prompt. Viktor never sees your password, handles authentication itself, and starts working right away. Setup takes about two minutes, and you can revoke access at any time.

### What can Viktor do in Strava?

Viktor can run 36 Strava actions, including Get Club, Get route, and Get zones - and chain them with other tools in a single request. In practice that means Viktor helps you track workouts, activity, and health habits. If a task spans several actions, Viktor plans the sequence itself and reports back when the work is done.

### Do I need to build workflows to automate Strava?

No. Viktor isn't a workflow builder - there are no triggers to map and no workflows to maintain. You ask for the outcome in plain English in Slack or Microsoft Teams, and Viktor decides which Strava actions to take, runs them, and reports back.

### Is my Strava data secure with Viktor?

Yes. Viktor connects to Strava in one click via OAuth, runs in an isolated environment per team, and never trains models on your data. Sensitive actions wait for your approval, and you can revoke access at any time. Viktor is SOC 2 Type 1 compliant, with Type 2 and ISO 27001 in progress.

### How much does the Strava integration cost?

Nothing extra - every integration, including Strava, is available on every plan. You can start free with up to $100 in credits, no credit card required; paid plans start at $50/month.

### Can Viktor use Strava together with my other tools?

Yes - that's the point. Viktor connects to 3,200+ tools and works across them in a single run: it can pull data from Strava, cross-reference it with another tool - for example Slack or Gmail, and deliver the finished result in Slack or Microsoft Teams.

## Viktor uses Strava together with

- [Slack](https://viktor.com/integrations/slack)
- [Gmail](https://viktor.com/integrations/gmail)
- [Google Sheets](https://viktor.com/integrations/google-sheets)
- [HubSpot](https://viktor.com/integrations/hubspot)
- [Notion](https://viktor.com/integrations/notion)
- [Salesforce](https://viktor.com/integrations/salesforce)

## More Productivity integrations

- [GitHub](https://viktor.com/integrations/github)
- [Asana](https://viktor.com/integrations/asana)
- [Basecamp](https://viktor.com/integrations/basecamp)
- [Monday.com](https://viktor.com/integrations/monday-com)
- [Jira](https://viktor.com/integrations/jira)
- [Linear](https://viktor.com/integrations/linear)
- [Miro](https://viktor.com/integrations/miro)
- [ServiceM8](https://viktor.com/integrations/servicem8)

## Get started

Viktor is free to start - up to $100 in credits, no credit card required. All 3,200+ integrations are included on every plan. Sign up at https://viktor.com or browse all integrations at https://viktor.com/integrations.
