Add Strava to your AI agent
Strava is a social fitness network and app designed for cyclists and runners.
- Things your agent can do in Strava
- 36
Things your AI can do in Strava
Your FormWise AI can handle any of these in Strava — on its own, without you needing to click a button.
Create an Activity
PopularCreates 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.
Get Activity
PopularRetrieves 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.
Get athlete stats
PopularReturns 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.
Validate credential
PopularValidates 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.
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.
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
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 read_all 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 read_all scope for private routes.
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.
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
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:read_all' 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: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.
Show 24 more things it can do
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.
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').
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.
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.
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.
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.
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.
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.
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 activity_id 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:read_all' 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: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.
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.
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.
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.
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 read_all 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 per_page 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 - 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.
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.
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.
Built for the way you actually work
No code, no engineers
Connect in a few clicks and start using your AI right away. If you can use the apps you already love, you can do this.
Sounds like you, not like a bot
Train your AI on your offer, your voice, and the way you actually talk to clients — it picks up where you leave off.
Plugs into the stack you already use
No need to rip out your CRM, your scheduler, or your email tool. Your AI works inside the apps running your business today.
Your data stays yours
Client conversations, lists, and credentials are scoped to your workspace. Nothing gets shared, sold, or used to train anyone else’s AI.
What you can do once Strava is connected
Onboard new clients without lifting a finger
When someone signs up, your AI greets them, sets up their next step in Strava, and keeps the momentum going — even at 2am.
Reply to leads in seconds, not days
Your AI watches Strava for new inquiries, answers questions in your voice, and books the call before they cool off.
Get your weekends back
Hand off the repetitive Strava work — follow-ups, reminders, updates, simple admin — and stop being the bottleneck in your own business.
How to connect Strava to your agent
- 1
Start using FormWise for free
Sign up in under a minute.
- 2
Find Strava in your connected apps
Inside FormWise, go to Settings → Connected Services and look for Strava.
- 3
Hit "Connect"
Click "Connect Strava" and log in like you normally would. We only ask for the permissions your AI actually needs.
- 4
Tell your AI what to do in Strava
Build a quick AI Agent (it's like writing instructions, not code), and pick the Strava actions you want your AI to handle.
- 5
Watch it run
Send it a real-world task and watch your AI take care of Strava for you. Tweak the wording until it feels just right.
Powered by the AI you already trust
Your Strava workflow runs on the same world-class AI used by ChatGPT, Claude, and Gemini. We handle the technical part — you just tell your AI what to do, in plain English.
- OpenAI
- Anthropic Claude
- Google Gemini
Questions other Strava users had before signing up
Do I need to know how to code?
Not even a little. If you can use Strava today, you can set this up. You'll connect Strava, tell your AI what it should help with, and you're live. The whole thing is built for coaches, course creators, agencies, and operators — not engineers.
Will my clients know they're talking to an AI?
Only if you want them to. Your FormWise AI is trained on your voice, your offer, and the way you actually communicate — so it sounds like a thoughtful team member, not a clunky chatbot. Most people can't tell.
Can I make it sound like me?
Yes. You can give your AI examples of how you write, the questions you usually ask new clients, the way you handle objections, and the language you use about your offer. The more you give it, the more it sounds like you wrote it.
What if I want to take over a conversation?
You're always in control. You can step in at any point, take over from your AI, or stop it from sending messages until you've reviewed them. Think of it as a teammate, not a replacement.
Is my client data safe?
Yes. Your Strava login and client information stay scoped to your workspace. We don't sell it, we don't share it, and we don't use your data to train anyone else's AI. You can disconnect Strava or delete everything any time.
What happens when Strava updates their app?
We handle it. When Strava adds new features or changes how something works, we update the integration in the background. You don't have to do anything — your AI just keeps working.
How fast can I actually get this running?
Most people are up and running the same day they sign up. Connecting Strava takes a few minutes. Teaching your AI to handle the work the way you'd want it done is the part worth slowing down for.
What is FormWise?
FormWise is the AI agent builder for coaches, course creators, and agencies. You connect the apps you already use — like Strava — train your AI on your offer and voice, and let it handle the work you've been doing manually: onboarding, follow-ups, support, admin. No code, no developers, no engineering team required.
Can I sell AI agents to my clients?
Yes. A lot of FormWise users build AI assistants and sell them as part of their offer — done-for-you AI setups, white-label assistants for client businesses, custom GPTs trained on a client's brand. You can charge a setup fee, a monthly retainer, or both.
Can I embed my AI on my website or in my course?
Yes. Every AI you build in FormWise can be embedded on your site, dropped into your course platform, or shared as a standalone link. Your clients and students just open it like any other web page — no app to download, no login hoops.
Do I need to know anything about AI to use this?
No. If you can describe what you want your AI to do in plain English — "greet new clients, ask these 3 questions, book them a call" — FormWise can build it. We handle the models, the prompts, the connections. You handle the part you already know: what your business actually needs.
About Strava on FormWise
Strava is a social fitness network and app designed for cyclists and runners.
Connect Strava once and your FormWise AI gets 36 things it can do inside it. That means your AI can handle the Strava work in your business — the messages, the updates, the follow-ups, the admin — the way you would, just faster and around the clock.
You don't need to know how any of it works under the hood. We take care of keeping the connection alive, retrying if something fails, and making sure your data only ever moves where you tell it to.
New to Strava? Take a look at strava.com.
More fitness integrations
Mindbody
Mindbody provides scheduling, client management, commerce, and business operations software for fitness, wellness, and beauty businesses.
Exist
Exist is a personal analytics app that combines data from various services to help users understand and improve their lives.
AllTrails MCP
Find hiking, biking, and running trails with reviews, photos, and route details from AllTrails.
Stop doing the Strava work yourself
Hand it off to an AI assistant that sounds like you, works around the clock, and never forgets a follow-up. Free to start.
