Even if sometimes frustrating, keep shooting your questions iso wasting an entire day ![]()
You will always get help here.
But please avoid AI hallucinations
, especially when starting with ‘I even asked AI…’
Get activity map data get /api/v1/activity/{id}/map
this gives me GPS points for my outdoor rides, works ok. but for Zwift rides the response is empty.
The map is visible in intervavals.icu activity page
and the activity is imported in intervals directly from Zwift (and also Strava)
Am I missing something? maybe the GPS track comes into intervals only from Strava and not Zwift so per Strava policy is not forwarded via APIs? ![]()
Post hidden. I was getting an empy json/array, I don’t know why but now it works… ![]()
Hello,
I am currently working on improving the integration between Hevy (a workout logging app) and Intervals.icu.
I have encountered a bug related to the endpoint: api/v1/athlete/{athlete_id}/activities/manual.
When including 'kg_lifted' in the payload, the created activity incorrectly shows "kg_lifted": Null.
For example:
-
Endpoint:
https://intervals.icu/api/v1/athlete/{my_athlete_id}/activities/manual -
Payload:
{
'external_id': 'some_external_id',
"type" : "WeightTraining",
"name" : "myName",
"description" : "myDescription",
"start_date_local" : "2026-03-10T12:00:00",
'kg_lifted': 1234,
}
- Response:
{
"id" : "some_id",
"icu_athlete_id" : "my_athlete_id",
"start_date_local" : "2026-03-10T12:00:00",
"type" : "WeightTraining",
"name" : "myName",
"description" : "myDescription",
"start_date" : "2026-03-10T11:12:00Z",
"created" : "2026-03-10T17:56:27.719+00:00",
"icu_sync_date" : "2026-03-10T17:56:27.728+00:00",
"analyzed" : "2026-03-10T17:56:27.728+00:00",
"source" : "MANUAL",
...
"kg_lifted" : null,
}
- Expected result:
"kg_lifted" : 1234, # not null
I did not try but other parameters might be impacted.
Thank you for your support
Corentvn
A post was merged into an existing topic: Workout builder
Is there a webhook type for athlete profile/settings changes (FTP, zones, LTHR, threshold pace etc), I could not find it?
If there isn’t, what is the best way to track these kinds of changes for users?
Hi @david,
I am trying to manually pair a completed activity with a planned workout via the API.
I’ve been looking at the Update Event documentation - PUT /api/v1/athlete/{id}/events/{eventId}, but I couldn’t find the paired_activity_id (or similar field) in the Response Body or the allowed Request Body schema in the Swagger UI.
Could you please clarify:
- Is it possible to update the pairing of an event through the
updateEventendpoint? - If so, what is the exact field name I should use in the JSON payload to link a specific Activity ID to a Workout Event?
I want to ensure that my integration can fix or establish the link between the execution and the plan when the automatic.
10U
We have just added SPORT_SETTINGS_UPDATED for this.
We have fixed this and will deploy the update on Tuesday AM (GMT+2).
Is this deployed yet? I dont see it in the docs.
Did something change since yesterday? I’m getting error code: 1010 on my tool that synchronises my fitbit data to intervals. Looking at what did get synchronized something changed somewhere yesterday.
Edit: found out curl rewrites your user agent if you don’t explicitely set it outside of the headers and cloudflare decided Monday was the day they didn’t like that anymore. Seems fixed now for me.
Is it possible to retrieve a list of my coached athletes through the API, or do I need to obtain each athlete’s keys individually and build my own list?
I would like to replicate the page that shows athlete activity uploads into a spreadsheet, even if it only includes the athlete name and the upload date/time.
You don’t need THEIR API KEY. You need to coach them (in intervals, they accept your coaching request), and all you need is your API_KEY, and you get all what you want.
With the endpoint https://intervals.icu/api/v1/athlete/0/athlete-summary.json you get all your athletes and their intervals-id.
Hi, I’m a Supporter and getting 403 Access denied when trying to create events via the API. I’m using Basic authentication with my API key and athlete ID (256080). The GET requests work but POST to /api/v1/athlete/256080/events returns 403. Any ideas?
You miss the i in your id.
Not all IDs start with an i. All the LLMs think they do though for some reason.
Yes, if you are one of the early users, then you have a Strava ID without the i.
But he missed the i, he’s not.
Feature request: type filter on /api/v1/athlete/{id}/power-hr-curve @david
Currently the endpoint returns a combined power-HR curve across all sport types or ride only. I am not 100% sure.
We need a type query parameter (matching the existing /power-curves endpoint convention, e.g. type=Ride, type=Run) to retrieve sport-specific curves.
Use case: Cycling and running have fundamentally different HR-at-watts profiles (cardiac drift, running economy, Stryd vs. power meter). Mixing them, if this is the case, produces a meaningless average curve. Apps building fitness trend analysis need to present Ride curves and Run curves independently.
Proposed addition to schema:
GET /api/v1/athlete/{id}/power-hr-curve?start=&end=&type=Ride|Run
Same response shape, filtered to activities of the given type. type optional — omit for all-sport (current behaviour preserved).
We have added that and also a filters parameter and will deploy on Sunday AM.
Was this already planned long time ago? Or did you just pushed that so quick ?!?
thanks anyway
The “get athlete power curves” and related endpoints already had the requested functionality so it was very quick to add. I don’t read forum posts unless I am in a position to implement/fix easy stuff immediately. Better than endless lists! ![]()


