Curious about our API? Connect with our developers to share ideas, knowledge, and feedback
Recently active
As title states - im curious if there is a server to server pattern available for the strava api? I am using only my own feed and will be including it on a blog site i run. Webhook patterns, oauth2, etc.. all fine and well but id like to eschew the need to regularly click through the login process.Any options here (did I miss a page of the docs?) or am i going to build a headless browser task that just chews 1.5s of lambda cpu every few hours/days to walk through the UI pattern and update my token/keys in a dynamo table?
I am in the process of integrating Strava into my application and have encountered an issue where manually added activities are successfully synced via the webhook, but GPS recorded activities are not syncing.
I try use api “strava://oauth/mobile/authorize” on iOS app but Strava can’t navigate back to my app.My deeplink is : “myapp://strava-login”, what should i put in setting Authorization Callback Domain on Strava.
When a GPS activity is sync’d from Withings app there is no “device_name” in the strava api response to GET Activity. I recorded a Cycle in withings app and then sync’d it to Strava - and inspected it via the API playground. What i noticed there was “device_name” in the get activity response… however when i download the GPX file i do see: <metadata> <link href="https://www.withings.com"> <text>Withings</text> </link> <time>2024-11-24T17:51:10+00:00</time> </metadata> <trk> <src>Withings</src> Why would “device_name” be missing in the api response?
Hello, I would like to know if it is possible to get time data but like every 15 second of the activity instead of each second ? Thanks in advance,Pierre
Dear Strava Developer Team, I hope this message finds you well.I am writing to seek your assistance regarding an issue we have encountered with the Avinox App. Our users occasionally experience failures when attempting to upload cycling track files (GPX) to Strava after authorization. We would greatly appreciate your technical support to help troubleshoot and resolve this problem.We have recently released the functionality for users to upload cycling track files (GPX) to Strava. However, we have observed that some users are facing issues with file uploads failing. Despite implementing a retry mechanism on the Avinox server to handle failed uploads, the issue persists even after multiple retries. Below is the API endpoint we are calling: https://developers.strava.com/docs/reference/#api-UploadsHere is the failure response we receive from the Strava server when the upload API is called: syncRidingDataToStrava uid: xxx recID: xxx check again strava uploadResult: &{ID:13839110104 IDStr
In the response to API get activity - it would be good to know if the GPX/FIT file was:uploaded via web interface uploaded via API itself uploaded via an integrationthis will allow other apps to distinguish activities the user has uploaded via the web interface from other sources.many thanks
Has strava implemented a well-known for oauth2?
Andrew Neal Hello all , I'm unable to get a list of my activities via the API, due (I think) to not having read_all scope. Using HTTPie http get "https://www.strava.com/api/v3/athlete/activities?access_token=&page=1&per_page=50" I get the following error "code": "missing", "field": "activity:read_permission", "resource": "AccessToken" After reading the permissions documentation, I requested read_all with the following.... https://www.strava.com/oauth/authorize?client_id=<client_id>&response_type=code&redirect_uri=https://localhost&scope=activity:write&state=mystate&approval_prompt=force@scope="read_all,activity:read_all,activity:write" But this doesn't seem to return the requested permissions, as seen in the URL returned.. https://localhost/?state=mystate&code=<snip-code>&scope=read,activity:write I’m able to upload activities, and display my basic athlete details, but cannot get activity details. I’ve
i'm trying to do some analysis, and i'm working with the raw activities.csv, but the field "Activity ID" do not match any of the raw activity files that come with the bulk download (e.g. 3517781504.fit.gz, this number 3517781504 doesn't match any id in the .csv) . this make matching impossible. how do you match raw .fit files to the activity ids??
I would like to be able to get the zones of an activity in the activity detail. If I retrieve 100 activities of an athlete and I want to know their heart rate zones, I have to make 1 request for each of the activities, so in total there are 101 requests, 1 for the 100 activities and 100 for each heart rate zone of each activity. Would it be possible to have an endpoint to get the activities in more detail (such as the zones of the activity) and thus optimize the number of calls?
Hello! Is there an API endpoint to get all the athletes that have connected the app?
Dear Strava Team, I will like to bring one issue to your kind notice. Earlier when we used to upload a .fit file to Strava, that .fit file use to get process and an activity gets added in Strava platform. However, since last few weeks this is not working. Just wanted to understand from you, that whether it’s an issue from your end, or is there any change in .fit file supported formate. Please let us know. Application Name: Frontier X Category: Mobile App Client ID: 100134
I’m curious what the normal lead time is for developer program applications. I filled out the form on October 13th and have not heard anything.Does everyone wait this long or might something be wrong with my submission?
Hello!I'm writing an application that requires storing information about new activities in realtime as they come in from athletes. I have been successful in getting the creation of new activities sent to my server through the web hook. New Activities do not include any metadata about the new activity, so I have to follow up with additional calls to fetch the data.I've explored the following 2 approaches but both have their problems:Fetch By Activity Id: the most straight forward, I could hit `/activities/{{ id }}` for every activity that comes from the web hook. This would be the most expensive against my daily rate limit, though.Fetch By Activity Date Range: in order to avoid hitting rate limits, I could hit `/athlete/activities` and run against a date range to fetch multiple activities at once. This is great cause it allows me to "batch" requests, although the `event_time` that comes back from the web hook does not accurately reflect the activity event time (this is es
I am trying to use the Strava API with the following code snippet: auth_url = "https://www.strava.com/oauth/token"activites_url = "https://www.strava.com/api/v3/athlete/activities" payload = { 'client_id': "137928", 'client_secret': xxx, 'refresh_token': xxx, 'grant_type': "refresh_token", "response_type": "code", 'f': 'json', "scope": "activity:read_all"} print("Requesting Token...\n")res = requests.post(auth_url, data=payload, verify=False)access_token = res.json()['access_token']print("Access Token = {}\n".format(access_token)) header = {'Authorization': 'Bearer ' + access_token}#param = {'per_page': 200, 'page': 1}my_dataset = requests.get(activites_url, headers=header).json() print(my_dataset[0]["name"]) However, I get the following response:{'message': 'Authorization Error', 'errors': [{'resource': 'AccessToken', 'field': 'activity:read_permission', 'code': 'missing'}]}: When trying to access via url, I have to authorize my contents, but afterwards the messa
What Strava subscription can be refunded, because no confirmation has appeared for me, hopefully I can refund Karen the money is not mine
I would like to request user extension in my strava app. How should I proceed?
Updated on Nov. 20 We wanted to provide some additional context around the changes to our API Agreement and the impact for our users and developers. We currently anticipate these changes will impact less than .1% of applications and proactively notified the majority of those affected last week. Enhanced Privacy and User ControlPrivacy and user control are at the forefront of our platform. As a result, we are committed to evolving our API practices as regulatory requirements and user expectations shift. This includes the decision to limit the ability of a user’s data to be displayed by third-party apps in ways the user may not expect. Specifically, we want to thoughtfully address situations where users connect to a third-party app and are unaware that their data is being surfaced not just for their own use and visibility, but also to other users (for example, in a public feed or heatmap). The latest API changes address this scenario and provide a more consistent framework for Strava us
After successful authorization, the next day the user can not send data to strava synchronizationFind out the reason for this is Token expirationEach time the Access Token expires, use the Refresh Token to send a request to Strava's authorization server.Now it is this step that fails, check the documentation parameter fields and values are the same. How to solve this issue.
I have written a javascript command with the help of Chat GPT3 (I am not a developer) but would love some community assistance here! I'm looking to import activity data from Strava into an Equals spreadsheet. Can someone help me understand what I need to do to fix this? Any support is very appreciated! Here's what I have: const equals = require("equals"); const axios = require("axios"); const STRAVA_ACCESS_TOKEN = equals.getSecret("strava_api_key"); const STRAVA_ATHLETE_ID = equals.getSecret("strava_athlete_id"); const TABLE_NAME = "Activities"; const postData = async () => { const resp = await axios({ method: "post", url: `https://www.strava.com/api/v3/athletes/${STRAVA_ATHLETE_ID}/activities`, headers: { Authorization: `Bearer ${STRAVA_ACCESS_TOKEN}` } }); return resp.data; }; const data = await postData(); equals.addHeaders(["Name", "Sport Type", "Elapsed Time", "Description", "Distance"]); for(const record of data) { equals.addRow(
Can I forfeit a KOM? On my ride today, I know without a doubt I didn't do the segment in 2 seconds with a speed of 108 mph on my MTB haha, and I'm chalking it up to a recording glitch. I don't want to take the KOM from the rightful KOM and wondering if there is a way I can forfeit the KOM. Thanks
My spot on the leader board isnt showing. Weird glitch. See pics. How do I fix it?
Hi,The JSON format I get out of the API when I extract multiple Activities is not following JSON standards as it seems. I am not an expert not a dev. But if I pretty print it and save the output, and load it for further analysis, it says the file format is not valid.I've tried to debut it and indeed I get “multiple JSON root elements”.Any idea? :)Thx for your help!
Hello,My App seems to be blocked since a few days. I always get a 403 error by CloudFront when trying to reach http://www.strava.com from my web host. I absolutely do not abuse daily requests limits. But I’m hosted on a shared hosting (OVH.com), that’s probably the reason the IP address was blocked. Is it possible to do something ? Thanksclient_id: 31111remote IP: 213.186.33.2
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.