Curious about our API? Connect with our developers to share ideas, knowledge, and feedback
Recently active
Hi there, we have created subscription as per details provided at https://developers.strava.com/docs/webhooks/. However, our callback url is behind an AWS WAF and hence notifications from Strava are getting blocked. Can you please provide a list of IPs to whitelist so that we can unblock Strava traffic?
I have been using Strava API to extract club data to collect data from 2024 from all members. Because the club was made in December 2023, I was originally got some data from 2023, which I excluded through ignoring the first 40 runs.Since then, when I run the application, without excluding the runs and the only if statements being to only include runs, the API extracts 207 runs, whereas I am expecting 218 plus those extra 40 runs that were originally included.Looking at each page, as only 200 results are allowed per page, the first page has 200 results, second page 7 and third page 0.Does anyone have any idea what may be causing the issue where the earliest runs are being excluded?
Hello,I requested a rate increase via email over a month ago and have not yet received a response. We now cannot serve our user base anymore and it affects our service. Our growth is still significant, and we strive to minimize the number of requests. In the past, I proposed a solution that would enable developers to easily and effectively reduce the number of requests. However, it is currently not implemented yet (see https://communityhub.strava.com/t5/developer-discussions/developer-webhook-events-api-for-new-workout-add-field-workout/td-p/6479).Best regardsJan
I'm attempting to upload an Activity to the /uploads endpoint. (from Java) I've used the Garmin SDK to generate a Fit stream, and attempting to post. (The OAuth2 workflow is working fine, I've acquired an access token). First, the error:{"message":"Bad Request","errors":[{"resource":"Upload","field":"data","code":"empty"}]}What I don't understand is that according to the API docs there is no "data" field.The code (using Jakarta HTTP Client) InputStream fitStream = buildFitStream(user, save); try (FormDataMultiPart form = new FormDataMultiPart(); MultiPart entity = form.field("name", "Name") .field("description", "Description") .field("trainer", "true") .field("externalId", metaData.workoutID()) .field("data_type", "fit") .bodyPart(new StreamDataBodyPart("file", fitStream, "row.fit"))) { return request.post(Entity.entity(entity, entity.getMediaTy
how can i add the Strava Api to an Springboot web application?
If we look at the distance of each split, the splits are not exactly at 1 km mark.would like to know the difficulty (in terms of both hardware or technical related) in dividing the splits by exactly 1km each.
A little bit of a programming noob here, so forgive my ignorance!I am trying to pull down my strava activities through a get request in python. I have gone ahead and authorized the API etc. with my app. The first time that i set up the authorization, I believe I gave a read only scope (rather than the read_all permissions needed for the type of data that I want). I went ahead re-authorizing, this time careful to include read_all in the URL- but I'm still having issues. payload = { 'client_id': client_id, 'client_secret': client_secret, 'refresh_token': refresh_token, 'grant_type': "refresh_token", 'f': 'json' } res = requests.post(auth_url, data=payload, verify=False) print("On a run to get the token... ") auth_token_app = res.json()['access_token'] print('Token is:') print(auth_token_app) I'm able to get an access token with the above code, and have tested this out with both the original refresh token I had stored down and the new one, which I
What does average_grade_adjusted_speed means and how it is calculated?
How can I add an app to StravaApps?https://www.strava.com/appsI developed this Power Wind Pro an app for Garmin compatible with strava that estimates power with wind, speed, cadence, grade, temperature, and pressure calculations.https://sites.google.com/view/powerbikepro/home
Hi Team,Am using {{baseUrl}}/clubs/:id/members?page=<integer>&per_page=30 to fetch the members of a club. But in the response am getting just initial for the last name. Is it possible to fetch the full firstName and lastName of the members of a club.
Explore the core functionalities necessary for building a fitness mobile app akin to Strava, focusing on key features vital for user engagement, activity tracking, and social interaction.
We are planning for the implementation of the web hook subscription.A few questions pop up:1. in the https://www.strava.com/settings/api page: Do we need to change the authorization callback domain?2. Do our users to reconnect our app to Strava?3. Does a manual exsist that guides us from the current way of polling for results to the new webhook system? Our preference is that the users will not experience any negative issues only positive such as a quicker response after a training session. Any help is welcome.
The "Crop" utility for trimming activities with GPS data is really nice, but sadly there is no update event emitted to subscribers, so 3rd party apps are not aware of the update and thus become out of sync on the activity details.This is more of a question to the Strava developers; would you consider adding such an update event to the otherwise great cropping tool?Tagging @Elliott11 hoping he might be willing to pass this on to the appropriate recipient 🙂
I have spent way too many hours trying to determine if I can use a Bearer Token to retrieve my own data. I'm know that I need to have the activity:read or activity:read_all permission to get that data. However, I have not found any way either grant that permission to my account.Is my only choice to implement the full Oauth authorization workflow and then keep track of the return tokens?Thanks-marc
Dear community,a few months ago i started with running and am using my iphone (14) with strava app to track my effort.Some trainings, my wife runs directly next to me and she uses her Apple Watch SE to track her data. We are wondering, why the strava app of my iPhone tracks more distance than her Watch.Yesterday i did a training session with 8,45 km distance but her watch tracked just 8,09 km. We started together and were running next to each other all the time. The complete training session was outdoor, with good gps connection.Did anybody else also faces this issue and can help, which device could be correct? 🙂Thanks for your help.
I'm attempting to upload a gpx file to the uploads API, but keep running into errors. I am doing this with javascript/nodejs. Unfortunately due to the deprecation of the request-json library, the strava api npm library has broken, so I'm trying to implement this with node-fetch. The code I'm using is:const content = fs.createReadStream(__dirname + '/tmp/route.gpx'); const fileForm = new FormData(); fileForm.append('file', content, { "Content-Type": "multipart/form-data", "filename": "route.gpx" }); const postBody = { file: fileForm, name: title, description, data_Type: "gpx", sport_type: sportType, external_id: externalId }; const postResponse = await fetch('https://www.strava.com/api/v3/uploads', { method: 'post', body: postBody, headers: { 'Content-Type': 'application/json', &n
I noticed a 44-minute activity recorded on Strava shows up as a 3-hour activity on my iPhone's fitness app. I suspect it might be due to the Strava API sending out an incorrect "end time." I noticed that the fitness app displays the recording time, both the start and end. It shows the end time of the activity as the time when the activity was "finished" or "saved" on Strava, and not when Strava identifies as the end of the activity, correctly classifying the rest of time as wait or a period of inactivity on the app.It could also be implemented incorrectly on the Fitness team's side, but I thought it would be best to do it here as well.
Hello,I'm trying to integrate Strava with Salesforce, and my issue is that my auth. provider in SF is giving meCallback URLhttps://***********.com/services/authcallback/stravaand as you know strava is only allowing "This field must be just a domain, no slashes or paths". How can i solve this issue?
i tried it by creating a Webhook using a python script but it was unable to verify the callback url for the webhook.. I've gotten the webhook working through Zapier for the purpose of the app, but I'm worried that when I apply to have the app recognised by strava so more people can join it that they wont accept it if it doesn't use a coded in webhook..
I am interested in developing a fitness mobile application similar to Strava. I'm looking for guidance on the essential steps and technologies required to create such an app. Specifically, I would like to know about the key features, backend infrastructure, user interface design considerations, and any other important aspects to consider when developing a fitness tracking app. Additionally, insights into integrating GPS tracking, social networking features, and performance analytics would be appreciated.Thank you.
I've had a web based app working reliably against Strava APIs for many years - the app is using the Events API to get notifications about data changes which works really well.I've been considering doing a mobile app version but am interested to know what model people have used. Do you have each instance of the app polling for new data when the user accesses the app? I can imagine hitting rate limits is an issue with a decent number of users.Is it better to have my own hosted web app dealing with the Strava data sync side of things and my mobile app then just queries my own API to get the user's latest data?Is there another model I've not considered?Thanks!
As the title suggests, could the get athlete activites call GET /athlete/activities be extended to include the activity description ?At present, to the only way to obtain the description is via a second call to get the full details for an activity, which has an impact on the overall API calls made per day
Hi! I'm trying to update the descrption of a event using the create webhook. I'm getting response 200 with the updated fields every time, but for some reason the change is only sometimes visible in the activity it self.Any pointers or ideas how to fix?
Hi everyone,I'm a beginner programmer. I am writing my master's thesis on "The motivational impact of the Strava social network on users' sports results."I created an application in Django that processes tokens, gets athletes and the activities (+comments, kudos) of people who decided to take part in the study and saves them in a database (postgresql).I experienced many difficulties when creating this application, first of all... the authorization code thanks to which I obtain access_token and refresh_token has a very short validity(I think it's only a few dozen seconds).Initially, I enrolled people in the database by texting each one individually and exchanging tokens, but after some time I started receiving "Bad Request" errors and I couldn't get their access_tokens, so their activities.For this reason, I decided to deploy this application from the local version to the server - I chose Azure (it's free for students). Deployment caused me a lot of problems and finally, I can't cope wi
Hi all,I've developed some app and while I was in development I had localhost as callback url, everything worked. Today I've deployed app on VPS on digitalocean droplet, I've bought domain and I am managing it through cloudflare (so I have https). When I try to to login to strava from my app which is deployed on that domain, I am redirected where I need to be redirected but when I take code that I got in redirect and try to get access token, I get an error:{"message": "Bad Request","errors": [{"resource": "AuthorizationCode","field": "code","code": "invalid"}]} If I set localhost for callback and get code that way and then try to get access token from postman, it works.In my settings I have my domain configured as callback domain. Can someone help?
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.