Programs

Generate a multi-week training program

get/programs/generate

Request

  • Base URL: https://exercise-api.ymove.app/api/v2
  • URL: https://exercise-api.ymove.app/api/v2/programs/generate
  • Auth: one of:
    • API key in header X-API-Key
    • API key in query parameter api_key

Query parameters

goal'muscle_building' | 'weight_loss' | 'strength' | 'endurance'

Training goal. Sets the set/rep/rest scheme and exercises-per-muscle.

difficulty'beginner' | 'intermediate' | 'advanced'

Difficulty level. Filters which exercises are selected per muscle: beginner returns beginner-level moves, intermediate returns beginner+intermediate, advanced prefers advanced moves (falling back to intermediate where advanced options are limited). Combine with goal, which controls volume.

daysPerWeekinteger

Training days per week

weeks4 | 8 | 12

Program duration in weeks

equipment'bodyweight' | 'dumbbell' | 'mat' | 'machine' | 'barbell' | 'cable' | 'kettlebell' | 'chair' | 'plate' | 'bosu' | 'band' | 'rings' | 'foam-roller' | 'box' | 'bench' | 'weighted-vest' | 'stability-ball' | 'suspension-trainer' | 'dip-bar' | 'mini-band' | 'medicine-ball' | 'battle-rope' | 'push-up-handles' | 'smith-machine' | 'wall' | 'trap-bar' | 'cone' | 'landmine' | 'step' | 'ab-wheel' | 'towel' | 'foam roller' | 'weighted vest' | 'stability ball' | 'suspension trainer' | 'dip bar' | 'mini band' | 'medicine ball' | 'battle rope' | 'push-up handles' | 'smith machine' | 'trap bar' | 'ab wheel' | 'free weights' | 'ez bar' | 'swiss ball' | 'exercise ball' | 'gym ball' | 'resistance band' | 'resistance bands' | 'bosu ball' | 'balance trainer' | 'pull up bar' | 'parallel bars' | 'gymnastic rings' | 'yoga mat' | 'med ball' | 'slam ball' | 'weight plate' | 'bumper plate' | 'hex bar' | 'aerobic step' | 'step platform' | 'no equipment'

Limit to specific equipment. Hyphens, underscores and spaces are interchangeable.

includeWarmupboolean

Adds a warmup block (bodyweight stretches, mobility, light cardio) to the start of each training day. Default true; set to false to omit. Warmup exercises count toward your monthly exercise cap.

warmupCountinteger

Number of warmup exercises per day. Only applied when includeWarmup is not false.

includeCooldownboolean

Adds a cooldown block (bodyweight stretches and mobility) to the end of each training day. Default true; set to false to omit. Cooldown exercises count toward your monthly exercise cap.

cooldownCountinteger

Number of cooldown exercises per day. Only applied when includeCooldown is not false.

includeVideosboolean

Whether to include video URLs. When omitted, the default depends on your API key: keys created before 2026-07-07 default to true, newer keys default to false (browse mode). Pass includeVideos=true when you want playable videos - the returned exercises then count toward your monthly cap. Thumbnails are returned either way on this endpoint, on every plan.

Response

Generated training program. When the monthly exercise cap is exceeded, exercises not previously accessed will have video properties removed entirely. A _warning object is included with details.

Example response

