名称: intervals-icu-api
描述: Intervals.icu API 完整指南,涵盖访问和管理训练数据。适用于处理 Intervals.icu 运动员档案、活动、训练课、日历事件、健康数据和训练计划。内容包括认证、获取包含组合数据字段的活动、管理包含计划训练课的日历事件、以及创建/更新训练数据。提供所有主要操作的 curl 示例。
与 Intervals.icu API 交互的全面指南,用于管理运动员训练数据、活动、训练课和日历事件。
从 intervals.icu 设置页面 获取您的运动员 ID 和 API 密钥。
# 使用 API 密钥请求头
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID
# 使用 Bearer token
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID
基础 URL: https://intervals.icu/api/v1
日期格式: ISO-8601 (例如: 2024-01-15 或 2024-01-15T10:30:00)
您在 Intervals.icu 中的唯一标识符。在所有 API 端点中作为 {id} 路径参数使用。
/athlete/{id}/activities 获取。/athlete/{id}/events 获取。活动和事件可以返回不同的字段。使用 fields 查询参数来包含或排除特定的数据点,以实现更高效的查询。
获取两个日期之间的所有活动,按从新到旧排序。
# 基本活动列表
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities?oldest=2024-01-01&newest=2024-01-31"
# 带数量限制
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities?oldest=2024-01-01&limit=10"
# 仅获取特定字段(更高效)
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities?oldest=2024-01-01&fields=id,name,start_date_local,type,distance,moving_time,icu_training_load"
# 针对特定活动类型(骑行、跑步、游泳等)
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities?oldest=2024-01-01&newest=2024-01-31" | jq '.[] | select(.type == "Ride")'
使用 fields 参数将活动数据与上下文信息组合:
# 功率、心率和负荷数据
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities?oldest=2024-01-01&fields=name,icu_weighted_avg_watts,average_heartrate,icu_training_load,icu_atl,icu_ctl"
# 包含疲劳度和体能指标
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities?oldest=2024-01-01&fields=id,name,type,icu_training_load,icu_atl,icu_ctl,perceived_exertion"
# 组合功率区间和区间时间
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities?oldest=2024-01-01&fields=id,name,distance,moving_time,icu_zone_times,icu_weighted_avg_watts"
# 心率区间 + 强度数据
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities?oldest=2024-01-01&fields=id,name,type,average_heartrate,max_heartrate,icu_hr_zone_times,trimp"
# 通过 ID 获取活动及其所有数据
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/activity/ACTIVITY_ID"
# 获取包含间歇数据段的活动
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/activity/ACTIVITY_ID?intervals=true"
# 获取活动数据流(JSON 格式)
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/activity/ACTIVITY_ID/streams.json"
# 获取活动数据流(CSV 格式,包含时间、功率、心率、踏频等)
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/activity/ACTIVITY_ID/streams.csv" \
--output activity_streams.csv
# 获取特定类型的数据流
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/activity/ACTIVITY_ID/streams.json?types=watts,heart_rate,cadence"
从您的日历中获取计划训练课、备注和训练目标。
# 获取日期范围内的所有事件
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events?oldest=2024-02-01&newest=2024-02-29"
# 获取特定字段的事件
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events?oldest=2024-02-01&newest=2024-02-29&fields=id,name,category,start_date_local,description"
# 按类别筛选(WORKOUT, NOTE, TARGET, FITNESS_DAYS 等)
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events?oldest=2024-02-01&category=WORKOUT"
# 获取日期范围内的训练目标
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events?oldest=2024-02-01&category=TARGET"
# 获取特定的计划训练课
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events/EVENT_ID"
以多种格式导出计划训练课,供您的训练设备使用。
# 下载为 .zwo 格式(Zwift)
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events/EVENT_ID/download.zwo" \
--output workout.zwo
# 下载为 .mrc 格式(TrainerRoad)
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events/EVENT_ID/download.mrc" \
--output workout.mrc
# 下载为 .erg 格式(Wahoo)
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events/EVENT_ID/download.erg" \
--output workout.erg
# 下载为 .fit 格式(Garmin)
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events/EVENT_ID/download.fit" \
--output workout.fit
# 下载多个训练课为 zip 文件
curl -H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/workouts.zip?oldest=2024-02-01&newest=2024-02-29&ext=zwo" \
--output workouts.zip
向您的训练历史记录中添加手动记录的活动。
# 基本手动活动
curl -X POST \
-H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "晨跑",
"type": "Run",
"start_date_local": "2024-01-15T06:00:00",
"distance": 10000,
"moving_time": 3600,
"description": "轻松的晨跑"
}' \
https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities/manual
# 带功率数据(骑行活动)
curl -X POST \
-H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "室内 Zwift 骑行",
"type": "Ride",
"start_date_local": "2024-01-15T18:00:00",
"moving_time": 3600,
"icu_joules": 900000,
"icu_weighted_avg_watts": 250,
"average_heartrate": 155,
"trainer": true
}' \
https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities/manual
# 带外部 ID(用于与外部系统同步)
curl -X POST \
-H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Strava 活动",
"type": "Run",
"start_date_local": "2024-01-15T07:00:00",
"distance": 5000,
"moving_time": 1800,
"external_id": "strava_12345"
}' \
https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities/manual
# 批量创建活动
curl -X POST \
-H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"name": "周一轻松跑",
"type": "Run",
"start_date_local": "2024-01-15T06:00:00",
"distance": 10000,
"moving_time": 3600
},
{
"name": "周二间歇骑行",
"type": "Ride",
"start_date_local": "2024-01-16T18:00:00",
"moving_time": 5400,
"icu_weighted_avg_watts": 280
}
]' \
https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/activities/manual/bulk
为未来的训练在您的日历上添加一个排期的训练课。
# 基本计划训练课
curl -X POST \
-H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "最大摄氧量间歇训练",
"category": "WORKOUT",
"start_date_local": "2024-02-15T18:00:00",
"description": "6组4分钟,110% FTP,恢复3分钟"
}' \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events?upsertOnUid=true"
# 使用 Intervals.icu 格式描述的计划训练课
curl -X POST \
-H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "甜区耐力训练",
"category": "WORKOUT",
"start_date_local": "2024-02-16T18:00:00",
"description": "[Workout \"Sweet Spot\" \"\" Bike 300\n [SteadyState 600 88 92 \"\"]\n [SteadyState 600 88 92 \"\"]\n [SteadyState 600 88 92 \"\"]\n]"
}' \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events?upsertOnUid=true"
# 从 .zwo 文件内容创建训练课
curl -X POST \
-H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Zwift 结构化训练课",
"category": "WORKOUT",
"start_date_local": "2024-02-17T19:00:00",
"file_contents": "<Workout_Instruction version=\"1\">\n<author></author>\n<name>我的训练课</name>\n<description></description>\n<sportType>Bike</sportType>\n<tags></tags>\n<workout>\n<Warmup Duration=\"600\" PowerLow=\"0.5\" PowerHigh=\"0.75\"/>\n<SteadyState Duration=\"1200\" Power=\"0.85\"/>\n</workout>\n</Workout_Instruction>"
}' \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events?upsertOnUid=true"
# 批量创建计划训练课
curl -X POST \
-H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"name": "轻松骑行",
"category": "WORKOUT",
"start_date_local": "2024-02-15T18:00:00",
"description": "60分钟,60-65% FTP"
},
{
"name": "阈值训练",
"category": "WORKOUT",
"start_date_local": "2024-02-17T19:00:00",
"description": "3组10分钟,95-105% FTP"
},
{
"name": "长距离跑",
"category": "WORKOUT",
"start_date_local": "2024-02-18T07:00:00",
"description": "90分钟轻松跑,保持可交谈的配速"
}
]' \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events/bulk?upsertOnUid=true&updatePlanApplied=true"
为特定日期设定训练目标。
# 创建功率目标
curl -X POST \
-H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "FTP 测试目标",
"category": "TARGET",
"start_date_local": "2024-02-20T18:00:00",
"description": "目标功率:300W"
}' \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events?upsertOnUid=true"
# 创建时长目标
curl -X POST \
-H "Authorization: ApiKey API_KEY:YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "每日训练量目标",
"category": "TARGET",
"start_date_local": "2024-02-21T00:00:00",
"description": "目标:2小时训练"
}' \
"https://intervals.icu/api/v1/athlete/YOUR_ATHLETE_ID/events?upsertOnUid=true"
修改一个已存在的已完成活动。
```bash