List and search exercises
Request
- Base URL: https://exercise-api.ymove.app/api/v2
- URL: https://exercise-api.ymove.app/api/v2/exercises
- Auth: one of:
- API key in header X-API-Key
- API key in query parameter api_key
Query parameters
Filter by muscle group. Synonyms and finer-grained muscles are accepted and roll up to their group ("quadriceps" and "vastus_medialis" both mean "quads", "obliques" means "core"). Call GET /exercises/muscle-groups for the canonical list with live counts.
Filter by exercise type
Filter by equipment. Hyphens, underscores and spaces are interchangeable, so "foam-roller", "foam_roller" and "foam roller" are the same filter. Call GET /exercises/equipment for the list with live counts.
Filter by difficulty
Only return exercises with video
Only exercises with white-background video
Only exercises with gym-shot video
Filter video array by tag
Search by exercise title
Page number
Results per page
Whether to include video URLs in the response. 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) so paginating cannot burn your monthly cap by accident. Pass it explicitly to be unambiguous. true: video fields are returned and each listed exercise counts toward your monthly cap. false: browse mode - no videoUrl or videoHlsUrl, no monthly-cap charge. Thumbnails accompany the video and never count toward the cap; on Scale they are returned in browse mode too, on the capped plans they are not.
The same switch from the other side, for parity with /exercises/{id}. excludeVideos=1 is browse mode regardless of your key default, and wins if includeVideos is also sent. On the capped plans this drops the thumbnails with the video; on Scale the thumbnails remain.
Response
Paginated list of exercises. When the monthly exercise cap is exceeded, exercises not previously accessed will have their video URLs (videoUrl, videoHlsUrl, videoDurationSecs) removed. A _warning object is included with details. Previously accessed exercises keep their video URLs. Thumbnails accompany any returned video; Scale keeps them in browse mode as well.
Example response
{
"data": [
{
"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.