Integrate WorkoutX API v2 (1,900+ exercises as 720p MP4 animations with male and female models), the AI Workout Generator, and the Body Scan API directly into your codebase with officially supported SDKs.
Node.js and browser library, fully typed with TypeScript. wx.v2 covers the v2 catalog, smart endpoints, workouts and supplements, and freshMedia() keeps media links valid.
npm install @workoutx/sdk
✓ Live on npm — npmjs.com/package/@workoutx/sdk
Python client for backends, data science scripts and AI coaching tools. Hand fresh_media() links to your apps; v2's instructions, tips and anatomical muscle names drop straight into pandas or an LLM prompt.
pip install workoutx-sdk
✓ Live on PyPI — pypi.org/project/workoutx-sdk
Native Swift package for iOS, iPadOS, watchOS, and macOS with async/await and Swift Package Manager. Typed v2 models; loop media.mp4 with AVPlayer.
dependencies: [
.package(url: "https://github.com/furkanuruk/workoutx-sdk-swift", from: "0.1.0")
]
Publishing soon — not yet installable.
Cross-platform Dart package for v2 exercises, AI workout generation and Body Scan in Flutter apps on iOS, Android, web, and desktop. Play media.mp4 with video_player.
flutter pub add workoutx_sdk
Publishing soon — not yet installable.
All four SDKs add wx.v2: 1,900+ exercises as 2,700+ clips, 720p MP4 at 30 fps with a JPEG poster, male and female models linked by counterpartId, and lang in seven languages. The v1 resources and Body Scan stay unchanged in the same client.
Media links are signed, expire after about 24 hours and carry no API key. Store exercise ids, never media URLs, and call freshMedia(id) (Python: fresh_media) when you show an exercise.
Similar exercises, alternatives and calories work on every plan; the workout generator and supplements need Growth or Scale. Start free with 500 requests and watermarked previews.
import { WorkoutX } from "@workoutx/sdk";
const wx = new WorkoutX({ apiKey: process.env.WORKOUTX_API_KEY });
const page = await wx.v2.list({ bodyPart: "chest", limit: 10 });
const ex = page.results[0]; // name, instructions, muscles, counterpartId…
const media = await wx.v2.freshMedia(ex.id); // reuses the links from list(): no request
// <video src={media.mp4} poster={media.poster} autoplay loop muted playsinline>