MuscleWiki API vs ExerciseAPI.dev

ExerciseAPI.dev is a hosted exercise catalogue spanning twelve training disciplines, sold direct on daily request quotas, with video demos being added a batch at a time.

ExerciseAPI.dev advertises "2,199 movements across 12 disciplines", a wider catalogue than our 1,943, and it reaches into yoga, pilates, Olympic lifting and strongman where we do not. The difference is what a row contains: their own documentation says "Most exercises today return videos: []" and that "only a small set of demos have clips so far", and their home page counts 150 exercises with video demos. Ours carry 7,766 MP4 clips: 4 for every exercise, male and female footage from the front and the side. We also serve 14 languages where their published schema documents no language parameter, and curated routines and workouts where their endpoint list has none.

Sources: ExerciseAPI.dev: catalogue and video-demo counts, plans, caching rule, ExerciseAPI.dev: endpoint and response-schema reference, ExerciseAPI.dev: published endpoint and schema contract

Every claim about another vendor on this page was fetched from that vendor’s own public documentation. This one was verified 14 September 2026. Figures change; if you are reading this long after that date, check the linked sources before you rely on it.

Side by side

Every figure in the ExerciseAPI.dev column links to the page we read it on. Where we could not fetch a fact from a public source, there is no row for it.

The MuscleWiki API and ExerciseAPI.dev compared across 12 axes, with a source link for every claim about ExerciseAPI.dev.
AxisMuscleWiki APIExerciseAPI.dev
Exercises in the catalogue1,943 (counted from the data we serve, 10 September 2026)"2,199 movements across 12 disciplines"Source: ExerciseAPI.dev: catalogue and video-demo counts, plans, caching rule
Exercises that actually carry videoAll 1,943150 by the counter on their home page. Their reference adds: "Most exercises today return videos: []" and "only a small set of demos have clips so far"Sources: ExerciseAPI.dev: catalogue and video-demo counts, plans, caching rule, ExerciseAPI.dev: endpoint and response-schema reference
Video per exercise7,766 MP4 clips: 4 for every exercise, male and female, front and side. Every clip carries a matching thumbnailOne clip where one exists, MP4 at 496x864, mostly 9:16 vertical with some 16:9 landscape. No gender variant and no second camera angle in the schemaSources: ExerciseAPI.dev: endpoint and response-schema reference, ExerciseAPI.dev: catalogue and video-demo counts, plans, caching rule
Still imagesOne thumbnail per video (7,766), plus 15,144 bodymap images highlighting the muscles a movement works (Professional plan or higher)An images array of relative paths, which the client resolves against a base URL rather than requesting directlySource: ExerciseAPI.dev: endpoint and response-schema reference
Languages14 languages at parity: every exercise carries its name in all 14 and returns the same instruction steps in all 14, so no language returns a thinner record than English (non-English needs the Growth plan or higher)No language parameter and no translated field in their published schema or their llms.txt contractSources: ExerciseAPI.dev: published endpoint and schema contract, ExerciseAPI.dev: endpoint and response-schema reference
Routines and workouts32 curated routines and 92 workouts as read-only API resources, with sets, reps and exercise references (Professional plan or higher)Their published contract lists seven endpoints: exercises, one exercise, muscles, equipment, categories, stats and health. No routine or workout resourceSource: ExerciseAPI.dev: published endpoint and schema contract
Metering model500 a month free (Playground only), then 1,000 at $10 up to 300,000 at $199.99 a monthA daily request quota plus a per-minute rate limit on every plan, from 100 a day and 60 a minute upwardSource: ExerciseAPI.dev: quotas, per-minute limits and overage billing
What happens at the ceilingA 429 with Retry-After. There is no overage billing on any plan, and usage alerts at 80%, 90% and 100% of the monthly quota, 80% and 100% on a Custom plan"Requests past your daily quota are billed at $0.002 each and added to your next Stripe invoice", up to "a safety cap at 10x the daily limit"; the free plan hard-blocks insteadSource: ExerciseAPI.dev: quotas, per-minute limits and overage billing
Results per requestUp to 100 on every plan, with full records rather than names20 on Free, 50 on Starter, 100 on Pro and Business. Free-tier paging depth is also capped at offset + limit <= 500Source: ExerciseAPI.dev: quotas, per-minute limits and overage billing
Caching rightsStable, deterministic media URLs. Caching allowance: text metadata up to 30 days, thumbnails 24 hours on-device only, video and bodymaps served no-storeTheir guidance is a 24-hour local TTL, and their home page adds: "Do not redistribute or re-serve cached data to other users. The cache is per-device, per-installation only"Sources: ExerciseAPI.dev: published endpoint and schema contract, ExerciseAPI.dev: catalogue and video-demo counts, plans, caching rule
AuthenticationA single X-API-Key header on every request. Your server can exchange that key for a short-lived media token, so a native player fetches /stream/ URLs with no header and the key never ships inside an app binaryAn X-API-Key header carrying an exlib_ key; GET /v1/health is the only unauthenticated routeSource: ExerciseAPI.dev: published endpoint and schema contract
MCP server for AI agentsFirst-party MCP server, npx @musclewiki/mcp, which forwards every call to the API using your own keyFirst-party MCP server, @exerciseapi/mcp-server, which their documentation tells agents to prefer over the REST APISource: ExerciseAPI.dev: published endpoint and schema contract

