Fast
Served by jsDelivr's global CDN. Aggressive caching at every PoP.
JSON + GIFs served straight from GitHub through the jsDelivr CDN. No keys, no hard limits, no servers. Paste the URL and consume.
Six reasons that make this the laziest API integration of your week.
Served by jsDelivr's global CDN. Aggressive caching at every PoP.
No API keys, no billing, no quotas. Zero friction.
Just JSON files + GIFs. Works from any client.
Each exercise comes with structured names and instructions in English and Spanish.
Endpoints by muscle, equipment, category and body part.
Code and data on GitHub. Forkable and pinnable to a tag.
Everything you need to start consuming the API in less than a minute.
Everything else hangs off this:
https://cdn.jsdelivr.net/gh/JahelCuadrado/ExerciseGymGifsDB@main
Replace @main with @v1.0.0 (or any other tag) to pin a version.
The API has one version per language. Replace {lang} with en or es.
/api/index.jsonGlobal metadata and available languages.
/api/{lang}/index.jsonMetadata for the selected language.
/api/{lang}/muscles.jsonList of muscle groups.
/api/{lang}/muscles/{muscle}.jsonExercises for a muscle group.
/api/{lang}/equipment.jsonList of equipment.
/api/{lang}/equipment/{equipment}.jsonExercises by equipment.
/api/{lang}/bodyparts.jsonList of body parts.
/api/{lang}/bodyparts/{bodyPart}.jsonExercises by body part.
/api/{lang}/categories.jsonList of categories.
/api/{lang}/categories/{category}.jsonExercises by category.
/api/{lang}/exercises.jsonAll exercises.
/api/{lang}/exercises/{muscle}/{slug}.jsonSingle exercise detail.
/{muscle}/{slug}.gifThe original GIF (shared between languages).
The schema is identical across languages; only name and instructions change.
{
"id": "biceps/barbell-curl",
"slug": "barbell-curl",
"name": "Barbell Curl",
"muscle": "biceps",
"bodyPart": "arms",
"equipment": "barbell",
"category": "strength",
"secondaryMuscles": ["forearms"],
"instructions": [
"Load the barbell with an appropriate weight and set up.",
"Engage the biceps before initiating the movement.",
"..."
],
"file": "biceps/barbell-curl.gif",
"gifUrl": "https://cdn.jsdelivr.net/gh/JahelCuadrado/ExerciseGymGifsDB@main/biceps/barbell-curl.gif"
}
const BASE = "https://cdn.jsdelivr.net/gh/JahelCuadrado/ExerciseGymGifsDB@main";
const LANG = "en"; // or "es"
// Biceps exercises in the chosen language
const data = await fetch(`${BASE}/api/${LANG}/muscles/biceps.json`).then(r => r.json());
// Show the first one
const ex = data.exercises[0];
console.log(ex.name); // "Barbell Curl"
console.log(ex.instructions[0]); // "Load the barbell..."
document.body.innerHTML = `<img src="${ex.gifUrl}" alt="${ex.name}" />`;
A random sample served straight from the API.