I tried this:
marcosreno@MBAReno backend % curl -X POST \
“https://intervals.icu/api/v1/athlete/i611360/events/bulk?upsert=true” \
-u “API_KEY:$TOKEN” \
-H “Content-Type: application/json” \
-d '[
{
"category": "WORKOUT",
"start_date_local": "2026-08-17T00:00:00",
"type": "Run",
"name": "TEST 2x1km Pace Range V2",
"description": "- 10m 5:30-6:16/km Pace\\n\\n2x\\n- 1km 3:30-3:50/km Pace\\n- 2m 5:10-6:00/km Pace\\n\\n- 10m 5:30-6:16/km Pace",
"external_id": "limiar-2x1km-pace-002"
}
]’
[{“id”:128751902,“start_date_local”:“2026-08-17T00:00:00”,“icu_training_load”:null,“icu_atl”:null,“icu_ctl”:null,“type”:“Run”,“carbs_used”:null,“ss_p_max”:null,“ss_w_prime”:null,“ss_cp”:null,“calendar_id”:1,“uid”:“01263f45-93f2-42bf-bee2-872fdcede371”,“athlete_id”:“i611360”,“category”:“WORKOUT”,“end_date_local”:“2026-08-18T00:00:00”,“name”:“TEST 2x1km Pace Range V2”,“description”:“- 10m 5:30-6:16/km Pace\n\n2x\n- 1km 3:30-3:50/km Pace\n- 2m 5:10-6:00/km Pace\n\n- 10m 5:30-6:16/km Pace”,“indoor”:null,“color”:null,“moving_time”:1880,“icu_ftp”:null,“w_prime”:null,“p_max”:null,“atl_days”:null,“ctl_days”:null,“updated”:“2026-08-11T22:28:09.608+00:00”,“not_on_fitness_chart”:false,“show_as_note”:false,“show_on_ctl_line”:false,“for_week”:false,“target”:null,“joules”:null,“joules_above_ftp”:null,“workout_doc”:{“steps”:[{“pace”:{“end”:376,“start”:330,“units”:“secs/km”},“duration”:600},{“reps”:2,“text”:“2x”,“steps”:[{“pace”:{“end”:230,“start”:210,“units”:“secs/km”},“distance”:1000,“duration”:220},{“pace”:{“end”:360,“start”:310,“units”:“secs/km”},“duration”:120}],“distance”:2720.430107526882,“duration”:680},{“pace”:{“end”:376,“start”:330,“units”:“secs/km”},“duration”:600}],“locales”:[],“options”:{},“distance”:6134.356606559764,“duration”:1880,“strain_score”:null,“average_watts”:0,“normalized_power”:0,“variability_index”:null,“polarization_index”:null},“push_errors”:null,“athlete_cannot_edit”:false,“hide_from_athlete”:false,“structure_read_only”:false,“created_by_id”:“i611360”,“shared_event_id”:null,“entered”:false,“carbs_per_hour”:null,“sub_type”:null,“distance”:6134.3564,“tags”:null,“attachments”:null,“oauth_client_id”:null,“external_id”:“limiar-2x1km-pace-002”,“load_target”:null,“time_target”:null,“distance_target”:null,“training_availability”:“NORMAL”,“max_training_time”:null,“can_train_sports”:null,“plan_athlete_id”:null,“plan_folder_id”:null,“plan_workout_id”:null,“plan_applied”:null,“icu_intensity”:null,“strain_score”:null,“plan_name”:null}]% marcosreno@MBAReno backend % curl \
“https://intervals.icu/api/v1/athlete/i611360/events/128751902” \
-u “API_KEY:$TOKEN”
{“id”:128751902,“start_date_local”:“2026-08-17T00:00:00”,“icu_training_load”:null,“icu_atl”:null,“icu_ctl”:null,“type”:“Run”,“carbs_used”:null,“ss_p_max”:null,“ss_w_prime”:null,“ss_cp”:null,“calendar_id”:1,“uid”:“01263f45-93f2-42bf-bee2-872fdcede371”,“athlete_id”:“i611360”,“category”:“WORKOUT”,“end_date_local”:“2026-08-18T00:00:00”,“name”:“TEST 2x1km Pace Range V2”,“description”:“- 10m 5:30-6:16/km Pace\n\n2x\n- 1km 3:30-3:50/km Pace\n- 2m 5:10-6:00/km Pace\n\n- 10m 5:30-6:16/km Pace”,“indoor”:null,“color”:null,“moving_time”:1880,“icu_ftp”:null,“w_prime”:null,“p_max”:null,“atl_days”:null,“ctl_days”:null,“updated”:“2026-08-11T22:28:09.608+00:00”,“not_on_fitness_chart”:false,“show_as_note”:false,“show_on_ctl_line”:false,“for_week”:false,“target”:null,“joules”:null,“joules_above_ftp”:null,“workout_doc”:{“steps”:[{“pace”:{“end”:376,“start”:330,“units”:“secs/km”},“duration”:600},{“reps”:2,“text”:“2x”,“steps”:[{“pace”:{“end”:230,“start”:210,“units”:“secs/km”},“distance”:1000,“duration”:220},{“pace”:{“end”:360,“start”:310,“units”:“secs/km”},“duration”:120}],“distance”:2720.430107526882,“duration”:680},{“pace”:{“end”:376,“start”:330,“units”:“secs/km”},“duration”:600}],“locales”:[],“options”:{},“distance”:6134.356606559764,“duration”:1880,“strain_score”:null,“average_watts”:0,“normalized_power”:0,“variability_index”:null,“polarization_index”:null},“push_errors”:null,“athlete_cannot_edit”:false,“hide_from_athlete”:false,“structure_read_only”:false,“created_by_id”:“i611360”,“shared_event_id”:null,“entered”:false,“carbs_per_hour”:null,“sub_type”:null,“distance”:6134.3564,“tags”:null,“attachments”:null,“oauth_client_id”:null,“external_id”:“limiar-2x1km-pace-002”,“load_target”:null,“time_target”:null,“distance_target”:null,“training_availability”:“NORMAL”,“max_training_time”:null,“can_train_sports”:null,“plan_athlete_id”:null,“plan_folder_id”:null,“plan_workout_id”:null,“plan_applied”:null,“icu_intensity”:null,“strain_score”:null,“plan_name”:null}% marcosreno@MBAReno backend %
The workout_doc looks correct. However, when I open the workout on my Garmin, I only see the duration. The pace range is missing. Is the pace field in workout_doc supposed to be converted to a pace target when the workout is pushed to Garmin? The same problem when upload a FIT file.