API Docs
REST + JSON. Bearer token auth. USD pricing. Free tier with 100 req/month.
Authentication
Every request to /v1/* must carry an Authorization: Bearer fed_live_… header. Get a key by signing up — your free tier key is shown in the dashboard immediately.
Code samples
curl
curl -H "Authorization: Bearer fed_live_YOUR_KEY" \
https://api.fitexercisedb.com/v1/exercises/0001javascript
const res = await fetch("https://api.fitexercisedb.com/v1/exercises/0001", {
headers: { Authorization: "Bearer fed_live_YOUR_KEY" },
});
const exercise = await res.json();python
import requests
r = requests.get(
"https://api.fitexercisedb.com/v1/exercises/0001",
headers={"Authorization": "Bearer fed_live_YOUR_KEY"},
)
print(r.json())go
req, _ := http.NewRequest("GET", "https://api.fitexercisedb.com/v1/exercises/0001", nil)
req.Header.Set("Authorization", "Bearer fed_live_YOUR_KEY")
resp, _ := http.DefaultClient.Do(req)ruby
require "net/http"
uri = URI("https://api.fitexercisedb.com/v1/exercises/0001")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer fed_live_YOUR_KEY"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }php
$ch = curl_init("https://api.fitexercisedb.com/v1/exercises/0001");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer fed_live_YOUR_KEY"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$resp = curl_exec($ch);Rate limits
Every authed response carries:
X-RateLimit-Limit— your tier's monthly quotaX-RateLimit-Remaining— quota left this periodX-RateLimit-Reset— date your quota refills
Bursts above your tier's per-second limit return HTTP 429 with a Retry-After header. Free tier also has sequential-ID scrape detection.
Errors
Errors use RFC 7807 problem-details with application/problem+json:
{
"type": "https://fitexercisedb.com/errors/not-found",
"title": "Exercise not found",
"status": 404
}Endpoints
List exercises (paginated, filterable)
Query params
| page | Page number (default 1) |
| pageSize | 1-100, default 50 |
| bodyPart | e.g. Back, Chest, Waist |
| target | Target muscle |
| equipment | e.g. Body Weight, Dumbbell |
200 · response example
{
"data": [
{
"id": "0001",
"name": "3/4 Sit-up",
"bodyPart": "Waist",
"target": "Abs",
"equipment": "Body Weight",
"category": "strength",
"difficulty": "beginner",
"mechanic": "isolation",
"force": "push",
"met": 3.5,
"caloriesPerMinute": 4.3,
"averageCaloriesPerMinute": 4.3,
"averageCaloriesPerHour": 258,
"secondaryMuscles": ["Hip Flexors", "Lower Back"],
"instructions": ["Lie flat on your back…"]
}
],
"pagination": { "page": 1, "pageSize": 50, "total": 1324, "totalPages": 27 }
}Get a single exercise by id
200 · response example
{
"id": "0001",
"name": "3/4 Sit-up",
"bodyPart": "Waist",
"target": "Abs",
"equipment": "Body Weight",
"category": "strength",
"difficulty": "beginner",
"mechanic": "isolation",
"force": "push",
"met": 3.5,
"caloriesPerMinute": 4.3,
"averageCaloriesPerMinute": 4.3,
"averageCaloriesPerHour": 258,
"secondaryMuscles": ["Hip Flexors", "Lower Back"],
"instructions": [
"Lie flat on your back with your knees bent.",
"Place your hands behind your head, elbows out.",
"Engage your abs and curl forward to a 45° torso angle.",
"Pause at the top, then slowly lower back to start.",
"Repeat for the desired number of repetitions."
],
"_links": {
"self": { "href": "/v1/exercises/0001" },
"related": { "href": "/v1/exercises/0001/related" },
"calories": {
"href": "/v1/exercises/0001/calories{?bodyweightKg,minutes}",
"templated": true
},
"marketplacePreview": { "href": "/marketplace/preview/0001.gif" }
}
}Full-text search across name, target, equipment
200 · response example
{
"data": [
{ "id": "0024", "name": "Barbell Squat", "target": "Quads", "equipment": "Barbell" },
{ "id": "0033", "name": "Barbell Decline Bench Press", "target": "Pectorals", "equipment": "Barbell" }
],
"pagination": { "page": 1, "pageSize": 50, "total": 24, "totalPages": 1 }
}Estimate calories burned from MET × bodyweight × duration
Query params
| bodyweightKg | 30-250 kg, required |
| minutes | 1-600, required |
200 · response example
{
"exerciseId": "0001",
"met": 3.5,
"bodyweightKg": 80,
"minutes": 20,
"kcal": 93.33
}Return one random exercise
200 · response example
{
"id": "0549",
"name": "Kettlebell Swing",
"bodyPart": "Upper Legs",
"target": "Glutes",
"equipment": "Kettlebell",
"category": "strength",
"difficulty": "intermediate",
"mechanic": "compound",
"force": "push",
"met": 7.5,
"caloriesPerMinute": 8.8,
"averageCaloriesPerMinute": 8.8,
"averageCaloriesPerHour": 528
}Top 50 exercises by usage (LEFT JOIN on usage_events; falls back to id ASC)
200 · response example
{
"data": [
{ "id": "0089", "name": "Bench Press", "bodyPart": "Chest", "target": "Pectorals", "calls": 4127 },
{ "id": "0024", "name": "Barbell Squat", "bodyPart": "Upper Legs", "target": "Quads", "calls": 3884 },
{ "id": "0118", "name": "Deadlift", "bodyPart": "Upper Legs", "target": "Glutes", "calls": 3501 }
]
}List curated workouts (paginated, filterable)
Query params
| page | Page number (default 1) |
| pageSize | 1-100, default 25 |
| level | beginner | intermediate | advanced |
| category | push | pull | legs | full_body | core | hiit | cardio | recovery |
| maxDurationMinutes | Cap on session duration |
| equipment | Match if any in equipment_needed |
200 · response example
{
"data": [
{
"id": "wk_beginner_full_body",
"name": "Beginner Full Body",
"slug": "beginner-full-body",
"description": "Eight-exercise full-body intro using minimal equipment for new lifters.",
"level": "beginner",
"durationMinutes": 45,
"category": "full_body",
"equipmentNeeded": ["Body Weight", "Dumbbell"]
}
],
"pagination": { "page": 1, "pageSize": 25, "total": 16 }
}Workout with embedded exercise list (sets, reps, rest, position)
200 · response example
{
"id": "wk_beginner_full_body",
"name": "Beginner Full Body",
"level": "beginner",
"durationMinutes": 45,
"category": "full_body",
"exercises": [
{ "position": 1, "id": "0007", "name": "Balance Board", "target": "Abs", "sets": 3, "reps": 12, "restSeconds": 60 },
{ "position": 2, "id": "0009", "name": "Chest Dip", "target": "Pectorals", "sets": 3, "reps": 10, "restSeconds": 60 },
{ "position": 3, "id": "0364", "name": "Dumbbell One Arm Bent-over Row", "target": "Lats", "sets": 3, "reps": 10, "restSeconds": 60 },
{ "position": 4, "id": "0066", "name": "Bench Hip Extension", "target": "Glutes", "sets": 3, "reps": 12, "restSeconds": 60 },
{ "position": 5, "id": "0367", "name": "Dumbbell Alternate Side Press", "target": "Delts", "sets": 3, "reps": 10, "restSeconds": 60 },
{ "position": 6, "id": "0001", "name": "3/4 Sit-up", "target": "Abs", "sets": 3, "reps": 15, "restSeconds": 45 }
]
}List multi-week training programs (paginated, filterable)
Query params
| page | Page number (default 1) |
| pageSize | 1-100, default 25 |
| level | beginner | intermediate | advanced |
| goal | strength | hypertrophy | fat_loss | endurance | mobility |
200 · response example
{
"data": [
{
"id": "pg_beginner_strength_4w",
"name": "4-Week Beginner Strength",
"slug": "4-week-beginner-strength",
"description": "Three full-body sessions per week to build foundational strength with minimal equipment.",
"weeks": 4,
"level": "beginner",
"goal": "strength",
"daysPerWeek": 3
}
],
"pagination": { "page": 1, "pageSize": 25, "total": 6 }
}Program with embedded week×day schedule of workout summaries
200 · response example
{
"id": "pg_beginner_strength_4w",
"name": "4-Week Beginner Strength",
"weeks": 4,
"level": "beginner",
"goal": "strength",
"daysPerWeek": 3,
"schedule": [
{ "week": 1, "day": 1, "workout": { "id": "wk_beginner_full_body", "name": "Beginner Full Body" } },
{ "week": 1, "day": 2, "workout": { "id": "wk_park_bodyweight", "name": "Bodyweight Park Workout" } },
{ "week": 1, "day": 3, "workout": { "id": "wk_beginner_full_body", "name": "Beginner Full Body" } }
]
}List of all body parts (10 entries)
200 · response example
{
"data": ["Back", "Cardio", "Chest", "Lower Arms", "Lower Legs", "Neck", "Shoulders", "Upper Arms", "Upper Legs", "Waist"]
}Equipment taxonomy
200 · response example
{
"data": ["Assisted", "Band", "Barbell", "Body Weight", "Bosu Ball", "Cable", "Dumbbell", "Kettlebell", "Leverage Machine", "Smith Machine", "Stability Ball", "Stationary Bike", "Trap Bar", "Vibrate Plate"]
}Target muscle taxonomy
200 · response example
{
"data": ["Abs", "Adductors", "Biceps", "Calves", "Cardiovascular System", "Delts", "Forearms", "Glutes", "Hamstrings", "Lats", "Levator Scapulae", "Pectorals", "Quads", "Serratus Anterior", "Spine", "Traps", "Triceps", "Upper Back"]
}Current key info: tier, quota used, quota limit, reset date
200 · response example
{
"keyPrefix": "fed_live_xR8tQk2p",
"tier": "starter",
"quotaUsed": 1247,
"quotaLimit": 10000,
"resetAt": "2026-05-25"
}