Sources for our column

Exercise, video, language and bodymap counts all come from the dataset the API serves. Every figure in the ExerciseAPI.dev column links to the page it came from, in the cell that makes the claim.

Where the MuscleWiki API and ExerciseAPI.dev differ

The handful of differences that actually decide it, and what each one costs whoever picks the other side.

More rows, and their docs say what is inside most of them
They advertise "2,199 movements across 12 disciplines" against our 1,943, so on breadth they are ahead, and a product that needs yoga or Olympic lifting will find it there and not here. On video their own reference is candid: "Most exercises today return videos: []", and "only a small set of demos have clips so far". Their home-page counter reads 150. Every one of our 1,943 has video, 7,766 clips in all.Sources: ExerciseAPI.dev: catalogue and video-demo counts, plans, caching rule, ExerciseAPI.dev: endpoint and response-schema reference
One clip, one angle, when there is one
Their video objects carry url, format, resolution and aspectRatio, and their notes say most clips are 9:16 vertical with some 16:9 landscape. Ours are shot to one specification: male and female, front and side. That is the difference between showing a movement and letting someone check their own form against it.Sources: ExerciseAPI.dev: endpoint and response-schema reference, ExerciseAPI.dev: published endpoint and schema contract
Their quota is a daily budget with an invoice attached
Their limits page says "Requests past your daily quota are billed at $0.002 each and added to your next Stripe invoice", and adds "a safety cap at 10x the daily limit". A daily quota also makes one bad Tuesday a billing event rather than a slow month. Ours is a monthly ceiling with no overage: at the limit you get a 429 and Retry-After, and the number on the invoice is the number on the plan.Source: ExerciseAPI.dev: quotas, per-minute limits and overage billing
No language parameter in their published contract
Between them, their llms.txt and their schema reference document every endpoint, response field and error code. Neither carries a language parameter or a translated field. We serve 14 languages at parity: every exercise carries its name in all 14 and returns the same instruction steps in all 14, so no language returns a thinner record than English (non-English needs the Growth plan or higher).Sources: ExerciseAPI.dev: published endpoint and schema contract, ExerciseAPI.dev: endpoint and response-schema reference
Seven endpoints, none of them a routine
Their published contract lists exercises, a single exercise, muscles, equipment, categories, stats and health. Programmed training is not in it. We publish 32 curated routines and 92 workouts as read-only resources with sets, reps and exercise references (Professional plan or higher). The difference is shipping a workout against shipping a search box over exercises.Source: ExerciseAPI.dev: published endpoint and schema contract
Both sides ship an MCP server
Their documentation advertises @exerciseapi/mcp-server and tells agents to prefer it over the REST API, so a first-party MCP server is not something we have to ourselves. Ours, npx @musclewiki/mcp, is a thin pass-through: it calls the API with your own key, so nothing about your plan, your quota or your terms changes when the caller happens to be an agent.Source: ExerciseAPI.dev: published endpoint and schema contract
Why there is no price row on this page
Same reason as the API Ninjas comparison: this page does not put the two monthly prices side by side. A catalogue where most records return an empty video array and a library of filmed demonstrations are not the same purchase. Their plans are published on their own site; the metering rows in the table compare the two models rather than ranking them.Sources: ExerciseAPI.dev: catalogue and video-demo counts, plans, caching rule, ExerciseAPI.dev: quotas, per-minute limits and overage billing

Moving an existing ExerciseAPI.dev integration to us

What actually changes in your code.

The media is the migration
Their records mostly return an empty videos array, so whatever fallback your UI shows when there is no clip can come out. Every exercise here has video, and each entry carries url, angle, gender and og_image, so the new work is choosing which of the 4 to show rather than handling the case where there are none.Source: ExerciseAPI.dev: endpoint and response-schema reference
Map the fields
primaryMuscles becomes our primary_muscles and equipment becomes category. Their instructions maps to our steps; exerciseTips, commonMistakes, safetyInfo and overview have no direct equivalent in our schema. images, which they return as relative paths, becomes an absolute og_image on each video entry.Source: ExerciseAPI.dev: endpoint and response-schema reference
Re-plan the quota, not just the key
The header name is the same, so auth is close to a no-op. The metering is not: a daily quota plus a per-minute limit becomes one monthly ceiling, which is a different capacity plan and a different failure mode. Delete the overage budget line while you are there.Source: ExerciseAPI.dev: quotas, per-minute limits and overage billing
Add the lang parameter
Every data endpoint takes lang, and all 14 languages return the same fields. Their contract has no equivalent, so whatever you built to work around that, a translation service or an English-only UI, has nothing left to do. Non-English needs the Growth plan or higher.Source: ExerciseAPI.dev: published endpoint and schema contract

You can try every endpoint in the Playground before you commit, read the documentation, or check what each plan reaches on pricing.

Other comparisons