How to Integrate the ExerciseDB API (2026)
Last verified July 9, 2026 · 6 min read
Covered here:ExerciseDB
Heads up: "ExerciseDB" is two different things#
Before you write any code, know that the name ExerciseDB is ambiguous and points at two separate products that even share the same media CDN:
- The commercial RapidAPI listing — host
exercisedb.p.rapidapi.com, accessed with a RapidAPI key. This is what most tutorials (and this one) mean, and it is the fastest way to get running. - AscendAPI's ExerciseDB V1 and V2 — exercisedb.dev now presents itself as AscendAPI ("Previously ExerciseDB"). V1 has a free hosted tier at
oss.exercisedb.devthat needs no key, and V1's paid tier and V2 run through AscendAPI's own RapidAPI listings, on different hosts. Their repository,github.com/ExerciseDB/exercisedb-api, held only a README and an AGPL-3.0 LICENSE file when we cloned it on October 22, 2026, so there is nothing in it to self-host. These APIs use their own endpoint shapes and field names, which do not match the RapidAPI paths below.
Pick one and code strictly to its docs. Do not assume a path from one works on the other. This guide covers the original RapidAPI listing; the section near the end shows AscendAPI's endpoints. We could not establish whether the two are the same publisher. For a wider comparison of options, see our exercise database APIs roundup; every page on this site that covers ExerciseDB is listed in the ExerciseDB API overview.
What you'll need#
- A RapidAPI account (free to create).
- A subscription to the ExerciseDB listing on RapidAPI — even the free tier requires subscribing so your key is authorized for the API.
- Your RapidAPI key, which RapidAPI issues per account and shows on the listing's endpoint page.
That is the whole checklist. No app-approval step, no partner program.
Step 1: Subscribe on RapidAPI and copy your key#
Sign in to RapidAPI, open the ExerciseDB listing, and subscribe to a plan (a free tier exists but is small — see the pricing note below). Once subscribed, the listing's "Endpoints" tab shows your X-RapidAPI-Key value. Every request you make will carry two headers:
X-RapidAPI-Key: YOUR_RAPIDAPI_KEYX-RapidAPI-Host: exercisedb.p.rapidapi.com
The host header is required by RapidAPI on every proxied call — omitting it returns an error even when the key is valid.
Step 2: Make your first request#
Fetch exercises for a body part. The bodyPart path segment accepts values like back, chest, legs, and so on:
curl -X GET 'https://exercisedb.p.rapidapi.com/exercises/bodyPart/back?limit=10&offset=0' \
-H 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
-H 'X-RapidAPI-Host: exercisedb.p.rapidapi.com'
The same in JavaScript with fetch:
const res = await fetch(
'https://exercisedb.p.rapidapi.com/exercises/bodyPart/back?limit=10&offset=0',
{
method: 'GET',
headers: {
'X-RapidAPI-Key': process.env.RAPIDAPI_KEY,
'X-RapidAPI-Host': 'exercisedb.p.rapidapi.com',
},
}
);
const exercises = await res.json();
Each exercise object returns these fields:
| Field | Description |
|---|---|
id | Stable identifier for the exercise |
name | Exercise name |
bodyPart | Broad body region (e.g. back) |
target | Primary target muscle (e.g. lats) |
equipment | Required equipment (e.g. cable) |
gifUrl | Animated demo, e.g. https://static.exercisedb.dev/media/EIeI8Vf.gif |
Newer versions of the listing may also include secondaryMuscles and instructions arrays — verify against the current listing before relying on them.
Step 3: Query by the axis your app needs#
The listing exposes a small, predictable set of endpoints. The three you will use most:
| Purpose | Method + path |
|---|---|
| All exercises | GET /exercises |
| By body part | GET /exercises/bodyPart/{bodyPart} |
| By target muscle | GET /exercises/target/{target} |
For example, pull every exercise that targets a specific muscle:
curl -X GET 'https://exercisedb.p.rapidapi.com/exercises/target/biceps?limit=10&offset=0' \
-H 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
-H 'X-RapidAPI-Host: exercisedb.p.rapidapi.com'
GET /exercises and the filtered endpoints accept limit and offset pagination params — verify the current defaults and maximums on the listing, since a bare GET /exercises can otherwise return a large payload. The listing also documents additional filter and list endpoints (by equipment, by name, by id, and list-of-values helpers like body parts and targets); confirm their exact paths on the current listing before wiring them in, as they have varied across versions.
Step 4: Cache the catalog and display the GIFs#
ExerciseDB data is a reference catalog — it changes rarely — so treat it that way:
- Cache aggressively. Fetch once, store the exercises in your own database, and refresh on a schedule rather than calling the API on every user request. This is the single biggest lever on both latency and your rate-limit budget.
- Serve
gifUrlthrough your own layer (proxy or re-host where the license allows) so a change to the upstream CDN does not break your UI. - Key your local records on
idso you can map favorites, workout plans, and history to a stable reference.
With the catalog cached, wiring it into a workout builder is straightforward — see our guide to building a strength-training app for how the exercise catalog, sets/reps, and progression fit together.
AscendAPI's ExerciseDB V1 and V2 (formerly exercisedb.dev)#
AscendAPI's documentation, read on October 22, 2026, describes two exercise APIs under the ExerciseDB name.
ExerciseDB V1, free tier. "1,500 exercises with 180p GIFs. No authentication required, just call the hosted API directly":
curl 'https://oss.exercisedb.dev/api/v1/exercises'
The response wraps records in success, meta and data. When our snapshot runner called it, meta reported a total of 1,500 with hasNextPage and a nextCursor for the next page, and each record carried exerciseId, name, gifUrl, bodyParts, equipments, targetMuscles, secondaryMuscles and instructions. Note the plural arrays, where the RapidAPI listing above returns single bodyPart, target and equipment values. A paid V1 tier on RapidAPI (host edb-with-gifs-and-images-by-ascendapi.p.rapidapi.com) adds 360p to 1080p images and GIFs, difficulty levels and exercise types.
ExerciseDB V2. RapidAPI only, with an MP4 demonstration video per exercise in videoUrl. AscendAPI's quickstart subscribes to the free Basic plan (2,000 requests a month, 200 exercises, images and videos, no credit card) and makes this first request:
curl 'https://edb-with-videos-and-images-by-ascendapi.p.rapidapi.com/api/v1/exercises/search?search=chest%20press' \
-H 'x-rapidapi-host: edb-with-videos-and-images-by-ascendapi.p.rapidapi.com' \
-H 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'
Free-tier V2 media is watermarked, AscendAPI's free plans are limited to 1,000 requests per hour per key, and paid prices are on its RapidAPI listings, which we could not read. Formats and resolutions are covered in how ExerciseDB V2 serves MP4 video.
Neither is self-hostable: the repository has no API code. If you would rather own the data, compare the public-domain alternative, free-exercise-db, or see ExerciseDB alternatives for wger.
Gotchas and production notes#
- Free tier is tiny. The free plan on the original RapidAPI listing has been reported at roughly ~10 requests/day — enough to prototype, not to run in production; we could not re-read that listing on October 22, 2026. AscendAPI documents its own free limits: 1,000 requests per hour per key on free plans, and 2,000 requests a month on the V2 Basic plan. Plan around caching either way.
- Both headers are mandatory. Missing or wrong
X-RapidAPI-Hostfails the request even with a valid key. - Don't mix the ExerciseDB hosts. The RapidAPI listing's paths will not work against AscendAPI's endpoints, and vice versa.
- Keep your key server-side. Never ship
X-RapidAPI-Keyin client-side web code; proxy requests through your backend. - Field list can drift. Treat
secondaryMuscles/instructionsand the extra filter endpoints as "verify against current docs" rather than guaranteed.
For where ExerciseDB fits among other catalog and movement-data providers, see our exercise database APIs comparison.
Frequently asked questions
- Does ExerciseDB require OAuth or an approval process?
- No. The RapidAPI listing uses simple API-key auth with no OAuth flow and no partner-approval step. You just create a RapidAPI account, subscribe to the listing, and send your key in headers.
- What headers does the ExerciseDB RapidAPI listing require?
- Every request needs two headers: X-RapidAPI-Key with your key, and X-RapidAPI-Host set to exercisedb.p.rapidapi.com. The host header is mandatory on RapidAPI-proxied calls, and requests fail without it even if the key is valid.
- Is ExerciseDB free?
- Yes, to start. As of October 22, 2026, AscendAPI's ExerciseDB V1 is free with no key at oss.exercisedb.dev (1,500 exercises, 180p GIFs), and its ExerciseDB V2 has a free Basic plan on RapidAPI with 2,000 requests a month and 200 exercises, with watermarked media. The free tier on the original RapidAPI listing this guide covers has been reported as very small, and we could not re-read it, so verify its current quota on the listing.
- What is the difference between the RapidAPI ExerciseDB and exercisedb.dev?
- exercisedb.dev now presents itself as AscendAPI, previously ExerciseDB. It serves ExerciseDB V1 free with no key at oss.exercisedb.dev and sells V1 and V2 through its own RapidAPI listings, on hosts such as edb-with-videos-and-images-by-ascendapi.p.rapidapi.com, with plural fields like bodyParts and targetMuscles. The original RapidAPI listing at exercisedb.p.rapidapi.com uses different paths and single bodyPart and target fields. We could not establish whether they share a publisher, so code to one set of docs and do not mix the paths.
- What data does each ExerciseDB exercise return?
- Each exercise object includes id, name, bodyPart, target, equipment, and an animated gifUrl. Newer listing versions may add secondaryMuscles and instructions arrays, but verify those against the current docs before relying on them.
Keep reading
Elsewhere on the site
Pages that share this one’s concepts and sources, from other sections.
Next steps
Was this page useful?
Independent comparison, last reviewed July 9, 2026. Pricing, rate limits, and feature availability change often — confirm current details in each provider’s official documentation before you commit. Product and company names are trademarks of their respective owners; AIFitnessAPI is not affiliated with, endorsed by, or sponsored by any product listed here.
← All integration guides · by AIFitnessAPI