Fitness Exercises
Browse 1,500+ exercises with step-by-step instructions, target muscles, secondary muscles, equipment requirements, and body part filters. Supports full-text search and pagination.
Overview
Use Cases
- Fitness and workout apps
- Personal training platforms
- Health and wellness dashboards
- Exercise recommendation engines
- Gym management software
Features
API Endpoints
List Exercises
Returns a paginated list of exercises. All filter parameters are optional and combinable.
https://api.requiems.xyz/v1/fitness/exercises
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| body_part | string |
Optional | Filter by body part (e.g. chest, back, upper legs). Use /v1/fitness/body-parts for valid values. |
| equipment | string |
Optional | Filter by equipment type (e.g. barbell, dumbbell, body weight). Use /v1/fitness/equipment for valid values. |
| muscle | string |
Optional | Filter by target or secondary muscle (e.g. biceps, glutes). Use /v1/fitness/muscles for valid values. |
| search | string |
Optional | Full-text search on exercise name. |
| page | integer |
Optional | Page number (default: 1) |
| per_page | integer |
Optional | Results per page, 1β100 (default: 20) |
Try it out
Live DemoRequest
Filter by body part (e.g. chest, back, upper legs). Use /v1/fitness/body-parts for valid values.
Filter by equipment type (e.g. barbell, dumbbell, body weight). Use /v1/fitness/equipment for valid values.
Filter by target or secondary muscle (e.g. biceps, glutes). Use /v1/fitness/muscles for valid values.
Full-text search on exercise name.
Page number (default: 1)
Results per page, 1β100 (default: 20)
Response Fields
| Field | Type | Description |
|---|---|---|
| items | array |
Array of exercise objects for the current page |
| items[].id | integer |
Unique exercise identifier |
| items[].name | string |
Exercise name |
| items[].body_parts | array |
Body part categories involved |
| items[].equipment | array |
Equipment required |
| items[].target_muscles | array |
Primary muscles targeted |
| items[].secondary_muscles | array |
Secondary muscles engaged |
| items[].instructions | array |
Ordered step-by-step instructions |
| total | integer |
Total number of exercises matching the filters |
| page | integer |
Current page number |
| per_page | integer |
Number of results per page |
Code Examples
curl "https://api.requiems.xyz/v1/fitness/exercises?body_part=chest&equipment=barbell&per_page=10" \
-H "requiems-api-key: YOUR_API_KEY"
import requests
url = "https://api.requiems.xyz/v1/fitness/exercises"
headers = {"requiems-api-key": "YOUR_API_KEY"}
params = {"body_part": "chest", "equipment": "barbell", "per_page": 10}
response = requests.get(url, headers=headers, params=params)
data = response.json()
for exercise in data["data"]["items"]:
print(exercise["name"])
const params = new URLSearchParams({ body_part: 'chest', equipment: 'barbell', per_page: 10 });
const response = await fetch(`https://api.requiems.xyz/v1/fitness/exercises?${params}`, {
headers: { 'requiems-api-key': 'YOUR_API_KEY' }
});
const { data } = await response.json();
data.items.forEach(e => console.log(e.name));
require 'net/http'
require 'json'
uri = URI('https://api.requiems.xyz/v1/fitness/exercises')
uri.query = URI.encode_www_form(body_part: 'chest', equipment: 'barbell', per_page: 10)
request = Net::HTTP::Get.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)
data['data']['items'].each { |e| puts e['name'] }
Error Responses
A query parameter has an invalid value (e.g. per_page out of range).
Unexpected server error.
Get Exercise by ID
Returns a single exercise by its numeric ID.
https://api.requiems.xyz/v1/fitness/exercises/{id}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer |
Required | Numeric exercise ID |
Try it out
Live DemoRequest
Numeric exercise ID
Response Fields
| Field | Type | Description |
|---|---|---|
| id | integer |
Unique exercise identifier |
| name | string |
Exercise name |
| body_parts | array |
Body part categories involved |
| equipment | array |
Equipment required |
| target_muscles | array |
Primary muscles targeted |
| secondary_muscles | array |
Secondary muscles engaged |
| instructions | array |
Ordered step-by-step instructions |
Code Examples
curl https://api.requiems.xyz/v1/fitness/exercises/1 \
-H "requiems-api-key: YOUR_API_KEY"
import requests
response = requests.get(
"https://api.requiems.xyz/v1/fitness/exercises/1",
headers={"requiems-api-key": "YOUR_API_KEY"}
)
print(response.json()["data"]["name"])
const response = await fetch('https://api.requiems.xyz/v1/fitness/exercises/1', {
headers: { 'requiems-api-key': 'YOUR_API_KEY' }
});
const { data } = await response.json();
console.log(data.name);
require 'net/http'
require 'json'
uri = URI('https://api.requiems.xyz/v1/fitness/exercises/1')
request = Net::HTTP::Get.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
puts JSON.parse(response.body)['data']['name']
Error Responses
The id parameter is not a positive integer.
No exercise exists with the given ID.
Unexpected server error.
Random Exercise
Returns a single randomly selected exercise. Accepts the same filter parameters as the list endpoint, so you can get a random chest exercise, a random bodyweight exercise, etc.
https://api.requiems.xyz/v1/fitness/exercises/random
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| body_part | string |
Optional | Restrict random selection to this body part. |
| equipment | string |
Optional | Restrict random selection to this equipment type. |
| muscle | string |
Optional | Restrict random selection to exercises targeting this muscle. |
| search | string |
Optional | Restrict random selection to exercises matching this search term. |
Try it out
Live DemoRequest
Restrict random selection to this body part.
Restrict random selection to this equipment type.
Restrict random selection to exercises targeting this muscle.
Restrict random selection to exercises matching this search term.
Code Examples
curl "https://api.requiems.xyz/v1/fitness/exercises/random?body_part=back" \
-H "requiems-api-key: YOUR_API_KEY"
import requests
response = requests.get(
"https://api.requiems.xyz/v1/fitness/exercises/random",
headers={"requiems-api-key": "YOUR_API_KEY"},
params={"body_part": "back"}
)
print(response.json()["data"]["name"])
const response = await fetch(
'https://api.requiems.xyz/v1/fitness/exercises/random?body_part=back',
{ headers: { 'requiems-api-key': 'YOUR_API_KEY' } }
);
const { data } = await response.json();
console.log(data.name, data.instructions);
require 'net/http'
require 'json'
uri = URI('https://api.requiems.xyz/v1/fitness/exercises/random')
uri.query = URI.encode_www_form(body_part: 'back')
request = Net::HTTP::Get.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
puts JSON.parse(response.body)['data']['name']
Error Responses
No exercises match the given filters.
Unexpected server error.
List Body Parts
Returns a sorted list of all distinct body part values present in the dataset. Use these as valid values for the body_part filter.
https://api.requiems.xyz/v1/fitness/body-parts
Try it out
Live DemoRequest
Response Fields
| Field | Type | Description |
|---|---|---|
| items | array |
Sorted list of all distinct body part names |
| total | integer |
Total number of distinct body parts |
Code Examples
curl https://api.requiems.xyz/v1/fitness/body-parts \
-H "requiems-api-key: YOUR_API_KEY"
import requests
response = requests.get(
"https://api.requiems.xyz/v1/fitness/body-parts",
headers={"requiems-api-key": "YOUR_API_KEY"}
)
print(response.json()["data"]["items"])
const response = await fetch('https://api.requiems.xyz/v1/fitness/body-parts', {
headers: { 'requiems-api-key': 'YOUR_API_KEY' }
});
const { data } = await response.json();
console.log(data.items);
require 'net/http'
require 'json'
uri = URI('https://api.requiems.xyz/v1/fitness/body-parts')
request = Net::HTTP::Get.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
puts JSON.parse(response.body)['data']['items'].inspect
Error Responses
Unexpected server error.
List Equipment
Returns a sorted list of all distinct equipment types. Use these as valid values for the equipment filter.
https://api.requiems.xyz/v1/fitness/equipment
Try it out
Live DemoRequest
Response Fields
| Field | Type | Description |
|---|---|---|
| items | array |
Sorted list of all distinct equipment names |
| total | integer |
Total number of distinct equipment types |
Code Examples
curl https://api.requiems.xyz/v1/fitness/equipment \
-H "requiems-api-key: YOUR_API_KEY"
import requests
response = requests.get(
"https://api.requiems.xyz/v1/fitness/equipment",
headers={"requiems-api-key": "YOUR_API_KEY"}
)
print(response.json()["data"]["items"])
const response = await fetch('https://api.requiems.xyz/v1/fitness/equipment', {
headers: { 'requiems-api-key': 'YOUR_API_KEY' }
});
const { data } = await response.json();
console.log(data.items);
require 'net/http'
require 'json'
uri = URI('https://api.requiems.xyz/v1/fitness/equipment')
request = Net::HTTP::Get.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
puts JSON.parse(response.body)['data']['items'].inspect
Error Responses
Unexpected server error.
List Muscles
Returns a sorted list of all distinct muscle names (combining target and secondary muscles). Use these as valid values for the muscle filter.
https://api.requiems.xyz/v1/fitness/muscles
Try it out
Live DemoRequest
Response Fields
| Field | Type | Description |
|---|---|---|
| items | array |
Sorted list of all distinct muscle names |
| total | integer |
Total number of distinct muscles |
Code Examples
curl https://api.requiems.xyz/v1/fitness/muscles \
-H "requiems-api-key: YOUR_API_KEY"
import requests
response = requests.get(
"https://api.requiems.xyz/v1/fitness/muscles",
headers={"requiems-api-key": "YOUR_API_KEY"}
)
print(response.json()["data"]["items"])
const response = await fetch('https://api.requiems.xyz/v1/fitness/muscles', {
headers: { 'requiems-api-key': 'YOUR_API_KEY' }
});
const { data } = await response.json();
console.log(data.items);
require 'net/http'
require 'json'
uri = URI('https://api.requiems.xyz/v1/fitness/muscles')
request = Net::HTTP::Get.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
puts JSON.parse(response.body)['data']['items'].inspect
Error Responses
Unexpected server error.