[IMPLEMENTED] Push workout to Wahoo

It seems the API doesn’t support uploading planned workouts (yet?) only downloading of completed activities.

Also going through the terms of service:

You may not collect, use, store, aggregate or transfer any Wahoo Data in any manner except as expressly permitted by us for the use of your Developer Application, and you agree that at any time Wahoo may request that you remove any collected or stored Wahoo Data and that you will do so promptly, and in all events within forty-eight (48) hours after receiving the request.

So it might be best to continue getting activities from Wahoo via Dropbox.

https://www.wahoofitness.com/wahoo-api-agreement

Hmm, ok. That’s a shame.

Could you explain or link me to the Dropbox method?

To be clear I’m trying to figure out a way of getting workouts from intervals.icu onto my Wahoo without plugging it in to my computer. Cheers! Appreciate all your work!

edit: I have had a quick read around the forum and I can see it would be beneficial to some extent to set up a workflow that gets my activity directly from Wahoo into intervals.icu and bypass Strava. That way, if down the track I am not on Strava anymore, or something happens with the intervals.icu <-> Strava integration, my activities will remain.

Tx. Wahoo has support for uploading activity files to Dropbox and Intervals.icu can download them from Dropbox automatically. Unfortunately this won’t help you get planned workouts onto your device.

I have had another look at the API docs and it might be possible to upload planned workouts as .fit files. I will look at this as soon as I get the chance.

3 Likes

Thanks mate.

This looks promising: Wahoo Fitness API Reference

Create a Workout

Requires the workouts_write scope
Creates a workout for the authenticated user

2 Likes

It doesn’t push but to copy a workout(s) across is very simple. My setup is with a Mac , I can walk you through my MO if you wish.

1 Like

Anyone had much joy with the Wahoo API?

I just got my request approved so can start playing.

I’ve got through the authentication steps and pulled user and workout data through the GET ‘/v1/user’ and ‘/v1/workouts’ endpoints but not tried to create a new workout yet.

Are we sure the workouts_read scope will create a planned workout and not just upload a workout?

N.B. The only options I see from the wahoo mobile app to add planned workouts are ‘Training Peaks’, ‘TrainerRoad’ and ‘Today’s plan’.

I am going to look at uploading workouts soon. Intervals.icu has also been approved. It looks like you can upload workouts in .fit files so I will need to implement that first.

But please play and let me know if you can get something to work!

2 Likes

Had another little go,

file = {"UploadTest":open('Morning_Ride.fit','rb')}
param1 = {
    'workout[name]': "UploadTest",
    'workout[workout_type_id]': '15',
    'workout[starts]':'2021-05-05T09:00:00.000Z',
    'workout[minutes]':'65',
    'workout[workout_token]': '999999999' 
    }
test = requests.post('https://api.wahooligan.com/v1/workouts', headers = {'Authorization': f'bearer {x1["access_token"]}'}, files=file, params = param1)
test.status_code

Runs okay and does create a workout but doesn’t seem to upload the fit file, not sure if I am doing it right in Python. Might try again in R which I’m more comfortable in.

I really hope I’m wrong but I am also increasingly convinced that this uploading workouts is just to upload activities and not structured workouts.

1 Like

I really hope I’m wrong but I am also increasingly convinced that this uploading workouts is just to upload activities and not structured workouts.

The naming scheme (workout vs. plan) suggests this. A workout has a plan_id field which suggests that a workout is the actual activity (a bike ride) while a plan is the structured training plan you’re trying to upload. That naming is confusing - a Wahoo workout is an Activity in Intervals and a Wahoo plan is an Intervals Workout.

I don’t think we will see structured workout uploads soon :frowning:

3 Likes

Everyday I hope to see wahoo on the connector panel of the settings page. @david Do you have an idea of when it will be available ?

Thanks,

Maxime

There is some doubt that their API allows uploading of planned workouts. I need to find out if it does. As for downloading you are better off using their Dropbox support with the Intervals.icu download from Dropbox option. The Wahoo terms of service for the API has some unpleasant conditions.

1 Like

Using dropbox integration for my wahoo activities, the L/R power balance are switched…
I use Assioma Duo as powermeter.
https://intervals.icu/activities/i1131943
I’m injured on right leg so the 46 is well on right leg.

image
VS

I have swapped L/R around for fit files from Wahoo head units. I hope that is always the correct thing to do! You can fix existing activities by choosing “Re-process original file” from the “Actions menu” (similar in bulk on the activity list page).

I fixed the one you linked to check the fix was working.

Thank you if one day i see that left right is again swapped i will tell you.

They might have a deal with trainingpeaks and can’t open everything unfortunately :S

Hi,
If you are building workout with intervals.icu and sending it to Wahoo, do you have the power zone leds visible in the workout screen?
I think that previously when I tested structured workouts with Wahoo and TrainingPeaks, leds were used to show the current power vs target. Now when I excecute structured workouts, Wahoos leds are off. So is this something which only works with Trainingpeaks or is there some issue with my Wahoo unit?

How are you getting the workouts to your Wahoo? I only have a Garmin so I don’t know how well (or otherwise) things work on Wahoo.

David you can upload a workout to wahoo connecting your wahoo to your pc and dropping the file in the plan folder of you wahoo device, after that you need to go to the planned workout and tell the device to synchronize, and it will appear on the list. If you dont sychn, it will not appers. The issue droping the plans, is that I need to make some transformation in the file. One example of the files that I create is this one. @david , if at anytime you need a tester, or additional examples just let me know.

=HEADER=

NAME=Sweet spot 30 20 2

Provider: Ignacio Sierra

DESCRIPTION=Sweet Spot 30 20 2

=STREAM=

=INTERVAL=
INTERVAL_NAME=Calentamiento

10 Minutos

PERCENT_FTP_LO=50
PERCENT_FTP_HI=75
MESG_DURATION_SEC>=600?EXIT

=INTERVAL=
INTERVAL_NAME= sweet
PERCENT_FTP_LO=88
PERCENT_FTP_HI=93
MESG_DURATION_SEC>=1800?EXIT

=INTERVAL=
INTERVAL_NAME= descanso
PERCENT_FTP_LO=50
PERCENT_FTP_HI=75
MESG_DURATION_SEC>=120?EXIT

=INTERVAL=
INTERVAL_NAME= sweet
PERCENT_FTP_LO=88
PERCENT_FTP_HI=93
MESG_DURATION_SEC>=1200?EXIT

=INTERVAL=
INTERVAL_NAME= descanso
PERCENT_FTP_LO=50
PERCENT_FTP_HI=75
MESG_DURATION_SEC>=120?EXIT

=INTERVAL=
INTERVAL_NAME= sweet
PERCENT_FTP_LO=88
PERCENT_FTP_HI=93
MESG_DURATION_SEC>=120?EXIT

=INTERVAL=
INTERVAL_NAME= descanso
PERCENT_FTP_LO=50
PERCENT_FTP_HI=75
MESG_DURATION_SEC>=600?EXIT

@david I’m currently copying manually *.mrc -file to my Wahoo via USB.
I was just generally asking if anyone else was experiencing similar behaviour with these ‘manually’ uploaded workouts vs Trainingpeaks regarding the led behaviour.

I think Wahoo are probably using the TrainingPeaks “workout of the day” API to get workouts. So they might have coded extra things not available via mrc file import.