Generate a multi-week training program
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
Training goal. Sets the set/rep/rest scheme and exercises-per-muscle.
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.
Training days per week
Program duration in weeks
Limit to specific equipment. Hyphens, underscores and spaces are interchangeable.
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.
Number of warmup exercises per day. Only applied when includeWarmup is not false.
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.
Number of cooldown exercises per day. Only applied when includeCooldown is not false.
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.