Static API · Free · No backend

1323
gym exercises
ready to lift

JSON + GIFs served straight from GitHub through the jsDelivr CDN. No keys, no hard limits, no servers. Paste the URL and consume.

Player 01 Free Forever
1323Exercises
19Muscles
11Equipment
4Categories
Round 01 / Why

No excuses

Six reasons that make this the laziest API integration of your week.

01

Fast

Served by jsDelivr's global CDN. Aggressive caching at every PoP.

02
🆓

Free

No API keys, no billing, no quotas. Zero friction.

03
📦

Static

Just JSON files + GIFs. Works from any client.

04
🌍

Bilingual

Each exercise comes with structured names and instructions in English and Spanish.

05
🎯

Filterable

Endpoints by muscle, equipment, category and body part.

06
🔓

Open source

Code and data on GitHub. Forkable and pinnable to a tag.

Round 02 / Playbook

Playbook

Everything you need to start consuming the API in less than a minute.

Base URL

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.

Endpoints

The API has one version per language. Replace {lang} with en or es.

GET/api/index.json

Global metadata and available languages.

GET/api/{lang}/index.json

Metadata for the selected language.

GET/api/{lang}/muscles.json

List of muscle groups.

GET/api/{lang}/muscles/{muscle}.json

Exercises for a muscle group.

GET/api/{lang}/equipment.json

List of equipment.

GET/api/{lang}/equipment/{equipment}.json

Exercises by equipment.

GET/api/{lang}/bodyparts.json

List of body parts.

GET/api/{lang}/bodyparts/{bodyPart}.json

Exercises by body part.

GET/api/{lang}/categories.json

List of categories.

GET/api/{lang}/categories/{category}.json

Exercises by category.

GET/api/{lang}/exercises.json

All exercises.

GET/api/{lang}/exercises/{muscle}/{slug}.json

Single exercise detail.

GET/{muscle}/{slug}.gif

The original GIF (shared between languages).

Exercise schema

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"
}

Allowed values

  • bodyPart arms · legs · chest · back · core · shoulders · cardio
  • equipment barbell · dumbbell · cable · machine · bodyweight · band · kettlebell · smith · ez-bar · lever · other
  • category strength · stretching · cardio · plyometrics

Usage example

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}" />`;
Round 03 / Live training

Playground

Build a request and see the live response.

URL Open ↗
Press “Send GET” to see the response.