Curious about our API? Connect with our developers to share ideas, knowledge, and feedback
Recently active
It would be great to be able to add a webhook subscription directly within https://www.strava.com/settings/apiRight now the overhead of having to implement the subscription programmatically from the client means we need a one-off Strava implementation that doesn't look like any other product that offers this kind of webhook service. This is harder to support over time, and has meant we have had to rely on polling the activity endpoints more than we want to.Thanks for listening!
Hey 🙂 We have been using Strava API since 2017 and organize hundreds of local sports and eco challenges, very often with prizes, e.g. from local authorities. Credibility of the data and fraud detection is though very important. We've experienced cases when users upload manually to Strava activities which were well prepared in widely available tools - those activities have a reliable .gpx track, data about source (all sports devices) and looks like real activities. Quite often they download .gpx tracks from other Strava users and edit them (e.g. adding timestamps in any .gpx editor or editing device source) To make our events we need to somehow spot those fraudulent activities. Do you have any idea how we can recognize them? Huge thanks for help in advance! Have an active day! 🙂
Hi, I am not sure if this is the right place to ask this but I will just go ahead: I am trying to set up a webhook to strava and followed this guide. I think I made a mistake when sending the request to the push_subscriptions endpoint and did not save the response from it. Now I would like to delete the subscription as described in this article. Because I did not save the response from the first request I do not know my subscription ID. To retrieve this ID I tried to make a GET request to the push_subscriptions endpoint and view the subscription, as described in the article aswell. This however does not work and returns this errror: The request I sent to receive this errror was the following (in Python): When trying to just subscribe again, I just get the error that a subscription already exists, so I do want to delete it or at least be able to view it. I would really appreciate some help with this issue, and sorry if there is a better place to ask these kind of questions.
Hi everyone! In the getActivity api response there is only start_date and no end_date. Currently I need to know the time when the most users finish their activity. i want to know exactly total time from start to end activity (moving time, elapsed_time, pause activity time ) Thanks everyone!
Good morning,I have a question about activity upload via api.I have a TCX file built manually, thus not coming from a device like Garmin. This file contains elevation data (<AltitudeMeters>...</AltitudeMeters>).If I try to upload this activity via api (https://www.strava.com/api/v3/uploads), the activity appears among my activities (https://www.strava.com/athlete/training), but shows an elevation of 0.Using the web interface (+ >> Upload activity >> Choose file):1) before clicking Save & View, the activity appears among my activities, without elevation2) after clicking Save & View, the elevation appears and is correct.It seems like the api call stops at step 1, and the elevation is missing. Is it possible to obtain the same result (steps 1 and 2) using apis?
Strava calculates the nearest possible location of where an activity was performed. For example, if you ride your bike in a local state park, Strava is able to retrieve that information and add it next to the time and date of your activity. Is it possible to expose this information as part of the API response for an activity?The use case I have is to get the location data and stick it to the title as part of post process automation to indicate where an activity was performed.
Hey, Any Strava developers reading this forum? I've sent a request (to developers-at-strava.com) to increase the rate limit for my app (Client ID: 68556, Ticket #5526) more than two weeks ago but got no response (same on Twitter). I have ~600 users and a rate limit of 1000 requests per day is killing me (and creates a lot of user complaints).If anyone from Strava is reading this, please reach out and help me resolve the ticket. Thanks!
Hello Strava team, I hope this message finds you well. My name is Marcos and I have recently been experiencing difficulties while using the Strava API, specifically with the OAuth authentication process. The code I have been using up until now is as follows: curl -X POST https://www.strava.com/api/v3/oauth/token -d client_id=ReplaceWithClientID -d client_secret=ReplaceWithClientSecret -d grant_type=refresh_token -d refresh_token=ReplaceWithRefreshToken Unfortunately, it seems that this code is no longer working and I am having trouble obtaining the code parameter required for some requests. Furthermore, after checking the documentation page, I noticed that the information does not appear to be up-to-date. I would like to request your assistance in resolving this issue and, if possible, ask for an update to the documentation. This would be extremely helpful for me and other developers who use the Strava API. Thank you in advance for your attention and I eagerly await your guidance. Best
I would like to prevent unwanted users to auth to my application.1. Is there a way I could POST some headers/data during authorization to "https://www.strava.com/oauth/authorize" like client_id?2. The use case is that I don't want users to share auth link like: "https://www.strava.com/oauth/authorize?client_id=99999&redirect_uri=https://mysecretwebpage.org&response_type=code&scope=activity:read_all"3. I just want the users to be possible to auth to my app when clicking a link from my webpage. This would act as a protection from copy&pasting the link.Thanks.
Hi, I have an issue with Strava API. I want to get activity streams and especially cadence, watts and temp for 1 activity.Problem: with my requests below, I can only see 'temp' and not cadence and watts.header = {'Authorization': 'Bearer ' + access_token}param = {'keys': ['cadence', 'watts', 'temp'], 'key_by_type': True}time_list = requests.get(url, headers=header, params=param).json()Does it mean we are able to do only 1 key per request ? Meaning I should have to do 3 requests and not only one ? Thanks
I want to delete the primary photo associated with a Strava activity so that I can replace it with an updated version of it.I do not see any DELETE endpoints in the Strava API docs at the moment.How can I achieve this using the available Strava endpoints?
Hi there, Following the docs I've gotten to the point where I can't make any requests with the `@auth-spa-js` Auth0 client, since it default attaches `openid` to the beginning of the scope on any request. Thus, when trying to login with this client, I get a `scope invalid` message, since the scope is `openid+read` instead of `read`. It seems they aren't planning on changing this, so is there any way for openid to be an expected scope? (source of them not planning to change it: https://github.com/auth0/auth0-spa-js/issues/433)
Can the Webhook Events API be extended to include changes to other data? Currently we can only recieve a webhook for these 3 events: Title Type Privacy However other changes, like media changes (photos or videos) don't have a notification. And I'm seeing these additions after the initial activity creation quite often. The Strava mobile Application event has a separate "Add Media" context menu item but these adds are silent from the Events API perspective.
Hello, GET `activity` from the API includes `segment_efforts` array containing incorrect id values. They are all missing at least the last two digits. I just started using this recently, and it seems like this is something people would have noticed already. Is it a new change? example: url of segment effort on Strava.com: https://www.strava.com/activities/{activityId}/segments/XXXXXXXXXXXXXXXX336 what gets returned in API response: {..., segment_efforts: [{id: XXXXXXXXXXXXXXXX300, ... }], ... } note the last three digits in the URL: "336", and in the API response: "300" This is for an identical segment effort, and can be repeated for every segment effort I tested Calling API for GET segment_effort with id XXXXXXXXXXXXXXXX300 returns 404! --- also calling GET segment_effort API with the correct id returns a result with the incorrect id. --- DetailedSegmentEffort id says type is `long` https://developers.strava.com/docs/reference/#api-models-DetailedSegmentEffort Maybe this type do
I would like to develop only for myself (not for other users). Is there the concept of personal access tokens like many other APIs have for this purpose so I don't have to build the oauth flow just to get my own data? Examples of companies having this are Airtable and Github.
Hello,I'm implementing a rate-limiter library in my code to make sure I don't overpass the limits.Are the 0auth calls (made to https://www.strava.com/api/v3/oauth/token) also included in the rate limits? Thank youMarc
Well, the title says it all, folks... It seems like this is gonna be a tough one to implement in Google App Scripts. There's not much out there in general for setting up these Strava webhooks, but it's even worse when trying to find ANYTHING on setting up in Google App Script. It seems to me, my best bet may be to migrate my code over to React/NodeJS/Java and go from there, given I can use ngrok and other libraries a lot more freely (and there's more information out there for the latter). Does anyone have any thoughts? Are you aware of ways to accomplish this in Google App Scripts, or do you think my best bet would be to migrate over to another, more widely used (and compatible) platform? I currently use polling to acquire my authenticated athlete's activities, but there's huge limitations to this given the data pulling limitations by Strava's API. Here are some of the resources I've been looking at: - https://medium.com/@eric.l.m.thomas/setting-up-strava-webhooks-e8b825329
Currently the create event webhook contains a field event_time. Adding another field with the start time of the workout would make it possible to check whether the application has received the workout from another source (e. g. garmin) already. That would allow developers to further save api calls to get the activity.
I’m using the Strava api’s and having the free subscription, I need to calculate the burned calories of the activity/sport I’m doing,But I didn’t find any api to fetch all the sports/activities, do anyone suggest any api where I can give the activity name/ sport name like running, swimming, HIIT etc with the time duration and in response it can provide the burned calories in the time period.
Dear Moderators and Forum Readers, We are using the Strava API since years in our product. We are utilizing the detailed activity streams as well. In the API reference the structure of the response of activity streams are described in good detail, however there is nothing said on how the data shall be interpreted (e.g. an entry in the ,,velocity_smooth'' is 1.0m/s what does it mean, is it the actual speed on a given time or an average of a longer time period?...). We see a lot of various ,,formats'' for these streams: for some users and activities, there is a data record for each second, in some cases, we have records for every few seconds. We can see also sparse formats, with only a few record for the entire activity, or even having data records for every second, except a few, large periods without any data record. This makes implementing a general solution for interpreting the data really hard. My question is, that is there any good and detailed description about how to interpret the
Hello, we are developing a Digital Social Platform dedicated to Sports Events. We would like that our users could import their Strava friends, just like Strava does with Facebook. However, it seems that Strava API doesn't support this feature. Is that true? Thanks in advance
Hi,I'm looking to use the Strava API to collect a large dataset on individuals who run. Is there a way I can list (or is there some public database) of athletes whose profiles are set to public? I'd then simply call "get athlete stats". I'd like to query through this list of individuals to create a dataset.
Hello everyone My name is Ionut, I'm a Qlik Developer, and I want to create an app with my data in this reporting tool. I created my connection, because I have a dedicate connector. I can see one table with my data like this But when I will try to access another table, I can't, and I need my gear ID, or club ID, or Segment ID etc, to access other tables and so on Can you help me to access my data with this connector, I really want to create an interactive app with my activity, I'm waiting your response Thank you 😊
Hello everyone!I created an application that creates 3D animations based on Strava activity. I wanted to effectively show those activities that take place in mountainous terrain, e.g. mountain biliking or hiking. Created animations can be shared on social media. Sample video: https://youtube.com/shorts/RnOG_VV2rb0?feature=shareI would love to have your feedback on the application so I can make it even better for everyone. 🙏Known issues: - share button doesn’t work on some platforms (Firefox, chrome on macOS; It should work on mobile devices)- moving speed is dependent on screen refresh rate- activity visualizations from flat terrain are not attractive- visualizations of activity from outside Europe are generated significantly longer (my way of obtaining altitudes is optimized for Europe, it will be improved soon for the USA)- zoom level should be adjusted according to activity sizeMore information here: https://paintmove.com
Hello I would like to ask how to refresh the API access token which I can see on the settings/api strava web page In the documentation only shows how to refresh USER access tokens , thank you
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.