{
  "data": {
    "weeklySchedule": [
      {
        "exercises": [
          {
            "exercise": {
              "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
              "title": "Barbell Bench Press",
              "slug": "barbell-bench-press",
              "description": "A compound chest exercise performed lying on a flat bench.",
              "instructions": [
                "Lie on a flat bench with feet flat on the floor",
                "Grip the barbell slightly wider than shoulder width",
                "Lower the bar to mid-chest",
                "Press the bar back up to full arm extension"
              ],
              "importantPoints": [
                "Keep your back flat on the bench",
                "Do not bounce the bar off your chest"
              ],
              "muscleGroup": "chest",
              "secondaryMuscles": [
                "triceps",
                "shoulders"
              ],
              "muscleGroups": [
                "chest",
                "middle_chest",
                "pectoralis_major",
                "front_deltoids",
                "triceps",
                "core"
              ],
              "equipment": "barbell",
              "category": "compound",
              "difficulty": "intermediate",
              "videoUrl": "https://vz-xxx.b-cdn.net/video-id/play_720p.mp4?token=...",
              "videoHlsUrl": "https://vz-xxx.b-cdn.net/video-id/playlist.m3u8?token=...",
              "thumbnailUrl": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
              "thumbnails": {
                "default": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
                "square": "https://ymove.app/api/v2/thumbnail/video-id?crop=square",
                "portrait": "https://ymove.app/api/v2/thumbnail/video-id?crop=portrait",
                "landscape": "https://ymove.app/api/v2/thumbnail/video-id?crop=landscape",
                "original": "https://ymove.app/api/v2/thumbnail/video-id"
              },
              "videoDurationSecs": 12,
              "exerciseType": [
                "strength"
              ],
              "hasVideo": true,
              "hasVideoWhite": true,
              "hasVideoGym": false,
              "videos": [
                {
                  "id": "3f6c2a9e-8b1d-4c7a-9e2f-5d0b7a1c4e88",
                  "videoUrl": "https://vz-xxx.b-cdn.net/video-id/play_720p.mp4?token=...",
                  "videoHlsUrl": "https://vz-xxx.b-cdn.net/video-id/playlist.m3u8?token=...",
                  "thumbnailUrl": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
                  "thumbnails": {
                    "default": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
                    "square": "https://ymove.app/api/v2/thumbnail/video-id?crop=square",
                    "portrait": "https://ymove.app/api/v2/thumbnail/video-id?crop=portrait",
                    "landscape": "https://ymove.app/api/v2/thumbnail/video-id?crop=landscape",
                    "original": "https://ymove.app/api/v2/thumbnail/video-id"
                  },
                  "tag": "white-background",
                  "orientation": "landscape",
                  "isPrimary": true
                }
              ]
            }
          }
        ],
        "warmup": [
          {
            "exercise": {
              "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
              "title": "Barbell Bench Press",
              "slug": "barbell-bench-press",
              "description": "A compound chest exercise performed lying on a flat bench.",
              "instructions": [
                "Lie on a flat bench with feet flat on the floor",
                "Grip the barbell slightly wider than shoulder width",
                "Lower the bar to mid-chest",
                "Press the bar back up to full arm extension"
              ],
              "importantPoints": [
                "Keep your back flat on the bench",
                "Do not bounce the bar off your chest"
              ],
              "muscleGroup": "chest",
              "secondaryMuscles": [
                "triceps",
                "shoulders"
              ],
              "muscleGroups": [
                "chest",
                "middle_chest",
                "pectoralis_major",
                "front_deltoids",
                "triceps",
                "core"
              ],
              "equipment": "barbell",
              "category": "compound",
              "difficulty": "intermediate",
              "videoUrl": "https://vz-xxx.b-cdn.net/video-id/play_720p.mp4?token=...",
              "videoHlsUrl": "https://vz-xxx.b-cdn.net/video-id/playlist.m3u8?token=...",
              "thumbnailUrl": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
              "thumbnails": {
                "default": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
                "square": "https://ymove.app/api/v2/thumbnail/video-id?crop=square",
                "portrait": "https://ymove.app/api/v2/thumbnail/video-id?crop=portrait",
                "landscape": "https://ymove.app/api/v2/thumbnail/video-id?crop=landscape",
                "original": "https://ymove.app/api/v2/thumbnail/video-id"
              },
              "videoDurationSecs": 12,
              "exerciseType": [
                "strength"
              ],
              "hasVideo": true,
              "hasVideoWhite": true,
              "hasVideoGym": false,
              "videos": [
                {
                  "id": "3f6c2a9e-8b1d-4c7a-9e2f-5d0b7a1c4e88",
                  "videoUrl": "https://vz-xxx.b-cdn.net/video-id/play_720p.mp4?token=...",
                  "videoHlsUrl": "https://vz-xxx.b-cdn.net/video-id/playlist.m3u8?token=...",
                  "thumbnailUrl": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
                  "thumbnails": {
                    "default": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
                    "square": "https://ymove.app/api/v2/thumbnail/video-id?crop=square",
                    "portrait": "https://ymove.app/api/v2/thumbnail/video-id?crop=portrait",
                    "landscape": "https://ymove.app/api/v2/thumbnail/video-id?crop=landscape",
                    "original": "https://ymove.app/api/v2/thumbnail/video-id"
                  },
                  "tag": "white-background",
                  "orientation": "landscape",
                  "isPrimary": true
                }
              ]
            }
          }
        ],
        "cooldown": [
          {
            "exercise": {
              "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
              "title": "Barbell Bench Press",
              "slug": "barbell-bench-press",
              "description": "A compound chest exercise performed lying on a flat bench.",
              "instructions": [
                "Lie on a flat bench with feet flat on the floor",
                "Grip the barbell slightly wider than shoulder width",
                "Lower the bar to mid-chest",
                "Press the bar back up to full arm extension"
              ],
              "importantPoints": [
                "Keep your back flat on the bench",
                "Do not bounce the bar off your chest"
              ],
              "muscleGroup": "chest",
              "secondaryMuscles": [
                "triceps",
                "shoulders"
              ],
              "muscleGroups": [
                "chest",
                "middle_chest",
                "pectoralis_major",
                "front_deltoids",
                "triceps",
                "core"
              ],
              "equipment": "barbell",
              "category": "compound",
              "difficulty": "intermediate",
              "videoUrl": "https://vz-xxx.b-cdn.net/video-id/play_720p.mp4?token=...",
              "videoHlsUrl": "https://vz-xxx.b-cdn.net/video-id/playlist.m3u8?token=...",
              "thumbnailUrl": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
              "thumbnails": {
                "default": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
                "square": "https://ymove.app/api/v2/thumbnail/video-id?crop=square",
                "portrait": "https://ymove.app/api/v2/thumbnail/video-id?crop=portrait",
                "landscape": "https://ymove.app/api/v2/thumbnail/video-id?crop=landscape",
                "original": "https://ymove.app/api/v2/thumbnail/video-id"
              },
              "videoDurationSecs": 12,
              "exerciseType": [
                "strength"
              ],
              "hasVideo": true,
              "hasVideoWhite": true,
              "hasVideoGym": false,
              "videos": [
                {
                  "id": "3f6c2a9e-8b1d-4c7a-9e2f-5d0b7a1c4e88",
                  "videoUrl": "https://vz-xxx.b-cdn.net/video-id/play_720p.mp4?token=...",
                  "videoHlsUrl": "https://vz-xxx.b-cdn.net/video-id/playlist.m3u8?token=...",
                  "thumbnailUrl": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
                  "thumbnails": {
                    "default": "https://ymove.app/api/v2/thumbnail/video-id?crop=default",
                    "square": "https://ymove.app/api/v2/thumbnail/video-id?crop=square",
                    "portrait": "https://ymove.app/api/v2/thumbnail/video-id?crop=portrait",
                    "landscape": "https://ymove.app/api/v2/thumbnail/video-id?crop=landscape",
                    "original": "https://ymove.app/api/v2/thumbnail/video-id"
                  },
                  "tag": "white-background",
                  "orientation": "landscape",
                  "isPrimary": true
                }
              ]
            }
          }
        ]
      }
    ]
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.