ExerciseDB
App · Health & Fitness · 16 actions
Look up exercises from a workflow: 1,500 of them, each with an animated GIF, the muscle it targets, the muscles it also works, the body part and the equipment it needs, plus step-by-step instructions. Search by name or by a rough idea, filter by body part, muscle and equipment at once, pull everything for one muscle, draw a random exercise, or build a whole workout spread evenly across the areas you name and the kit you actually have. Every action reads: nothing here changes anything. No account or API key required.
Actions
| Action | What it does |
|---|---|
| Build a workout | Put together a workout from the catalogue, spread evenly across the areas you name. |
| Check the API status | Ask ExerciseDB's health check whether the service is up. |
| Filter exercises | Find exercises matching several criteria at once. |
| Find an exercise by name | Turn an exercise name into its record, without guessing. |
| Get an exercise | Get one exercise in full: its GIF, the muscle it targets, the muscles it also works, the body part, the equipment and every instruction step. |
| Get how to do an exercise | Get one exercise's instructions, numbered and ready to send. |
| Get random exercises | Draw exercises at random, optionally from a narrowed pool. |
| List body parts | The ten areas of the body the dataset files its exercises under, from ExerciseDB's own body-part endpoint. |
| List equipment | The twenty-eight kinds of equipment the dataset names, from ExerciseDB's own equipment endpoint. |
| List exercises | Read the catalogue of 1,500 exercises, optionally narrowed to names matching some text. |
| List exercises for a body part | Every exercise for one area of the body, matched exactly rather than fuzzily, so 'chest' returns the 191 chest exercises and nothing that merely mentions the word. |
| List exercises for a muscle | Every exercise that works one muscle. |
| List exercises for a piece of equipment | Every exercise that uses one piece of equipment. |
| List muscles | The fifty muscles the dataset names, from ExerciseDB's own muscle endpoint. |
| Search exercises | Search the catalogue when you do not know the exact words. |
| Summarise the catalogue | See what the dataset actually holds: every body part, target muscle and piece of equipment, each with how many exercises carry it, commonest first. |
Build a workout
Put together a workout from the catalogue, spread evenly across the areas you name. Asking for six exercises over chest, back and legs gives two of each rather than five chest movements and a plank, and limiting the equipment keeps it to what is actually available. Set a seed for a plan that repeats, or leave it empty for a fresh one each run.
Inputs
- Body parts
body_partslist - Keep only exercises for these areas of the body. Picking several widens the search: chest and back returns both. Leave it empty for every area.
- Equipment
equipmentlist - Keep only exercises that use this equipment. Picking several widens the search, so list everything available and the result is what can actually be done with it. Leave it empty for every kind.
- How many exercises
exercise_countnumber - How many exercises the workout should hold. Defaults to six.From 1 to 30. Default:
6. - Repeatable seed
seedtext - Set this to any text to make the draw repeatable: the same seed over the same catalogue always picks the same exercises. Leave it empty for a different set every run.
Outputs
areas_coveredlist- The body parts the workout touches
attributiontext- The credit to carry
body_parts_requestedlistcountnumber- How many the workout holds
coversobjectequipment_requestedlistexercise_idslistexerciseslistexercises_by_body_partobject- The exercise names grouped under each body part
has_moretrue/false- Always false
limitnumber- The count asked for
nameslistpool_sizenumber- How many exercises the criteria left to choose from
requested_countnumber- How many were asked for
returnednumber- How many were drawn
seedtext- The seed used, if any
total_exercisesnumber- The pool size
Example output
{
"areas_covered": [
"chest"
],
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"body_parts_requested": [
"chest"
],
"count": 2,
"covers": {
"body_parts": [
"chest"
],
"equipments": [
"barbell"
],
"target_muscles": [
"pectorals"
]
},
"equipment_requested": [
"barbell"
],
"exercise_ids": [
"EIeI8Vf",
"3TZduzM"
],
"exercises": [
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "EIeI8Vf",
"gif_url": "https://static.exercisedb.dev/media/EIeI8Vf.gif",
"instructions": [
"Lie flat on a bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"Lift the barbell off the rack and hold it directly above your chest.",
"Lower the barbell slowly towards your chest, keeping your elbows tucked in.",
"Pause for a moment when the barbell touches your chest.",
"Push the barbell back up to the starting position.",
"Repeat for the desired number of repetitions."
],
"name": "barbell bench press",
"secondary_muscles": [
"triceps",
"shoulders"
],
"step_count": 7,
"steps": [
{
"detail": "Lie flat on a bench with your feet flat on the ground.",
"number": 1,
"text": "Step:1 Lie flat on a bench with your feet flat on the ground."
},
{
"detail": "Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"number": 2,
"text": "Step:2 Grasp the barbell with an overhand grip slightly wider than shoulder-width."
},
{
"detail": "Lift the barbell off the rack and hold it directly above your chest.",
"number": 3,
"text": "Step:3 Lift the barbell off the rack and hold it directly above your chest."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
},
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "3TZduzM",
"gif_url": "https://static.exercisedb.dev/media/3TZduzM.gif",
"instructions": [
"Set up an incline bench at a 45-degree angle.",
"Lie down on the bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip, slightly wider than shoulder-width apart."
],
"name": "barbell incline bench press",
"secondary_muscles": [
"shoulders",
"triceps"
],
"step_count": 6,
"steps": [
{
"detail": "Set up an incline bench at a 45-degree angle.",
"number": 1,
"text": "Step:1 Set up an incline bench at a 45-degree angle."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
}
],
"exercises_by_body_part": {
"chest": [
"barbell bench press",
"barbell incline bench press"
]
},
"has_more": false,
"limit": 2,
"names": [
"barbell bench press",
"barbell incline bench press"
],
"pool_size": 170,
"requested_count": 2,
"returned": 2,
"seed": "week-1",
"total_exercises": 170
}Check the API status
Ask ExerciseDB's health check whether the service is up. Use it to gate a longer workflow, or as a one-step check that the connection works. The free tier is rate limited, so this also surfaces a throttled connection before a bigger step hits it.
Inputs
None.
Outputs
attributiontext- The credit to carry
base_urltext- The host that was checked
detailsobject- The health check's whole body, or null
messagetext- Whatever the health check said, or null
reachabletrue/false- True when the health check answered without an error
status_codenumber- The HTTP status it sent
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"base_url": "https://oss.exercisedb.dev/api/v1",
"details": {
"message": "ok",
"success": true
},
"message": "ok",
"reachable": true,
"status_code": 200
}Filter exercises
Find exercises matching several criteria at once. Choosing more than one value in a field widens the search and adding a second field narrows it, so chest or back, with a barbell or dumbbell, means exactly that. This is the action to reach for when planning around what somebody actually has to hand.
Inputs
- Body parts
body_partslist - Keep only exercises for these areas of the body. Picking several widens the search: chest and back returns both. Leave it empty for every area.
- Muscles
muscleslist - Keep only exercises that work these muscles. Picking several widens the search. Leave it empty for every muscle.
- Supporting muscles
secondary_muscleslist - Keep only exercises that work these muscles in support, rather than targeting them. ExerciseDB filters on supporting muscles separately from target muscles, so this is the field for 'anything that also works the triceps'. Leave it empty to ignore supporting muscles.
- Equipment
equipmentlist - Keep only exercises that use this equipment. Picking several widens the search, so list everything available and the result is what can actually be done with it. Leave it empty for every kind.
- Name contains
name_containstext - Keep only exercises whose name contains this text. Case and accents are ignored, and the match is literal rather than fuzzy, so 'incline' finds the incline variations and nothing else.
- How many to return
limitnumber - How many exercises to return. ExerciseDB serves 25 a page and this follows its cursor for as many pages as the number needs, so the 25-per-request cap is not a ceiling here. Defaults to 25; a larger number costs proportionally more requests.From 1 to 1500. Default:
25.
Outputs
attributiontext- The credit to carry
body_parts_requestedlist- The body parts the filter was given
countnumber- How many are in this result
coversobjectequipment_requestedlist- The equipment the filter was given
exercise_idslistexerciseslisthas_moretrue/false- True when more match
hinttext- Set only when a muscle filter came back empty for a fixable reason: the muscle is never a target muscle, only a supporting one. Names the switch that would find it
include_secondarytrue/false- Whether supporting muscles counted
limitnumber- The limit actually used
muscles_requestedlist- The target muscles the filter was given
name_containstext- The text the names had to contain
nameslistreturnednumber- How many came back
secondary_muscles_requestedlist- The supporting muscles the filter was given
total_exercisesnumber- How many matched the filters before paging
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"body_parts_requested": [
"chest"
],
"count": 2,
"covers": {
"body_parts": [
"chest"
],
"equipments": [
"barbell"
],
"target_muscles": [
"pectorals"
]
},
"equipment_requested": [
"barbell"
],
"exercise_ids": [
"EIeI8Vf",
"3TZduzM"
],
"exercises": [
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "EIeI8Vf",
"gif_url": "https://static.exercisedb.dev/media/EIeI8Vf.gif",
"instructions": [
"Lie flat on a bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"Lift the barbell off the rack and hold it directly above your chest.",
"Lower the barbell slowly towards your chest, keeping your elbows tucked in.",
"Pause for a moment when the barbell touches your chest.",
"Push the barbell back up to the starting position.",
"Repeat for the desired number of repetitions."
],
"name": "barbell bench press",
"secondary_muscles": [
"triceps",
"shoulders"
],
"step_count": 7,
"steps": [
{
"detail": "Lie flat on a bench with your feet flat on the ground.",
"number": 1,
"text": "Step:1 Lie flat on a bench with your feet flat on the ground."
},
{
"detail": "Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"number": 2,
"text": "Step:2 Grasp the barbell with an overhand grip slightly wider than shoulder-width."
},
{
"detail": "Lift the barbell off the rack and hold it directly above your chest.",
"number": 3,
"text": "Step:3 Lift the barbell off the rack and hold it directly above your chest."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
},
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "3TZduzM",
"gif_url": "https://static.exercisedb.dev/media/3TZduzM.gif",
"instructions": [
"Set up an incline bench at a 45-degree angle.",
"Lie down on the bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip, slightly wider than shoulder-width apart."
],
"name": "barbell incline bench press",
"secondary_muscles": [
"shoulders",
"triceps"
],
"step_count": 6,
"steps": [
{
"detail": "Set up an incline bench at a 45-degree angle.",
"number": 1,
"text": "Step:1 Set up an incline bench at a 45-degree angle."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
}
],
"has_more": true,
"hint": null,
"include_secondary": false,
"limit": 2,
"muscles_requested": [],
"name_contains": null,
"names": [
"barbell bench press",
"barbell incline bench press"
],
"returned": 2,
"secondary_muscles_requested": [],
"total_exercises": 191
}Find an exercise by name
Turn an exercise name into its record, without guessing. The name is matched exactly first and then as a substring, and a name matching several exercises is refused with the candidates listed rather than resolved to an arbitrary one. Use it to look up something a person named, where picking the wrong movement would be worse than asking again.
Inputs
- Exercise name
nametextRequired - The name to look up. Case and accents are ignored.
Outputs
attributiontext- The credit to carry
exerciseobject
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"exercise": {
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "EIeI8Vf",
"gif_url": "https://static.exercisedb.dev/media/EIeI8Vf.gif",
"instructions": [
"Lie flat on a bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"Lift the barbell off the rack and hold it directly above your chest.",
"Lower the barbell slowly towards your chest, keeping your elbows tucked in.",
"Pause for a moment when the barbell touches your chest.",
"Push the barbell back up to the starting position.",
"Repeat for the desired number of repetitions."
],
"name": "barbell bench press",
"secondary_muscles": [
"triceps",
"shoulders"
],
"step_count": 7,
"steps": [
{
"detail": "Lie flat on a bench with your feet flat on the ground.",
"number": 1,
"text": "Step:1 Lie flat on a bench with your feet flat on the ground."
},
{
"detail": "Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"number": 2,
"text": "Step:2 Grasp the barbell with an overhand grip slightly wider than shoulder-width."
},
{
"detail": "Lift the barbell off the rack and hold it directly above your chest.",
"number": 3,
"text": "Step:3 Lift the barbell off the rack and hold it directly above your chest."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
}
}Get an exercise
Get one exercise in full: its GIF, the muscle it targets, the muscles it also works, the body part, the equipment and every instruction step. Takes an exercise id or a name, so a step can feed it either an id from an earlier search or a name a person typed.
Inputs
- Exercise
exercisetextRequired - The exercise to look up, by its id or by its name. An id such as 'EIeI8Vf' is used as given; anything else is matched against the catalogue's names, exactly first and then as a substring. A name that matches several exercises is refused with the candidates listed, rather than resolved to whichever happened to come first.
Outputs
attributiontext- The credit to carry
exerciseobject
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"exercise": {
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "EIeI8Vf",
"gif_url": "https://static.exercisedb.dev/media/EIeI8Vf.gif",
"instructions": [
"Lie flat on a bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"Lift the barbell off the rack and hold it directly above your chest.",
"Lower the barbell slowly towards your chest, keeping your elbows tucked in.",
"Pause for a moment when the barbell touches your chest.",
"Push the barbell back up to the starting position.",
"Repeat for the desired number of repetitions."
],
"name": "barbell bench press",
"secondary_muscles": [
"triceps",
"shoulders"
],
"step_count": 7,
"steps": [
{
"detail": "Lie flat on a bench with your feet flat on the ground.",
"number": 1,
"text": "Step:1 Lie flat on a bench with your feet flat on the ground."
},
{
"detail": "Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"number": 2,
"text": "Step:2 Grasp the barbell with an overhand grip slightly wider than shoulder-width."
},
{
"detail": "Lift the barbell off the rack and hold it directly above your chest.",
"number": 3,
"text": "Step:3 Lift the barbell off the rack and hold it directly above your chest."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
}
}Get how to do an exercise
Get one exercise's instructions, numbered and ready to send. The steps come back both as a list and as one block of text, with the demonstration GIF and the muscles worked alongside them, so a workflow can drop the whole thing into an email or a message without assembling it.
Inputs
- Exercise
exercisetextRequired - The exercise to look up, by its id or by its name. An id such as 'EIeI8Vf' is used as given; anything else is matched against the catalogue's names, exactly first and then as a substring. A name that matches several exercises is refused with the candidates listed, rather than resolved to whichever happened to come first.
Outputs
attributiontext- The credit to carry
body_parttext- The area of the body
equipmenttext- The equipment needed
exercise_idtext- The dataset's id
gif_urltext- The demonstration GIF
instructionslist- The same steps as plain sentences
instructions_texttext- Every step as one numbered block, ready to send
nametext- The exercise's name
secondary_muscleslist- The muscles worked as supporting ones
step_countnumber- How many steps
stepslist- The steps, numbered
target_muscletext- The muscle targeted
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"body_part": "chest",
"equipment": "barbell",
"exercise_id": "EIeI8Vf",
"gif_url": "https://static.exercisedb.dev/media/EIeI8Vf.gif",
"instructions": [
"Lie flat on a bench with your feet flat on the ground."
],
"instructions_text": "1. Lie flat on a bench with your feet flat on the ground.",
"name": "barbell bench press",
"secondary_muscles": [
"triceps",
"shoulders"
],
"step_count": 7,
"steps": [
{
"detail": "Lie flat on a bench with your feet flat on the ground.",
"number": 1,
"text": "Step:1 Lie flat on a bench with your feet flat on the ground."
}
],
"target_muscle": "pectorals"
}Get random exercises
Draw exercises at random, optionally from a narrowed pool. Use it for an exercise of the day, or to vary a routine without repeating yourself. Set a seed to make the draw repeatable, or leave it empty for something different each run.
Inputs
- How many
countnumber - How many exercises to draw. Defaults to one.From 1 to 50. Default:
1. - Body parts
body_partslist - Keep only exercises for these areas of the body. Picking several widens the search: chest and back returns both. Leave it empty for every area.
- Muscles
muscleslist - Keep only exercises that work these muscles. Picking several widens the search. Leave it empty for every muscle.
- Equipment
equipmentlist - Keep only exercises that use this equipment. Picking several widens the search, so list everything available and the result is what can actually be done with it. Leave it empty for every kind.
- Repeatable seed
seedtext - Set this to any text to make the draw repeatable: the same seed over the same catalogue always picks the same exercises. Leave it empty for a different set every run.
Outputs
attributiontext- The credit to carry
countnumber- How many were drawn
coversobjectexercise_idslistexerciseslisthas_moretrue/false- Always false
limitnumber- The count asked for
nameslistpool_sizenumber- How many were available to draw from
requested_countnumber- How many were asked for
returnednumber- How many were drawn
seedtext- The seed used, if any
total_exercisesnumber- The pool size
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"count": 1,
"covers": {
"body_parts": [
"chest"
],
"equipments": [
"barbell"
],
"target_muscles": [
"pectorals"
]
},
"exercise_ids": [
"EIeI8Vf"
],
"exercises": [
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "EIeI8Vf",
"gif_url": "https://static.exercisedb.dev/media/EIeI8Vf.gif",
"instructions": [
"Lie flat on a bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"Lift the barbell off the rack and hold it directly above your chest.",
"Lower the barbell slowly towards your chest, keeping your elbows tucked in.",
"Pause for a moment when the barbell touches your chest.",
"Push the barbell back up to the starting position.",
"Repeat for the desired number of repetitions."
],
"name": "barbell bench press",
"secondary_muscles": [
"triceps",
"shoulders"
],
"step_count": 7,
"steps": [
{
"detail": "Lie flat on a bench with your feet flat on the ground.",
"number": 1,
"text": "Step:1 Lie flat on a bench with your feet flat on the ground."
},
{
"detail": "Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"number": 2,
"text": "Step:2 Grasp the barbell with an overhand grip slightly wider than shoulder-width."
},
{
"detail": "Lift the barbell off the rack and hold it directly above your chest.",
"number": 3,
"text": "Step:3 Lift the barbell off the rack and hold it directly above your chest."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
}
],
"has_more": false,
"limit": 1,
"names": [
"barbell bench press"
],
"pool_size": 1500,
"requested_count": 1,
"returned": 1,
"seed": null,
"total_exercises": 1500
}List body parts
The ten areas of the body the dataset files its exercises under, from ExerciseDB's own body-part endpoint. Use it to check a value before filtering on it, or to drive a loop over every area.
Inputs
None.
Outputs
attributiontext- The credit to carry
body_partslist- The body part names, sorted
countnumber- How many there are
sourcetext- The endpoint the names came from
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"body_parts": [
"back",
"cardio",
"chest",
"lower arms",
"lower legs",
"neck",
"shoulders",
"upper arms",
"upper legs",
"waist"
],
"count": 10,
"source": "/bodyparts"
}List equipment
The twenty-eight kinds of equipment the dataset names, from ExerciseDB's own equipment endpoint. These are the values the equipment filters accept, 'body weight' among them.
Inputs
None.
Outputs
attributiontext- The credit to carry
countnumber- How many there are
equipmentslist- The equipment names, sorted
sourcetext- The endpoint the names came from
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"count": 28,
"equipments": [
"assisted",
"band",
"barbell",
"body weight",
"cable",
"dumbbell",
"ez barbell",
"kettlebell",
"leverage machine",
"medicine ball",
"resistance band",
"smith machine",
"stability ball"
],
"source": "/equipments"
}List exercises
Read the catalogue of 1,500 exercises, optionally narrowed to names matching some text. Each exercise comes back with its GIF, the muscles it works, the equipment it needs and its step-by-step instructions. Use 'Filter exercises' to narrow by body part, muscle or equipment.
Inputs
- Name contains
nametext - Keep only exercises whose name matches this text. ExerciseDB applies it itself, so it is one request rather than a search over everything.
- How many to return
limitnumber - How many exercises to return. ExerciseDB serves 25 a page and this follows its cursor for as many pages as the number needs, so the 25-per-request cap is not a ceiling here. Defaults to 25; a larger number costs proportionally more requests.From 1 to 1500. Default:
25.
Outputs
attributiontext- The credit AscendAPI asks projects to carry
body_parts_requestedlist- The body parts the filter was given
countnumber- How many are in this result
coversobject- What this result set spans, at a glance
equipment_requestedlist- The equipment the filter was given
exercise_idslist- Just the ids, ready to feed a later step
exerciseslist- The exercises returned
has_moretrue/false- True when the match is larger than what was returned
limitnumber- The limit actually used
muscles_requestedlist- The target muscles the filter was given
name_containstext- The text the names had to match, or null
nameslist- Just the names, ready to feed a later step
returnednumber- How many came back
secondary_muscles_requestedlist- The supporting muscles the filter was given
total_exercisesnumber- How many ExerciseDB says match, before the limit
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"body_parts_requested": [],
"count": 2,
"covers": {
"body_parts": [
"chest"
],
"equipments": [
"barbell"
],
"target_muscles": [
"pectorals"
]
},
"equipment_requested": [],
"exercise_ids": [
"EIeI8Vf",
"3TZduzM"
],
"exercises": [
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "EIeI8Vf",
"gif_url": "https://static.exercisedb.dev/media/EIeI8Vf.gif",
"instructions": [
"Lie flat on a bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"Lift the barbell off the rack and hold it directly above your chest.",
"Lower the barbell slowly towards your chest, keeping your elbows tucked in.",
"Pause for a moment when the barbell touches your chest.",
"Push the barbell back up to the starting position.",
"Repeat for the desired number of repetitions."
],
"name": "barbell bench press",
"secondary_muscles": [
"triceps",
"shoulders"
],
"step_count": 7,
"steps": [
{
"detail": "Lie flat on a bench with your feet flat on the ground.",
"number": 1,
"text": "Step:1 Lie flat on a bench with your feet flat on the ground."
},
{
"detail": "Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"number": 2,
"text": "Step:2 Grasp the barbell with an overhand grip slightly wider than shoulder-width."
},
{
"detail": "Lift the barbell off the rack and hold it directly above your chest.",
"number": 3,
"text": "Step:3 Lift the barbell off the rack and hold it directly above your chest."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
},
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "3TZduzM",
"gif_url": "https://static.exercisedb.dev/media/3TZduzM.gif",
"instructions": [
"Set up an incline bench at a 45-degree angle.",
"Lie down on the bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip, slightly wider than shoulder-width apart."
],
"name": "barbell incline bench press",
"secondary_muscles": [
"shoulders",
"triceps"
],
"step_count": 6,
"steps": [
{
"detail": "Set up an incline bench at a 45-degree angle.",
"number": 1,
"text": "Step:1 Set up an incline bench at a 45-degree angle."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
}
],
"has_more": true,
"limit": 2,
"muscles_requested": [],
"name_contains": null,
"names": [
"barbell bench press",
"barbell incline bench press"
],
"returned": 2,
"secondary_muscles_requested": [],
"total_exercises": 1500
}List exercises for a body part
Every exercise for one area of the body, matched exactly rather than fuzzily, so 'chest' returns the 191 chest exercises and nothing that merely mentions the word. The body part is picked from the ten the dataset uses.
Inputs
- Body part
body_parttextRequired - The area of the body to pull exercises for, chosen from the ten the dataset uses. Matching is exact and case-insensitive, so this returns every chest exercise rather than everything that sounds like 'chest'.
- How many to return
limitnumber - How many exercises to return. ExerciseDB serves 25 a page and this follows its cursor for as many pages as the number needs, so the 25-per-request cap is not a ceiling here. Defaults to 25; a larger number costs proportionally more requests.From 1 to 1500. Default:
25.
Outputs
attributiontext- The credit to carry
body_parts_requestedlist- The body parts the filter was given
countnumber- How many are in this result
coversobjectequipment_requestedlist- The equipment the filter was given
exercise_idslistexerciseslisthas_moretrue/false- True when more match
hinttext- Set only when a muscle filter came back empty for a fixable reason: the muscle is never a target muscle, only a supporting one. Names the switch that would find it
include_secondarytrue/false- Whether supporting muscles counted
limitnumber- The limit actually used
muscles_requestedlist- The target muscles the filter was given
name_containstext- The text the names had to contain
nameslistreturnednumber- How many came back
secondary_muscles_requestedlist- The supporting muscles the filter was given
total_exercisesnumber- How many matched the filters before paging
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"body_parts_requested": [
"chest"
],
"count": 2,
"covers": {
"body_parts": [
"chest"
],
"equipments": [
"barbell"
],
"target_muscles": [
"pectorals"
]
},
"equipment_requested": [
"barbell"
],
"exercise_ids": [
"EIeI8Vf",
"3TZduzM"
],
"exercises": [
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "EIeI8Vf",
"gif_url": "https://static.exercisedb.dev/media/EIeI8Vf.gif",
"instructions": [
"Lie flat on a bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"Lift the barbell off the rack and hold it directly above your chest.",
"Lower the barbell slowly towards your chest, keeping your elbows tucked in.",
"Pause for a moment when the barbell touches your chest.",
"Push the barbell back up to the starting position.",
"Repeat for the desired number of repetitions."
],
"name": "barbell bench press",
"secondary_muscles": [
"triceps",
"shoulders"
],
"step_count": 7,
"steps": [
{
"detail": "Lie flat on a bench with your feet flat on the ground.",
"number": 1,
"text": "Step:1 Lie flat on a bench with your feet flat on the ground."
},
{
"detail": "Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"number": 2,
"text": "Step:2 Grasp the barbell with an overhand grip slightly wider than shoulder-width."
},
{
"detail": "Lift the barbell off the rack and hold it directly above your chest.",
"number": 3,
"text": "Step:3 Lift the barbell off the rack and hold it directly above your chest."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
},
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "3TZduzM",
"gif_url": "https://static.exercisedb.dev/media/3TZduzM.gif",
"instructions": [
"Set up an incline bench at a 45-degree angle.",
"Lie down on the bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip, slightly wider than shoulder-width apart."
],
"name": "barbell incline bench press",
"secondary_muscles": [
"shoulders",
"triceps"
],
"step_count": 6,
"steps": [
{
"detail": "Set up an incline bench at a 45-degree angle.",
"number": 1,
"text": "Step:1 Set up an incline bench at a 45-degree angle."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
}
],
"has_more": true,
"hint": null,
"include_secondary": false,
"limit": 2,
"muscles_requested": [],
"name_contains": null,
"names": [
"barbell bench press",
"barbell incline bench press"
],
"returned": 2,
"secondary_muscles_requested": [],
"total_exercises": 191
}List exercises for a muscle
Every exercise that works one muscle. By default this means the exercises that target it; turn on secondary muscles to also get the ones that work it as a supporting muscle, which roughly triples the answer for a muscle like the triceps. Only 19 of the 50 published muscles are ever targeted directly (the hands and the shins are only ever worked in support), so a muscle with no direct exercises comes back with a hint saying to turn secondary muscles on, rather than with a bare empty list.
Inputs
- Muscle
muscletextRequired - The muscle to pull exercises for, chosen from the fifty the dataset names. By default this finds the exercises that target it; turn on 'Include secondary muscles' to also find the ones that work it as a supporting muscle.
- Include secondary muscles
include_secondarytrue/false - Also count an exercise when the muscle is worked as a supporting one rather than the one being targeted. Off by default, which is the stricter reading: a barbell bench press targets the pectorals and works the triceps, so this decides whether it counts as a triceps exercise.Default:
false. - How many to return
limitnumber - How many exercises to return. ExerciseDB serves 25 a page and this follows its cursor for as many pages as the number needs, so the 25-per-request cap is not a ceiling here. Defaults to 25; a larger number costs proportionally more requests.From 1 to 1500. Default:
25.
Outputs
attributiontext- The credit to carry
body_parts_requestedlist- The body parts the filter was given
countnumber- How many are in this result
coversobjectequipment_requestedlist- The equipment the filter was given
exercise_idslistexerciseslisthas_moretrue/false- True when more match
hinttext- Set only when a muscle filter came back empty for a fixable reason: the muscle is never a target muscle, only a supporting one. Names the switch that would find it
include_secondarytrue/false- Whether supporting muscles counted
limitnumber- The limit actually used
muscles_requestedlist- The target muscles the filter was given
name_containstext- The text the names had to contain
nameslistreturnednumber- How many came back
secondary_muscles_requestedlist- The supporting muscles the filter was given
total_exercisesnumber- How many matched the filters before paging
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"body_parts_requested": [
"chest"
],
"count": 2,
"covers": {
"body_parts": [
"chest"
],
"equipments": [
"barbell"
],
"target_muscles": [
"pectorals"
]
},
"equipment_requested": [
"barbell"
],
"exercise_ids": [
"EIeI8Vf",
"3TZduzM"
],
"exercises": [
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "EIeI8Vf",
"gif_url": "https://static.exercisedb.dev/media/EIeI8Vf.gif",
"instructions": [
"Lie flat on a bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"Lift the barbell off the rack and hold it directly above your chest.",
"Lower the barbell slowly towards your chest, keeping your elbows tucked in.",
"Pause for a moment when the barbell touches your chest.",
"Push the barbell back up to the starting position.",
"Repeat for the desired number of repetitions."
],
"name": "barbell bench press",
"secondary_muscles": [
"triceps",
"shoulders"
],
"step_count": 7,
"steps": [
{
"detail": "Lie flat on a bench with your feet flat on the ground.",
"number": 1,
"text": "Step:1 Lie flat on a bench with your feet flat on the ground."
},
{
"detail": "Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"number": 2,
"text": "Step:2 Grasp the barbell with an overhand grip slightly wider than shoulder-width."
},
{
"detail": "Lift the barbell off the rack and hold it directly above your chest.",
"number": 3,
"text": "Step:3 Lift the barbell off the rack and hold it directly above your chest."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
},
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "3TZduzM",
"gif_url": "https://static.exercisedb.dev/media/3TZduzM.gif",
"instructions": [
"Set up an incline bench at a 45-degree angle.",
"Lie down on the bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip, slightly wider than shoulder-width apart."
],
"name": "barbell incline bench press",
"secondary_muscles": [
"shoulders",
"triceps"
],
"step_count": 6,
"steps": [
{
"detail": "Set up an incline bench at a 45-degree angle.",
"number": 1,
"text": "Step:1 Set up an incline bench at a 45-degree angle."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
}
],
"has_more": true,
"hint": null,
"include_secondary": false,
"limit": 2,
"muscles_requested": [],
"name_contains": null,
"names": [
"barbell bench press",
"barbell incline bench press"
],
"returned": 2,
"secondary_muscles_requested": [],
"total_exercises": 191
}List exercises for a piece of equipment
Every exercise that uses one piece of equipment. Answers 'what can I do with only a kettlebell', and picking 'body weight' answers 'what can I do with nothing at all'.
Inputs
- Equipment
equipmenttextRequired - The equipment to pull exercises for, chosen from the twenty-eight kinds the dataset names. Pick 'body weight' for the exercises that need no kit at all.
- How many to return
limitnumber - How many exercises to return. ExerciseDB serves 25 a page and this follows its cursor for as many pages as the number needs, so the 25-per-request cap is not a ceiling here. Defaults to 25; a larger number costs proportionally more requests.From 1 to 1500. Default:
25.
Outputs
attributiontext- The credit to carry
body_parts_requestedlist- The body parts the filter was given
countnumber- How many are in this result
coversobjectequipment_requestedlist- The equipment the filter was given
exercise_idslistexerciseslisthas_moretrue/false- True when more match
hinttext- Set only when a muscle filter came back empty for a fixable reason: the muscle is never a target muscle, only a supporting one. Names the switch that would find it
include_secondarytrue/false- Whether supporting muscles counted
limitnumber- The limit actually used
muscles_requestedlist- The target muscles the filter was given
name_containstext- The text the names had to contain
nameslistreturnednumber- How many came back
secondary_muscles_requestedlist- The supporting muscles the filter was given
total_exercisesnumber- How many matched the filters before paging
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"body_parts_requested": [
"chest"
],
"count": 2,
"covers": {
"body_parts": [
"chest"
],
"equipments": [
"barbell"
],
"target_muscles": [
"pectorals"
]
},
"equipment_requested": [
"barbell"
],
"exercise_ids": [
"EIeI8Vf",
"3TZduzM"
],
"exercises": [
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "EIeI8Vf",
"gif_url": "https://static.exercisedb.dev/media/EIeI8Vf.gif",
"instructions": [
"Lie flat on a bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"Lift the barbell off the rack and hold it directly above your chest.",
"Lower the barbell slowly towards your chest, keeping your elbows tucked in.",
"Pause for a moment when the barbell touches your chest.",
"Push the barbell back up to the starting position.",
"Repeat for the desired number of repetitions."
],
"name": "barbell bench press",
"secondary_muscles": [
"triceps",
"shoulders"
],
"step_count": 7,
"steps": [
{
"detail": "Lie flat on a bench with your feet flat on the ground.",
"number": 1,
"text": "Step:1 Lie flat on a bench with your feet flat on the ground."
},
{
"detail": "Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"number": 2,
"text": "Step:2 Grasp the barbell with an overhand grip slightly wider than shoulder-width."
},
{
"detail": "Lift the barbell off the rack and hold it directly above your chest.",
"number": 3,
"text": "Step:3 Lift the barbell off the rack and hold it directly above your chest."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
},
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "3TZduzM",
"gif_url": "https://static.exercisedb.dev/media/3TZduzM.gif",
"instructions": [
"Set up an incline bench at a 45-degree angle.",
"Lie down on the bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip, slightly wider than shoulder-width apart."
],
"name": "barbell incline bench press",
"secondary_muscles": [
"shoulders",
"triceps"
],
"step_count": 6,
"steps": [
{
"detail": "Set up an incline bench at a 45-degree angle.",
"number": 1,
"text": "Step:1 Set up an incline bench at a 45-degree angle."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
}
],
"has_more": true,
"hint": null,
"include_secondary": false,
"limit": 2,
"muscles_requested": [],
"name_contains": null,
"names": [
"barbell bench press",
"barbell incline bench press"
],
"returned": 2,
"secondary_muscles_requested": [],
"total_exercises": 191
}List muscles
The fifty muscles the dataset names, from ExerciseDB's own muscle endpoint. These are the values the muscle filters accept, target and secondary alike.
Inputs
None.
Outputs
attributiontext- The credit to carry
countnumber- How many there are
muscleslist- The muscle names, sorted
sourcetext- The endpoint the names came from
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"count": 50,
"muscles": [
"abs",
"biceps",
"calves",
"delts",
"forearms",
"glutes",
"hamstrings",
"lats",
"pectorals",
"quads",
"traps",
"triceps",
"upper back"
],
"source": "/muscles"
}Search exercises
Search the catalogue when you do not know the exact words. The match is fuzzy across names, target muscles, body parts, equipment and secondary muscles, so 'chest push' finds press and push-up variations. Results keep their relevance ranking, best first, and the threshold sets how loose the matching is. This endpoint has no paging, so it returns every match at once; use the threshold to narrow a search that returns too much.
Inputs
- Search for
querytextRequired - What to search for. It is matched against names, muscles, body parts and equipment at once, so a phrase like 'dumbbell shoulder' works.
- Fuzziness
thresholdnumber - How loose the matching is, from 0 for an exact match to 1 for very loose. Defaults to 0.3. Raise it when a search finds nothing, lower it when it finds too much.From 0 to 1. Default:
0.3.
Outputs
attributiontext- The credit to carry
countnumber- How many are in this result
coversobjectexercise_idslistexerciseslisthas_moretrue/false- True when more match
limitnumber- The limit actually used
nameslistquerytext- What was searched for
ranked_by_relevancetrue/false- Always true here: this endpoint keeps its ranking
returnednumber- How many came back
thresholdnumber- The fuzziness used, 0 exact to 1 very loose
total_exercisesnumber- How many matched
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"count": 2,
"covers": {
"body_parts": [
"chest"
],
"equipments": [
"barbell"
],
"target_muscles": [
"pectorals"
]
},
"exercise_ids": [
"EIeI8Vf",
"3TZduzM"
],
"exercises": [
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "EIeI8Vf",
"gif_url": "https://static.exercisedb.dev/media/EIeI8Vf.gif",
"instructions": [
"Lie flat on a bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"Lift the barbell off the rack and hold it directly above your chest.",
"Lower the barbell slowly towards your chest, keeping your elbows tucked in.",
"Pause for a moment when the barbell touches your chest.",
"Push the barbell back up to the starting position.",
"Repeat for the desired number of repetitions."
],
"name": "barbell bench press",
"secondary_muscles": [
"triceps",
"shoulders"
],
"step_count": 7,
"steps": [
{
"detail": "Lie flat on a bench with your feet flat on the ground.",
"number": 1,
"text": "Step:1 Lie flat on a bench with your feet flat on the ground."
},
{
"detail": "Grasp the barbell with an overhand grip slightly wider than shoulder-width.",
"number": 2,
"text": "Step:2 Grasp the barbell with an overhand grip slightly wider than shoulder-width."
},
{
"detail": "Lift the barbell off the rack and hold it directly above your chest.",
"number": 3,
"text": "Step:3 Lift the barbell off the rack and hold it directly above your chest."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
},
{
"all_muscles": [
"pectorals",
"shoulders",
"triceps"
],
"body_part": "chest",
"body_parts": [
"chest"
],
"equipment": "barbell",
"equipments": [
"barbell"
],
"exercise_id": "3TZduzM",
"gif_url": "https://static.exercisedb.dev/media/3TZduzM.gif",
"instructions": [
"Set up an incline bench at a 45-degree angle.",
"Lie down on the bench with your feet flat on the ground.",
"Grasp the barbell with an overhand grip, slightly wider than shoulder-width apart."
],
"name": "barbell incline bench press",
"secondary_muscles": [
"shoulders",
"triceps"
],
"step_count": 6,
"steps": [
{
"detail": "Set up an incline bench at a 45-degree angle.",
"number": 1,
"text": "Step:1 Set up an incline bench at a 45-degree angle."
}
],
"target_muscle": "pectorals",
"target_muscles": [
"pectorals"
]
}
],
"has_more": false,
"limit": 2,
"names": [
"barbell bench press",
"barbell incline bench press"
],
"query": "bench press",
"ranked_by_relevance": true,
"returned": 2,
"threshold": 0.3,
"total_exercises": 2
}Summarise the catalogue
See what the dataset actually holds: every body part, target muscle and piece of equipment, each with how many exercises carry it, commonest first. One step that says what is worth asking for, instead of paging through 1,500 records to find out.
Inputs
None.
Outputs
attributiontext- The credit to carry
body_part_countnumber- How many body parts
body_partslist- Every body part with its exercise count, commonest first
equipment_countnumber- How many kinds
equipmentslist- Every kind of equipment with its count
target_muscle_countnumber- How many muscles
target_muscleslist- Every target muscle with its count, commonest first
total_exercisesnumber- How many exercises the catalogue holds
Example output
{
"attribution": "Exercise data by AscendAPI (ExerciseDB v1) - ascendapi.com",
"body_part_count": 10,
"body_parts": [
{
"exercise_count": 323,
"name": "upper arms"
},
{
"exercise_count": 257,
"name": "upper legs"
},
{
"exercise_count": 239,
"name": "back"
},
{
"exercise_count": 195,
"name": "waist"
},
{
"exercise_count": 191,
"name": "chest"
},
{
"exercise_count": 156,
"name": "shoulders"
},
{
"exercise_count": 63,
"name": "lower legs"
},
{
"exercise_count": 40,
"name": "lower arms"
},
{
"exercise_count": 33,
"name": "cardio"
},
{
"exercise_count": 3,
"name": "neck"
}
],
"equipment_count": 28,
"equipments": [
{
"exercise_count": 372,
"name": "body weight"
},
{
"exercise_count": 319,
"name": "dumbbell"
},
{
"exercise_count": 181,
"name": "cable"
},
{
"exercise_count": 170,
"name": "barbell"
},
{
"exercise_count": 91,
"name": "leverage machine"
}
],
"target_muscle_count": 50,
"target_muscles": [
{
"exercise_count": 195,
"name": "abs"
},
{
"exercise_count": 185,
"name": "pectorals"
},
{
"exercise_count": 162,
"name": "glutes"
},
{
"exercise_count": 162,
"name": "biceps"
},
{
"exercise_count": 161,
"name": "triceps"
}
],
"total_exercises": 1500
}