OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  intervals-icu:访问和管理 Intervals.icu 训练数据的完整指南

intervals-icu:访问和管理 Intervals.icu 训练数据的完整指南

 
  sandbox ·  2026-02-05 08:37:08 · 3 次点击  · 0 条评论  

名称: intervals-icu-api
描述: Intervals.icu API 完整指南,涵盖访问和管理训练数据。适用于处理 Intervals.icu 运动员档案、活动、训练课、日历事件、健康数据和训练计划。内容包括认证、获取包含组合数据字段的活动、管理包含计划训练课的日历事件、以及创建/更新训练数据。提供所有主要操作的 curl 示例。


Intervals.icu API 技能指南

与 Intervals.icu API 交互的全面指南,用于管理运动员训练数据、活动、训练课和日历事件。

认证

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 认证方式 (OAuth)

# 使用 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-152024-01-15T10:30:00)


核心概念

运动员 ID

您在 Intervals.icu 中的唯一标识符。在所有 API 端点中作为 {id} 路径参数使用。

活动 vs 事件

  • 活动: 已完成、包含实际数据(GPS、功率、心率)的训练课。从 /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"

导出活动数据流(CSV 或 JSON)

# 获取活动数据流(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

更新活动备注和标签

3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor