# Wandura Docs Wandura is a studio for short drama films. These docs are for three groups of people: developers who stream Wandura films in their own apps, teams who work with Wandura through the partner portal, and creators who make films on Wandura. ## Start here | If you want to… | Read | |---|---| | Make your first API call | [Quickstart](https://docs.wandura.ai/developers/quickstart) | | Get an API key | [Authentication](https://docs.wandura.ai/developers/authentication) | | Look up an endpoint | [API reference](https://docs.wandura.ai/developers/reference/overview) | | Invite a teammate or change a role | [Roles](https://docs.wandura.ai/partners/roles) | | Make your first film | [Your first film](https://docs.wandura.ai/creators/first-film) | ## Need help? If something is unclear or not working, ask in your team's Wandura Discord channel. See [Support](https://docs.wandura.ai/developers/help/support). --- # Wandura Delivery API Wandura lets your app play the short-drama films and fitness clips your organisation has licensed. Wandura copies them into **your own video space** on its video platform. Your server reads that space with its own key and hands playback links to your app; films play with the Player SDK. The Delivery API gives your backend what the space does not hold: your licensed catalog and its metadata, a feed of your approved ad creatives, and your configuration. How the pieces fit: [Your own video space](https://docs.wandura.ai/developers/concepts/own-space). > **Note:** The ticket path (`POST /playback`, one ticket per episode) and the open video path are frozen. They keep working for apps already on them, but new integrations use their own space. ## What the API gives you | Capability | Endpoint | What you get | |---|---|---| | Licensed catalog | `GET /api/delivery/v1/catalog` | Every film and episode you may stream now: display order, free-episode rule, readiness per episode. Metadata only. | | Playback tickets (frozen) | `POST /api/delivery/v1/playback` | Up to 3 tickets per call (an episode and the next two), each valid 30 minutes, with the episode's subtitles. For apps already on this path. | | Creatives feed | `GET /api/delivery/v1/creatives`, `GET /api/delivery/v1/creatives/{id}` | A record per approved ad creative of your organisation. | | Open video (frozen) | `GET /api/delivery/v1/videos`, `GET /api/delivery/v1/videos/{id}` | Signed MP4 links for content with no rights to protect. For apps already on this path. | | Configuration | `GET /api/delivery/v1/config` | Your limits, versions, playback settings and deprecations, for your key. | Base URL: `https://www.wandura.ai` (with `www`). Server-to-server only. Everything you can rely on, in one place: [Canonical API behaviour](https://docs.wandura.ai/developers/reference/behaviour). ## Where to start ## The API at a glance | Topic | Read | |---|---| | Keys and scopes | [Authentication](https://docs.wandura.ai/developers/authentication) | | Keeping it safe | [Security](https://docs.wandura.ai/developers/concepts/security) | | What can go wrong | [Errors](https://docs.wandura.ai/developers/concepts/errors), [Rate limits](https://docs.wandura.ai/developers/concepts/rate-limits) | | The app side | [Player SDK](https://docs.wandura.ai/developers/player-sdk) | | Testing | [Testing](https://docs.wandura.ai/developers/guides/testing) | | Going live | [Go-live checklist](https://docs.wandura.ai/developers/production/go-live) | | Every endpoint | [API reference](https://docs.wandura.ai/developers/reference/overview) | | What changed | [Changelog](https://docs.wandura.ai/changelog) | --- # Before you start > **TL;DR** — Before coding, your team needs: an organisation on partner.wandura.ai with licences for your films, **your own video space** set up by Wandura, a **Player SDK licence** for each app that plays films (your organisation pays; list price about **US$2,860 per app per year** for iOS + Android), and your **final** app IDs. Onboarding happens in your team's own Wandura Discord channel. You can make your first API calls before your space and the Player SDK are ready; playing a film episode needs both. > **Note:** Showing only fitness clips? In [your own video space](https://docs.wandura.ai/developers/concepts/own-space#formats) they play with any standard player, so you need no Player SDK licence. The older [open video](https://docs.wandura.ai/developers/concepts/open-video) path is frozen. ## 1. Prepare (no code yet) | Ready? | Item | Why | |---|---|---| | ☐ | Your organisation name and the email of its **Admin** | Every key and licence belongs to the organisation | | ☐ | Emails of your backend developers | They get the **Developer** role to manage keys ([Roles](https://docs.wandura.ai/partners/roles)) | | ☐ | The films and licence dates in your agreement | The catalog shows only films whose licence is active | | ☐ | **Final** iOS bundle ID and Android package name | The Player SDK licence is bound to them and cannot be moved later | | ☐ | Budget and start date for the Player SDK licence | See [Player SDK](https://docs.wandura.ai/developers/player-sdk) | | ☐ | Your expected peak: plays per minute at launch | Wandura checks your limits against it before go-live | | ☐ | Whether you need usage numbers per app | Each app then needs its own playback domain, set up with your space: [Usage and cost](https://docs.wandura.ai/developers/concepts/own-space#usage) | ## 2. Get onboarded Each partner team works with Wandura in **its own Discord channel**. Your Wandura contact invites your team to it when your agreement is signed; if you have no access yet, ask the person who signed the agreement. Onboarding runs in these steps: | Step | What happens | What you send | |---|---|---| | 1. Ask | You post in your channel that you are ready to integrate. | Organisation name, Admin email. | | 2. Organisation and members | Wandura creates your organisation on [partner.wandura.ai](https://partner.wandura.ai) and invites your Admin and developers. | Developer emails. | | 3. Film licences | Wandura licenses your films to your organisation. | The film list from your agreement. | | 4. Your own video space | Wandura sets up your space, your playback domain and your space key, and copies your licensed content into it. | Whether you need one playback domain per app. | | 5. Test organisation | Wandura creates your test organisation next to your real one. | Ask for it in your channel. | | 6. Player SDK trial | Wandura registers your app IDs and issues a trial licence. You get the step-by-step Player SDK guide on the portal. | Final bundle ID and package name. | | 7. Your API keys | Your developers create their own Wandura API keys on **Developers**, for example to sync the catalog. | Nothing. | | 8. Go-live | Paid Player SDK licence, limit review, production keys. | See [Go-live checklist](https://docs.wandura.ai/developers/production/go-live). | Every partner gets a **test organisation** next to its real one: sample films only, plays never counted as views or usage, and errors you can trigger on demand with the `Wandura-Simulate` header. See [Testing](https://docs.wandura.ai/developers/guides/testing). ## 3. What you can do before the Player SDK is ready | Possible from day one | Needs the Player SDK on a real device | |---|---| | Create keys, read `GET /config` | Play a film episode from your space | | Build and run the catalog sync job | Test subtitles, expiry and recovery | | Build your paywall and episode screens | | | Sync creatives | | Start with [Quickstart · Part A](https://docs.wandura.ai/developers/quickstart#part-a). ## 4. The Player SDK licence Licensed episodes are encrypted and play only through the Player SDK. Wandura registers your app IDs and issues the licence; your organisation pays for it. Price, tiers, versions, platforms and prerequisites: [Player SDK overview and licence](https://docs.wandura.ai/developers/player-sdk). ## 5. What you will build | Backend | App | |---|---| | [Catalog sync job](https://docs.wandura.ai/developers/guides/catalog-sync) | Player SDK integration ([iOS](https://docs.wandura.ai/developers/player-sdk/ios), [Android](https://docs.wandura.ai/developers/player-sdk/android)) | | [Playback links from your space, behind your paywall](https://docs.wandura.ai/developers/concepts/own-space#how-it-works) | Calling your backend, playing the link | | [Safe logging and monitoring](https://docs.wandura.ai/developers/production/observability) | [Subtitles from your space](https://docs.wandura.ai/developers/concepts/own-space#metadata) | The whole path, in order: [Integration roadmap](https://docs.wandura.ai/developers/integration-guide). --- # Quickstart > **TL;DR** — **Part A** (about 5 minutes, server only): create a key, read your configuration, list your catalog. Then [play from your own video space](https://docs.wandura.ai/developers/quickstart#own-space), which is how new integrations play films. **Part B** is for apps already on the frozen ticket path: get a first ticket and play an episode on a real phone. Every command in Part A uses one environment variable, `WANDURA_API_KEY`. Part B adds `UNION_INFO` and `DRM_KEK`, copied from your app. ## Before you start - A member account with the **Admin** or **Developer** role in your organisation on [partner.wandura.ai](https://partner.wandura.ai). No access yet? See [Before you start](https://docs.wandura.ai/developers/before-you-start#get-onboarded). - At least one film licensed to your organisation, or the catalog is empty. - To play films: your own video space set up by Wandura, and the Player SDK in your app with a licence for your app IDs. See [Your own video space](https://docs.wandura.ai/developers/concepts/own-space) and [Player SDK](https://docs.wandura.ai/developers/player-sdk). ## Part A — your first calls (server only) ### Step 1: Create a key **Needs:** the Admin or Developer role. 1. Sign in to partner.wandura.ai and open **Developers** → **Create a key**. 2. Label it, for example `quickstart`, and pick **Sync catalog to your CMS**. The key gets `metadata:read`: it reads metadata and cannot play any video. 3. Select **Create key** and copy it now: it is shown once. ```bash export WANDURA_API_KEY="wnd_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ``` **If it fails:** no **Developers** page means your role is not Admin or Developer: ask your organisation Admin. **Next:** step 2. ### Step 2: Read your configuration **Needs:** the key from step 1 (any scope works). ```bash curl -s https://www.wandura.ai/api/delivery/v1/config \ -H "Authorization: Bearer $WANDURA_API_KEY" ``` **Expect** `200` with your key's scopes, your limits and the API version your key is pinned to (shortened): ```json { "api": { "status": "beta", "version": "2026-10-02", "pinned_version": "2026-10-02", "latest_version": "2026-10-02" }, "key": { "scopes": ["metadata:read"] }, "rate_limits": { "window_seconds": 60, "doors": { "catalog": { "limit": 3000, "unit": "requests" } } } } ``` **If it fails:** `401` = the variable is empty or the key was mistyped (`echo ${#WANDURA_API_KEY}` should print 41). `503` = retry after `Retry-After`. **Next:** step 3. ### Step 3: List your catalog **Needs:** a key with `metadata:read`. ```bash curl -s https://www.wandura.ai/api/delivery/v1/catalog \ -H "Authorization: Bearer $WANDURA_API_KEY" ``` **Expect** `200` with `films` (in display order) and `episodes` (shortened): ```json { "films": [ { "id": "3f6c1a52-8d0e-4b7a-9c21-5e4f2a7b9d10", "title": "The Heiress Returns", "slug": "the-heiress-returns", "display_order": 10, "free_until_episode": 1 } ], "episodes": [ { "id": "b2a4d6e8-1c3f-4a5b-8d7e-9f0a1b2c3d4e", "film_id": "3f6c1a52-8d0e-4b7a-9c21-5e4f2a7b9d10", "episode_no": 1, "status": "published", "stream_ready": true, "poster_url": null } ] } ``` Pick an episode with `"stream_ready": true` and note its `id` for Part B. Large catalog? Page it with `limit`; see [Catalog sync](https://docs.wandura.ai/developers/guides/catalog-sync). **If it fails:** an **empty** `200` (`"films": []`) means no licence is active for your organisation yet, not a broken key: ask Wandura in your team's Discord channel. `403` = the key lacks `metadata:read`. **Next:** build the [catalog sync job](https://docs.wandura.ai/developers/guides/catalog-sync), or go on to [Play from your own video space](https://docs.wandura.ai/developers/quickstart#own-space). ## Play from your own video space Your server does not ask Wandura for a ticket. Once Wandura has set up your space, your playback domain and your space key: 1. **On your server**, list the playlists and videos in your space with your space key, and get playback info for an episode. The links sit on your own playback domain. 2. **In your app**, play the link: films through the Player SDK, fitness clips with any standard player. 3. **Join the metadata**: [Get series metadata](https://docs.wandura.ai/developers/reference/series-get) gives each episode's video ID in your space (`episodes[].vid`), with the cast and artwork, using the key from step 1. From the space side, each copied episode carries `wd:series:` and `wd:ep:` tags. Those calls are the video platform's own; ask in your team's Discord channel if you need help with them. Formats, your key's rights, usage and metadata: [Your own video space](https://docs.wandura.ai/developers/concepts/own-space). ## Part B — first ticket on a real device (frozen path) > **This path is frozen.** It keeps working and apps already on it need change nothing, but Wandura is no longer adding to it. New integrations should use [your own video space](https://docs.wandura.ai/developers/concepts/own-space), where your app reads straight from the video platform in your organisation's space. New playback keys can no longer be created on **Developers**; existing ones keep working. **Needs:** your app on a real iPhone or Android phone with the Player SDK started and its licence check passed, and your playback key on your backend. Simulators and emulators do not produce usable device values. > **Warning:** Every ticket Wandura issues is recorded, and with `"intent": "play"` it counts as a view of the film. Do these steps with a real device and a real test viewer, not with made-up values. ### Step 4: Read the device values in your app In your app, after the Player SDK has started, read the **device ID** and the **device public key** (the exact calls are in the Player SDK guide on the portal), and log them once in a debug build. On your backend shell: ```bash export UNION_INFO="" export DRM_KEK="" ``` **If it fails:** a value such as `(null)` or an empty string means the SDK had not started or its licence check failed. See [Player SDK](https://docs.wandura.ai/developers/player-sdk#common-problems). ### Step 5: Request a ticket From your backend, for the episode you picked in step 3: ```bash curl -s -X POST https://www.wandura.ai/api/delivery/v1/playback \ -H "Authorization: Bearer $WANDURA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "episode_id": "b2a4d6e8-1c3f-4a5b-8d7e-9f0a1b2c3d4e", "union_info": "'"$UNION_INFO"'", "drm_kek": "'"$DRM_KEK"'", "viewer_ref": "qa-viewer-1:device-1", "intent": "play" }' ``` If `UNION_INFO` and `DRM_KEK` are empty, Wandura answers `409` `sdk_required` and issues nothing. **Expect** `200`: ```json { "vid": "v0d2f8c1a9e4b7", "play_auth_token": "placeholder-play-token", "expires_at": "2026-10-02T12:30:00.000Z", "protection": "private-encrypted", "subtitles": [ { "lang": "en", "url": "https://cdn.example.com/subtitles/ep1-en.vtt", "format": "webvtt" } ] } ``` **If it fails:** `400` `invalid_device_info` = a device value looks empty (`fields` says which). `403` `not_entitled` = the film is not licensed to this organisation. `404` `not_ready` = wrong `episode_id`, or the episode is not ready. All codes: [Errors](https://docs.wandura.ai/developers/concepts/errors#playback-errors). ### Step 6: Play it Return `vid`, `play_auth_token` and `subtitles` to the same device. There, give the video ID and the token to the Player SDK and start playback; the SDK fetches the encrypted stream and its keys itself. A standard HLS player cannot play these episodes: it loads the playlist and stalls. **Expect** the episode to start within a few seconds. **If it fails:** see [Player SDK · common problems](https://docs.wandura.ai/developers/player-sdk#common-problems). The ticket expires at `expires_at` (30 minutes); asking again for the same episode on the same device with the same `viewer_ref` returns the same ticket while it has more than 5 minutes left. ## Next steps - [Your own video space](https://docs.wandura.ai/developers/concepts/own-space): how your app plays films and fitness clips. - [Integration roadmap](https://docs.wandura.ai/developers/integration-guide): the full path to go-live. - [Playback flow and paywall](https://docs.wandura.ai/developers/guides/playback-flow) (frozen path): the backend endpoint your app calls, with code. - [Security](https://docs.wandura.ai/developers/concepts/security): before any key reaches a server you share. --- # Architecture > **TL;DR** — Wandura copies the films and fitness collections it licenses to you into **your own video space** on its video platform. Your server reads that space with its own key and hands playback links to your app. Films play with the licensed Player SDK. Your server reads the metadata the platform does not hold from Wandura's API. You decide which viewer may watch what. The older path, one ticket per episode from `POST /playback`, is frozen: it keeps working for apps already on it, but new integrations use their own space. ## The pieces ```mermaid flowchart LR subgraph You["Your systems"] App["Your app
Player SDK for films"] BE["Your backend
keys, paywall"] DB["Your database"] end subgraph W["Wandura"] Space["Your own space
on the video platform"] API["Delivery API
metadata"] end BE -->|"list videos, playback info
(space key)"| Space BE -->|"metadata (API key)"| API BE --> DB App -->|"play request"| BE BE -->|"playback link"| App App -->|"stream"| Space ``` | Piece | Runs | Talks to | Holds | |---|---|---|---| | Space reader | Your backend | Your own space | Your space key, which reads, plays and edits your space only | | Metadata sync | Your backend, on a schedule or when Wandura notifies it | Wandura's Delivery API, for example `GET /series` | A `metadata:read` key; writes your film tables | | App | Viewer's phone | Your backend, then your space to play | The playback link for the episode being watched | | Player SDK | Inside your app, for films | Your own space | Its licence file | | Creatives sync (optional) | Your backend | `GET /creatives` | A `creatives:export` key | One play, step by step: [Your own video space · How it works](https://docs.wandura.ai/developers/concepts/own-space#how-it-works). ## Who does what | Area | Wandura | Your team | |---|---|---| | Films | Produces, encodes and protects every film. Copies the films and fitness collections it licenses to you into your space, with titles, images and subtitles. | Shows them in your app. You may edit titles, descriptions, playlists and images in your space; Wandura leaves your edits alone. | | Rights | Grants your organisation a licence per film, with an optional window. Copies only licensed content into your space, and removes it when the licence ends. | Follows any other limits of your contract (for example countries). Drops ended content from your app: [When rights end](https://docs.wandura.ai/developers/production/rights-end). | | Viewers and money | Nothing: Wandura has no viewer identity. | Accounts, sign-in, paywall, free episodes, coins, subscriptions, refunds, viewer support. | | Keys | Issues your space key, and a new one if it leaks. Your Admins and Developers create, rotate and revoke their own Wandura API keys. | Keeps every key on your servers. Tells Wandura at once if the space key may have leaked. | | Player | Registers your app IDs and issues the Player SDK licence (your organisation pays for it). | Integrates the Player SDK in each app that plays films. | | Playback | Sets up your space with a playback domain that belongs to your organisation alone. | Gets playback links from your space, only for episodes the viewer may watch. | | Usage | The video platform counts plays, bytes, storage and transcoding per space. Wandura bills from those same numbers. | Asks for one playback domain per app if you need numbers per app. | ## How your app plays films | | **Your own video space** | |---|---| | For | Every partner app that shows Wandura films or fitness clips | | Content list | Read from your own space with your key. Metadata the platform does not hold (cast, artwork, each episode's video ID in your space) comes from Wandura's API, which can also notify your server when a series changes: [Metadata](https://docs.wandura.ai/developers/concepts/own-space#metadata). | | Playback | Links your server gets from your space, on your own playback domain | | Player | The Player SDK (licensed) for films; any standard player for fitness clips | | Licence check | Only licensed content is copied into your space | | Start with | [Your own video space](https://docs.wandura.ai/developers/concepts/own-space) | Wandura sets up each space with you; ask in your team's Discord channel to start. If you are starting a new integration, it uses your own space. ### Frozen paths Two older paths keep working, and apps already on them need change nothing. Wandura is no longer adding to them, and new integrations should not start on them: - **Through Wandura**: one ticket per episode from `POST /playback`. See [Playback and tickets](https://docs.wandura.ai/developers/concepts/playback). - **Open video**: signed MP4 links from `GET /videos`. See [Open video](https://docs.wandura.ai/developers/concepts/open-video). ## Related - [Before you start](https://docs.wandura.ai/developers/before-you-start) - [Your own video space](https://docs.wandura.ai/developers/concepts/own-space) - [Security](https://docs.wandura.ai/developers/concepts/security): the trust boundary. - [Canonical API behaviour](https://docs.wandura.ai/developers/reference/behaviour) --- # Authentication > **TL;DR** — Send `Authorization: Bearer ` on every request, from your servers only. Each key belongs to your organisation and carries scopes; the table below is the one place that says which scope opens which endpoint. Admins and Developers create, rotate and revoke keys themselves on partner.wandura.ai → **Developers**. ## Send the key ``` Authorization: Bearer wnd_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` The word `Bearer`, one space, then the key. Keys start with `wnd_live_`, which lets secret scanners find a key committed by mistake. The examples read the key from the environment variable `WANDURA_API_KEY`; each system you run sets it to its own key. | You get | When | |---|---| | `401`, no `error_code` | The header is missing or malformed, or the key is unknown or revoked. | | `403`, no `error_code` | The key is valid but lacks the endpoint's scope. | | `503` `service_unavailable` | Wandura could not check the key in time. The key is fine: retry after `Retry-After`, never rotate it for this. | | `400` `unsupported_version` | Checked before the key: your `Wandura-Version` header is not a supported version. | A key acts for its whole organisation: the API has no per-viewer identity and uses no cookies. All rules in one place: [Canonical API behaviour](https://docs.wandura.ai/developers/reference/behaviour#authentication). ## Scopes This is the only scope table in these docs; other pages link here. | Scope | Label on the portal | Opens | How you get a key with it | |---|---|---|---| | `metadata:read` | Read film metadata | `GET /catalog` | **Developers** → **Sync catalog to your CMS** | | `playback` | Play films | `POST /playback` (frozen path) | No longer created on **Developers**: new integrations play films from [your own video space](https://docs.wandura.ai/developers/concepts/own-space). Existing keys keep working; Wandura issues a replacement on request ([If a key leaks](https://docs.wandura.ai/developers/concepts/security#leaked-key)). | | `creatives:export` | Receive exported creatives | `GET /creatives`, `GET /creatives/{id}` | **Developers** → **Receive creatives / webhooks** | | `videos:read` | Read open video (needs an app) | `GET /videos`, `GET /videos/{id}` | No longer created on **Developers** (open video is frozen). Existing keys keep working; each is bound to one app. | | any scope | — | `GET /config` | Any valid key | | `webhooks:manage` | Manage webhooks | Nothing: **reserved**. Change notifications for series need no scope: Wandura sets them up on request ([Change notifications](https://docs.wandura.ai/developers/concepts/own-space#change-notifications)). | Added automatically by **Receive creatives / webhooks**; it grants nothing | > **Warning:** A key with `playback` can stream your licensed films. If it leaks, anyone can. Keep it on your server and revoke it the moment you suspect a leak: see [Security](https://docs.wandura.ai/developers/concepts/security#leaked-key). Give each key only the scopes its system needs: a catalog sync job needs `metadata:read`, a marketing job `creatives:export`, never `playback`. ## Create a key Members with the **Admin** or **Developer** role manage keys on the **Developers** page of [partner.wandura.ai](https://partner.wandura.ai). 1. Open **Developers** → **Create a key**. 2. Enter a **Label** (up to 80 characters) that says where the key runs, for example `catalog-sync-prod`. 3. Pick what the key is for (the purposes above), or choose scopes yourself under **Advanced: choose scopes**. 4. Select **Create key** and copy the key straight away. It is shown **once**: Wandura stores only a fingerprint. The key list shows each key's prefix, label, scopes and **Last used**. Step-by-step screens: [Developer keys](https://docs.wandura.ai/partners/developer-keys). ## Rotate and revoke Rotate replaces a key's secret and keeps its label, scopes and dated-version pin; revoke ends it for good. Both take effect within seconds, have no grace period, and never stop tickets already issued. The timings, the zero-downtime recipe and the leaked-key runbook are on [Security](https://docs.wandura.ai/developers/concepts/security#key-lifecycle). ### Revoke Any Admin or Developer can revoke any key of the organisation, playback keys included. A revoked key cannot be restored or rotated: create a new one. ## Keep keys on your server - Call the API only from your backend. Browser calls fail (no CORS), and a key inside an app can be extracted. - One key per system and per environment, so you can revoke one without touching the others. - Never log a full key. Quote the prefix when you talk to support. ## Related - [Security](https://docs.wandura.ai/developers/concepts/security) - [Quickstart](https://docs.wandura.ai/developers/quickstart) - [Errors](https://docs.wandura.ai/developers/concepts/errors) --- # Integration roadmap > **TL;DR** — New integrations play films from your organisation's **own video space**, in five steps from a signed agreement to a live app. Each step links to the page that does the work and says when it is done. The seven phases further down are the frozen ticket path, kept for apps already on it. The responsibilities split and the pieces are on [Architecture](https://docs.wandura.ai/developers/architecture). ## Your own video space ```mermaid flowchart LR s1["1 · Onboarding + your space"] --> s2["2 · Read your space"] s2 --> s3["3 · Metadata"] s3 --> s4["4 · Player SDK in the app"] s4 --> s5["5 · Go-live"] ``` 1. **Onboarding and your space.** Organisation, members, licences and the Player SDK trial, in your team's Wandura Discord channel ([Before you start](https://docs.wandura.ai/developers/before-you-start#get-onboarded)). Wandura sets up your space, your playback domain and your space key. If you need numbers per app, ask for one playback domain per app now: [Usage and cost](https://docs.wandura.ai/developers/concepts/own-space#usage). **Done when:** you hold your space key and your licensed content is in your space. 2. **Read your space.** Your server lists playlists and videos and gets playback info with the space key, which stays on your server. **Pages:** [How it works](https://docs.wandura.ai/developers/concepts/own-space#how-it-works), [What your key can do](https://docs.wandura.ai/developers/concepts/own-space#your-key). **Done when:** your server gets a playback link on your own domain for a licensed episode. 3. **Metadata.** Read titles, images and subtitles from your space. [Get series metadata](https://docs.wandura.ai/developers/reference/series-get) adds the cast, artwork and each episode's video ID in your space. Ask Wandura for [change notifications](https://docs.wandura.ai/developers/concepts/own-space#change-notifications) so you know when to read again. **Pages:** [Metadata](https://docs.wandura.ai/developers/concepts/own-space#metadata), [List series](https://docs.wandura.ai/developers/reference/series-list). **Done when:** your app shows your licensed films from your own database. 4. **Player SDK in the app.** Films play through the Player SDK; fitness clips with any standard player. Build with your release app IDs. **Pages:** [Films and fitness clips](https://docs.wandura.ai/developers/concepts/own-space#formats), [Player SDK](https://docs.wandura.ai/developers/player-sdk). **Done when:** an episode plays on a real iPhone and a real Android phone. 5. **Go-live.** Paid Player SDK licence, monitoring and your plan for when a licence ends. **Pages:** [Go-live checklist](https://docs.wandura.ai/developers/production/go-live), [When a licence ends](https://docs.wandura.ai/developers/concepts/own-space#licence-ends), [When rights end](https://docs.wandura.ai/developers/production/rights-end). **Done when:** Wandura confirms go-live in your channel. Optional, any time: [Creatives sync](https://docs.wandura.ai/developers/guides/creatives-sync). ## The ticket path (frozen) > **This path is frozen.** It keeps working and apps already on it need change nothing, but Wandura is no longer adding to it. New integrations should use [your own video space](https://docs.wandura.ai/developers/concepts/own-space), where your app reads straight from the video platform in your organisation's space. The seven phases below are for apps that get one ticket per episode from `POST /playback`. ```mermaid flowchart LR p0["0 · Onboarding"] --> p1["1 · Keys"] p1 --> p2["2 · Catalog sync"] p2 --> p3["3 · Playback + paywall"] p3 --> p4["4 · Player SDK in the app"] p4 --> p5["5 · Test"] p5 --> p6["6 · Go-live"] ``` ### Phase 0: Onboarding Organisation, members, film licences, test organisation and Player SDK trial, in your team's Wandura Discord channel. **Page:** [Before you start](https://docs.wandura.ai/developers/before-you-start#get-onboarded). **Done when:** your developers can open **Developers** on partner.wandura.ai, and Wandura has confirmed your licensed films. ### Phase 1: Keys One key per system and environment, with only the scopes it needs, created by your developers on **Developers**. **Pages:** [Authentication](https://docs.wandura.ai/developers/authentication#scopes), [Security](https://docs.wandura.ai/developers/concepts/security). **Done when:** each system has its own key in your secrets manager, and `GET /config` from your server answers `200`. ### Phase 2: Catalog sync A job that copies the catalog into your database every 15–60 minutes, pages safely, and never wipes your copy on an error. **Page:** [Catalog sync](https://docs.wandura.ai/developers/guides/catalog-sync). **Done when:** your app shows the licensed films from your own database, in Wandura's order, with free episodes and "coming soon" tiles right. ### Phase 3: Playback and paywall Your ticket endpoint: your paywall first, then one batch request for the episode and up to two unlocked next episodes; viewer messages for every error. **Pages:** [Playback flow and paywall](https://docs.wandura.ai/developers/guides/playback-flow), [Smooth playback under load](https://docs.wandura.ai/developers/guides/smooth-playback), [Errors](https://docs.wandura.ai/developers/concepts/errors). **Done when:** a locked episode never reaches Wandura, and every error maps to a screen. ### Phase 4: Player SDK in the app Device values, the ticket from your backend, playback, expiry and recovery, subtitles. **Pages:** [Player SDK](https://docs.wandura.ai/developers/player-sdk), [iOS](https://docs.wandura.ai/developers/player-sdk/ios), [Android](https://docs.wandura.ai/developers/player-sdk/android), [Subtitles](https://docs.wandura.ai/developers/guides/subtitles). **Done when:** a free episode plays with subtitles on a real iPhone and a real Android phone. Optional, any time after Phase 1: [Creatives sync](https://docs.wandura.ai/developers/guides/creatives-sync), [Open video sync](https://docs.wandura.ai/developers/guides/open-video-sync). ### Phase 5: Test The test plan, run on real phones. **Page:** [Testing](https://docs.wandura.ai/developers/guides/testing). **Done when:** every item of the test plan passes on the release build. ### Phase 6: Go-live Paid licence, limit review, production keys, monitoring and the rights-ending plan. **Pages:** [Go-live checklist](https://docs.wandura.ai/developers/production/go-live), [Observability](https://docs.wandura.ai/developers/production/observability), [When rights end](https://docs.wandura.ai/developers/production/rights-end), [Troubleshooting](https://docs.wandura.ai/developers/production/troubleshooting). **Done when:** Wandura confirms go-live in your channel. ## Anchors kept from the previous guide Links to the former single-page guide land here. Where things moved: | Topic | Now on | |---|---| | Test and production, test plan | [Testing](https://docs.wandura.ai/developers/guides/testing) | | Go-live checklist, monitoring, rights ending | [Go-live](https://docs.wandura.ai/developers/production/go-live), [Observability](https://docs.wandura.ai/developers/production/observability), [When rights end](https://docs.wandura.ai/developers/production/rights-end) | | Prefetch, expiry, subtitles, viewer messages | [Playback flow](https://docs.wandura.ai/developers/guides/playback-flow), [Subtitles](https://docs.wandura.ai/developers/guides/subtitles), [Errors](https://docs.wandura.ai/developers/concepts/errors#viewer-messages) | | What to store, withdrawals | [Catalog sync](https://docs.wandura.ai/developers/guides/catalog-sync) | --- # Player SDK: overview and licence > **TL;DR** — Licensed Wandura episodes are encrypted and play only through the **BytePlus VOD Player SDK** (standard edition), natively on iOS and Android. Wandura registers your app IDs and issues the licence (a `.lic` file plus an App ID, bound to your final bundle ID and package name); your organisation pays for it, about **US$2,860 per app per year**. Test on real devices. The step-by-step setup guide is on partner.wandura.ai → **Developers** → **Player SDK** after onboarding. ## At a glance | | iOS | Android | |---|---|---| | SDK | BytePlus VOD Player SDK, standard edition | BytePlus VOD Player SDK, standard edition | | Package Wandura tests with | CocoaPods `TTSDKFramework` `1.52.100.4-standard` (Player subspec) | Gradle `com.bytedanceapi:ttsdk-player_standard:1.52.100.5` | | Minimum | iOS 11.0, Xcode 14, Bitcode disabled | Android API level 16, Java 8, `armeabi-v7a` or `arm64-v8a` | | Language | Objective-C or Swift (bridging header) | Java or Kotlin | | Verified by Wandura | Encrypted playback on a real iPhone | Follows the vendor guide; share your first test results in your channel | - **Native apps.** Wandura supports native iOS and Android integrations. With a cross-platform framework (React Native, Flutter…), you wrap the native SDK in a module of your own: ask in your channel before you plan it. - **Web.** Encrypted playback on the web is not part of this licence. Check with Wandura before planning a web player. - **A standard player does not work.** An HLS player such as AVPlayer or ExoPlayer on its own loads the playlist and then stalls. - **Newer SDK versions.** Patch updates of the same minor version are fine. Tell Wandura before moving to a new minor version. Vendor release notes: [iOS](https://docs.byteplus.com/en/docs/byteplus-vod/docs-ios-player-sdk-release-notes), [Android](https://docs.byteplus.com/en/docs/byteplus-vod/docs-android-player-sdk-release-notes). ## The licence | Licence | Covers | List price | Notes | |---|---|---|---| | **Standard**, mobile | iOS **and** Android of **one** app (one bundle ID + one package name) | about **US$2,860 per app per year** | Enough for Wandura's encrypted films. | | Premium, mobile | Same, with extra vendor features | about US$32,790 per app per year | Not needed for Wandura films. | | Trial | One app, for testing | free, about **30 days** | **Cannot be extended**: start it when your QA starts. Moving to a paid licence needs no new app release. | **What you receive:** a licence file (`.lic`) and the **App ID** it is bound to. Both go into your app. Keep the licence file out of public repositories. **What Wandura needs from you:** your **final** iOS bundle ID and Android package name. The licence is bound to them exactly: - IDs cannot be changed after the licence is issued. - A debug build with a different ID (a `.debug` suffix, another flavour) counts as a different app and fails the licence check. Build your QA versions with the release IDs. - One licence per app: two apps need two licences, even from the same company. ## Devices and privacy - **Real devices.** Test encrypted playback on a real iPhone and a real Android phone. Simulators and emulators are not supported for it. - **Device values.** After the SDK has started and its licence check passed, the SDK gives you a device ID and a device public key. On the frozen ticket path, your app sends them to your backend for each ticket request (`union_info`, `drm_kek`). The device ID is a persistent identifier: treat it as personal data. See [Security](https://docs.wandura.ai/developers/concepts/security#viewer-data). - **Privacy declarations.** The SDK includes the vendor's own analytics component. Declare it in your App Store privacy details (privacy manifest) and your Google Play Data safety form, following the vendor's documentation. ## Effort An estimate for a team that already ships a native video app; your mileage will vary. | Work | Estimate | |---|---| | SDK setup, licence check, device values (per platform) | 1–2 days | | Playback, expiry and recovery, subtitles (per platform) | 2–3 days | | Your backend endpoint that hands out playback links, and your paywall | 2–4 days | | Test plan on real devices | 2–3 days | ## Common problems | Symptom | Likely cause | Fix | |---|---|---| | The player loads and never starts | A standard player instead of the SDK, or a skipped setup step | Play through the SDK; follow every step of the portal guide. | | Licence check fails | The bundle ID or package name differs from the licence (debug suffix, flavour), or the `.lic` file is missing from the app | Build with the release IDs; check the file is bundled. | | Device values are `(null)`, `nil` or empty | Read before the SDK started or before the licence check passed | Read them after the licence result is OK. The API refuses such values with `400` `invalid_device_info`. | | Playback stops after a while | The playback link or ticket expired (a ticket lives 30 minutes) | Get **one** fresh link or ticket and resume at the same position. | | Works on iOS, not on Android | Region or setup difference in the vendor's Android SDK | Ask in your channel with your SDK version and the error. | ## The setup guide The step-by-step guide (install, licence, device values, playback, subtitles, error codes) is on partner.wandura.ai → **Developers** → **Player SDK**, for members with the **Developer** or **Admin** role, after [onboarding](https://docs.wandura.ai/developers/before-you-start#get-onboarded). The platform pages below show the app-side flow around it, with code: [iOS](https://docs.wandura.ai/developers/player-sdk/ios) · [Android](https://docs.wandura.ai/developers/player-sdk/android). --- # Player SDK on iOS > **TL;DR** — Install `TTSDKFramework` `1.52.100.4-standard` with CocoaPods (iOS 11+, Xcode 14+, Bitcode off), add the licence file Wandura sends you, start the SDK, and read the two device values after the licence check passes. Your app sends them to **your** backend, gets a ticket back, and gives the ticket to the SDK. On an SDK error, ask for **one** fresh ticket and resume. > **Note:** The flow and code on this page are for the frozen ticket path. With [your own video space](https://docs.wandura.ai/developers/concepts/own-space#how-it-works), the SDK set-up and licence are the same, but your backend hands the app playback info from your space instead of a ticket. ## Prerequisites | | | |---|---| | Licence | The `.lic` file and App ID from Wandura, bound to your **final** bundle ID. See [Player SDK](https://docs.wandura.ai/developers/player-sdk#licence). | | Toolchain | Xcode 14 or later, iOS 11.0 or later, Bitcode disabled, CocoaPods (always open the `.xcworkspace`). | | Devices | A real iPhone for encrypted playback. | | Your backend | An endpoint that hands out playback info from [your own video space](https://docs.wandura.ai/developers/concepts/own-space#how-it-works). On the frozen ticket path: [Playback flow and paywall](https://docs.wandura.ai/developers/guides/playback-flow). | The exact SDK calls (start-up, licence notification, device values, playback, subtitles) are in the Player SDK guide on partner.wandura.ai → **Developers** → **Player SDK**. ## The flow in your app 1. **Start the SDK** at launch with your App ID and licence file, and wait for the licence result before anything else. 2. **Read the device values** (device ID → `union_info`, device public key → `drm_kek`). Never send `nil`, `"(null)"` or an empty string: throw instead. 3. **Ask your backend** to play the episode. Your backend applies your paywall and asks Wandura; your app never holds an API key. 4. **Play**: give `vid` and `play_auth_token` to the SDK; add the subtitles. 5. **Preload** the next episodes with the prefetched tickets your backend returns. 6. **On any SDK error** (an expired ticket included): request **one** fresh ticket and resume at the same position. Do not branch on SDK error codes, and do not loop. 7. **Back from the background**: if the current ticket has less than a minute left, replace it before resuming. ## Code The file below is the app side of that flow, in Swift. Only `PlayerSDK` touches the SDK: fill it in with the calls from the portal guide. Your backend's response shape matches the [Node and Python backend examples](https://docs.wandura.ai/developers/guides/playback-flow#code). ### The SDK behind one protocol ```swift struct DeviceValues { let unionInfo: String // device ID generated by the Player SDK let drmKek: String // device public key generated by the Player SDK } protocol PlayerSDK: AnyObject { /// Read only after the SDK has started and its licence check succeeded. Throws instead of returning nil: /// never send "(null)", "nil" or an empty string to your backend. func deviceValues() throws -> DeviceValues func play(vid: String, playAuthToken: String, startAt seconds: Double) func preload(vid: String, playAuthToken: String) func addSubtitles(_ subtitles: [Subtitle]) var currentTime: Double { get } /// A playback error, including an expired ticket. Do not branch on SDK error codes. var onError: ((Error) -> Void)? { get set } } ``` ### Calling your backend ```swift final class Backend { private let baseURL: URL private let session: URLSession private let sessionToken: () -> String // YOUR viewer session, never a Wandura key init(baseURL: URL, sessionToken: @escaping () -> String) { self.baseURL = baseURL self.sessionToken = sessionToken let config = URLSessionConfiguration.default config.timeoutIntervalForRequest = 15 // your backend may retry Wandura for a few seconds session = URLSession(configuration: config) } func play(filmId: String, episodeNo: Int, device: DeviceValues) async throws -> PlayResponse { var req = URLRequest(url: baseURL.appendingPathComponent("v1/play")) req.httpMethod = "POST" req.setValue("application/json", forHTTPHeaderField: "Content-Type") req.setValue("Bearer \(sessionToken())", forHTTPHeaderField: "Authorization") req.httpBody = try JSONSerialization.data(withJSONObject: [ "film_id": filmId, "episode_no": episodeNo, "union_info": device.unionInfo, "drm_kek": device.drmKek, ]) let (data, _) = try await session.data(for: req) let decoder = JSONDecoder() decoder.dateDecodingStrategy = .custom { d in let s = try d.singleValueContainer().decode(String.self) let f = ISO8601DateFormatter() f.formatOptions = [.withInternetDateTime, .withFractionalSeconds] if let date = f.date(from: s) ?? ISO8601DateFormatter().date(from: s) { return date } throw DecodingError.dataCorrupted(.init(codingPath: d.codingPath, debugDescription: "bad date \(s)")) } return try decoder.decode(PlayResponse.self, from: data) } } ``` ### Start, prefetch, expiry, errors ```swift enum ScreenState { case loading case playing case paywall case message(String, canRetry: Bool) } @MainActor final class PlaybackController { private let sdk: PlayerSDK private let backend: Backend private var prefetched: [Int: Ticket] = [:] // episode number → ticket for THIS device only private var current: (filmId: String, episodeNo: Int, ticket: Ticket)? private var refreshedAfterError = false var onState: ((ScreenState) -> Void)? init(sdk: PlayerSDK, backend: Backend) { self.sdk = sdk self.backend = backend sdk.onError = { [weak self] _ in Task { @MainActor in await self?.recoverFromPlayerError() } } } /// The viewer tapped an episode. func start(filmId: String, episodeNo: Int) async { say(.loading) refreshedAfterError = false let device: DeviceValues do { device = try sdk.deviceValues() } catch { return say(.message("Couldn't load this episode", canRetry: false)) // SDK setup bug: alert, don't loop } // A prefetched ticket starts the episode at once. The play request is still sent: it records the view. if let t = prefetched.removeValue(forKey: episodeNo), t.isFresh { begin(filmId: filmId, episodeNo: episodeNo, ticket: t, at: 0) } do { let r = try await backend.play(filmId: filmId, episodeNo: episodeNo, device: device) if r.ok, let ticket = r.current { if current?.episodeNo != episodeNo { begin(filmId: filmId, episodeNo: episodeNo, ticket: ticket, at: 0) } for n in r.next ?? [] { // a prefetch missing from `next` is not an error prefetched[n.episodeNo] = n.ticket sdk.preload(vid: n.ticket.vid, playAuthToken: n.ticket.playAuthToken) } } else if current?.episodeNo != episodeNo { show(r.outcome ?? .broken) } } catch { if current?.episodeNo != episodeNo { say(.message("Taking longer than usual", canRetry: true)) } } } /// Expired ticket or any SDK error: ONE fresh ticket, resume at the same position. Never a loop. private func recoverFromPlayerError() async { guard let c = current, !refreshedAfterError, let device = try? sdk.deviceValues() else { return say(.message("Couldn't load this episode", canRetry: true)) } refreshedAfterError = true let position = sdk.currentTime guard let r = try? await backend.play(filmId: c.filmId, episodeNo: c.episodeNo, device: device), r.ok, let ticket = r.current else { return say(.message("Couldn't load this episode", canRetry: true)) } begin(filmId: c.filmId, episodeNo: c.episodeNo, ticket: ticket, at: position) } /// Back from the background: a ticket with less than a minute left is replaced before resuming. func willEnterForeground() async { guard let c = current, !c.ticket.isFresh else { return } refreshedAfterError = false await recoverFromPlayerError() } private func begin(filmId: String, episodeNo: Int, ticket: Ticket, at seconds: Double) { current = (filmId, episodeNo, ticket) sdk.play(vid: ticket.vid, playAuthToken: ticket.playAuthToken, startAt: seconds) sdk.addSubtitles(ticket.subtitles) // empty list = no subtitles yet, not an error say(.playing) } private func say(_ state: ScreenState) { onState?(state) } private func show(_ outcome: Outcome) { switch outcome { case .locked: say(.paywall) case .unavailable: say(.message("This title is no longer available", canRetry: false)) case .notReady: say(.message("Not available yet", canRetry: false)) case .busy: say(.message("Busy, try again in a moment", canRetry: true)) case .broken: say(.message("Couldn't load this episode", canRetry: true)) } } } ``` ## Checklist - [ ] The licence result is checked before device values are read. - [ ] Device values are never `nil`, `"(null)"` or empty when sent. - [ ] The app holds no `wnd_live_` key (search the built `.ipa`). - [ ] `play_auth_token` is kept in memory only: not in `UserDefaults`, logs or crash reports. - [ ] An SDK error leads to one fresh ticket and a resume, never a loop. - [ ] Resuming after more than 29 minutes in the background replaces the ticket first. - [ ] An episode without subtitles plays without an error. ## Related - [Player SDK overview and licence](https://docs.wandura.ai/developers/player-sdk) - [Smooth playback under load](https://docs.wandura.ai/developers/guides/smooth-playback#in-the-app) - [Subtitles](https://docs.wandura.ai/developers/guides/subtitles) --- # Player SDK on Android > **TL;DR** — Add `com.bytedanceapi:ttsdk-player_standard:1.52.100.5` with Gradle (API level 16+, Java 8, `armeabi-v7a`/`arm64-v8a`), put the licence file Wandura sends you in your assets, start the SDK, and read the two device values after the licence check passes. Your app sends them to **your** backend, gets a ticket back, and gives the ticket to the SDK. On an SDK error, ask for **one** fresh ticket and resume. > **Note:** The flow and code on this page are for the frozen ticket path. With [your own video space](https://docs.wandura.ai/developers/concepts/own-space#how-it-works), the SDK set-up and licence are the same, but your backend hands the app playback info from your space instead of a ticket. ## Prerequisites | | | |---|---| | Licence | The `.lic` file and App ID from Wandura, bound to your **final** package name. See [Player SDK](https://docs.wandura.ai/developers/player-sdk#licence). | | Toolchain | Gradle, Android API level 16 or later, Java 8, ABIs `armeabi-v7a` or `arm64-v8a`. Permissions `INTERNET`, `WAKE_LOCK`, `ACCESS_NETWORK_STATE`, `ACCESS_WIFI_STATE`. | | Devices | A real Android phone for encrypted playback. | | Your backend | An endpoint that hands out playback info from [your own video space](https://docs.wandura.ai/developers/concepts/own-space#how-it-works). On the frozen ticket path: [Playback flow and paywall](https://docs.wandura.ai/developers/guides/playback-flow). | The exact SDK calls (start-up, licence check, device values, playback, subtitles) are in the Player SDK guide on partner.wandura.ai → **Developers** → **Player SDK**. Wandura has verified this flow end to end on iOS; on Android it follows the vendor guide, so share your first test results in your channel. ## The flow in your app 1. **Start the SDK** at launch with your App ID and licence file, and check the licence before anything else. 2. **Read the device values** (device ID → `union_info`, device public key → `drm_kek`). Never send `null`, `"(null)"` or an empty string: throw instead. 3. **Ask your backend** to play the episode. Your backend applies your paywall and asks Wandura; your app never holds an API key. 4. **Play**: give `vid` and `play_auth_token` to the SDK; add the subtitles. 5. **Preload** the next episodes with the prefetched tickets your backend returns. 6. **On any SDK error** (an expired ticket included): request **one** fresh ticket and resume at the same position. Do not branch on SDK error codes, and do not loop. 7. **On resume**: if the current ticket has less than a minute left, replace it before playing on. ## Code The file below is the app side of that flow, in Kotlin. Only `PlayerSdk` touches the SDK: fill it in with the calls from the portal guide. Your backend's response shape matches the [Node and Python backend examples](https://docs.wandura.ai/developers/guides/playback-flow#code). ### The SDK behind one interface ```kotlin data class DeviceValues(val unionInfo: String, val drmKek: String) interface PlayerSdk { /** Read only after the SDK has started and its licence check succeeded. Throws instead of returning null: * never send "(null)", "null" or an empty string to your backend. */ fun deviceValues(): DeviceValues fun play(vid: String, playAuthToken: String, startAtMs: Long) fun preload(vid: String, playAuthToken: String) fun addSubtitles(subtitles: List) val currentPositionMs: Long /** A playback error, including an expired ticket. Do not branch on SDK error codes. */ var onError: ((Throwable) -> Unit)? } ``` ### Your backend's contract ```kotlin @Serializable data class Subtitle(val lang: String, val url: String, val format: String) @Serializable data class Ticket( val vid: String, @SerialName("play_auth_token") val playAuthToken: String, // memory only: never log, never persist @SerialName("expires_at") val expiresAt: String, val subtitles: List = emptyList(), ) { /** Wandura's clock decides; allow a minute for a device clock that runs slow. */ fun isFresh(now: Instant = Instant.now()): Boolean = Instant.parse(expiresAt).isAfter(now.plusSeconds(60)) } @Serializable data class NextTicket(@SerialName("episode_no") val episodeNo: Int, val ticket: Ticket) /** The shape the example backends (Node, Python) return from YOUR `POST /v1/play`. */ @Serializable data class PlayResponse( val ok: Boolean, val current: Ticket? = null, val next: List = emptyList(), val outcome: String? = null, // locked | unavailable | not_ready | busy | broken — unknown = broken ) /** Your backend. Implement with your HTTP client (OkHttp, Retrofit, Ktor) and a 15-second timeout: your backend may * retry Wandura for a few seconds. Send YOUR viewer session, never a Wandura key. */ interface Backend { suspend fun play(filmId: String, episodeNo: Int, device: DeviceValues): PlayResponse } ``` ### Start, prefetch, expiry, errors ```kotlin sealed interface ScreenState { data object Loading : ScreenState data object Playing : ScreenState data object Paywall : ScreenState data class Message(val text: String, val canRetry: Boolean) : ScreenState } class PlaybackController( private val sdk: PlayerSdk, private val backend: Backend, private val scope: CoroutineScope, private val onState: (ScreenState) -> Unit, ) { private val prefetched = mutableMapOf() // episode number → ticket for THIS device only private var current: Triple? = null private var refreshedAfterError = false init { sdk.onError = { scope.launch { recoverFromPlayerError() } } } /** The viewer tapped an episode. */ suspend fun start(filmId: String, episodeNo: Int) { onState(ScreenState.Loading) refreshedAfterError = false val device = runCatching { sdk.deviceValues() }.getOrElse { return onState(ScreenState.Message("Couldn't load this episode", canRetry = false)) // SDK setup bug } // A prefetched ticket starts the episode at once. The play request is still sent: it records the view. prefetched.remove(episodeNo)?.takeIf { it.isFresh() }?.let { begin(filmId, episodeNo, it, 0) } val r = runCatching { backend.play(filmId, episodeNo, device) }.getOrNull() when { r?.ok == true && r.current != null -> { if (current?.second != episodeNo) begin(filmId, episodeNo, r.current, 0) r.next.forEach { n -> // a prefetch missing from `next` is not an error prefetched[n.episodeNo] = n.ticket sdk.preload(n.ticket.vid, n.ticket.playAuthToken) } } current?.second == episodeNo -> Unit // already playing from the prefetched ticket r == null -> onState(ScreenState.Message("Taking longer than usual", canRetry = true)) else -> show(r.outcome) } } /** Expired ticket or any SDK error: ONE fresh ticket, resume at the same position. Never a loop. */ private suspend fun recoverFromPlayerError() { val c = current val device = runCatching { sdk.deviceValues() }.getOrNull() if (c == null || refreshedAfterError || device == null) { return onState(ScreenState.Message("Couldn't load this episode", canRetry = true)) } refreshedAfterError = true val position = sdk.currentPositionMs val r = runCatching { backend.play(c.first, c.second, device) }.getOrNull() val ticket = r?.current if (r?.ok != true || ticket == null) return onState(ScreenState.Message("Couldn't load this episode", canRetry = true)) begin(c.first, c.second, ticket, position) } /** Back from the background: a ticket with less than a minute left is replaced before resuming. */ suspend fun onResume() { val c = current ?: return if (c.third.isFresh()) return refreshedAfterError = false recoverFromPlayerError() } private fun begin(filmId: String, episodeNo: Int, ticket: Ticket, atMs: Long) { current = Triple(filmId, episodeNo, ticket) sdk.play(ticket.vid, ticket.playAuthToken, atMs) sdk.addSubtitles(ticket.subtitles) // empty list = no subtitles yet, not an error onState(ScreenState.Playing) } private fun show(outcome: String?) = onState( when (outcome) { "locked" -> ScreenState.Paywall "unavailable" -> ScreenState.Message("This title is no longer available", canRetry = false) "not_ready" -> ScreenState.Message("Not available yet", canRetry = false) "busy" -> ScreenState.Message("Busy, try again in a moment", canRetry = true) else -> ScreenState.Message("Couldn't load this episode", canRetry = true) }, ) } ``` ## Checklist - [ ] The licence check passes before device values are read. - [ ] Device values are never `null`, `"(null)"` or empty when sent. - [ ] The app holds no `wnd_live_` key (search the built APK/AAB). - [ ] `play_auth_token` is kept in memory only: not in `SharedPreferences`, logs or crash reports. - [ ] An SDK error leads to one fresh ticket and a resume, never a loop. - [ ] Resuming after more than 29 minutes replaces the ticket first. - [ ] An episode without subtitles plays without an error. ## Related - [Player SDK overview and licence](https://docs.wandura.ai/developers/player-sdk) - [Smooth playback under load](https://docs.wandura.ai/developers/guides/smooth-playback#in-the-app) - [Subtitles](https://docs.wandura.ai/developers/guides/subtitles) --- # Your own video space > **This is how a new integration plays Wandura films and fitness clips.** Wandura sets up each space with you (space, playback domain, key). Ask Wandura in your team's Discord channel to start. While your space is being built, you can already read your licensed catalog with a `metadata:read` key and plan your screens. > **TL;DR** — Your organisation gets its **own space** on Wandura's video platform (BytePlus VOD). The space holds **only** the films and fitness collections Wandura has licensed to you, copied there for you. Your server reads it with a **key that can read, play and edit your space only**, and gets playback links straight from the platform. Wandura's API gives what the platform does not hold, such as the cast and each episode's video ID in your space, and can tell your server when a series changes. ## When you get one Wandura offers a space when your licence is set up; you can't create one yourself. Wandura sets it up together with your playback domain and your key. Where it fits with the rest of your systems: [Architecture](https://docs.wandura.ai/developers/architecture#compare-the-two-models). The older ticket path ([Playback and tickets](https://docs.wandura.ai/developers/concepts/playback)) is frozen and not offered to new integrations. ## How it works ```mermaid sequenceDiagram participant W as Wandura participant S as Your space participant Srv as Your server participant App as Your app W->>S: copy the films and collections you licensed Srv->>S: list playlists and videos (your key) Srv->>S: ask for playback info (your key) S-->>Srv: playback links on your domain Srv-->>App: link for the viewer App->>S: play Srv->>W: extra metadata (cast, translations), joined by id ``` ## Your own playback domain Each space comes with **a playback domain belonging to your organisation alone**, in the form `-playback.wandura.ai` for films and `-fit-playback.wandura.ai` for fitness clips. Every playback link in your space sits on that domain — never shared with another organisation. Wandura issues the certificate and configures it; there is nothing for you to do in DNS. Only Wandura can change the domain. If you need a second one — for example to separate the numbers for two of your own apps, see [Usage and cost](https://docs.wandura.ai/developers/concepts/own-space#usage) — ask Wandura in your team's Discord channel. ## What your key can do | Can | Cannot | |---|---| | Read and play everything in your space | Read or change any other space | | Edit titles, descriptions, tags, playlists, images and subtitles; hide or show a video | Delete videos: hide them instead, or ask Wandura | | Upload your own videos (for example trailers) and run your space's encoding | Change space or domain settings | Your edits are yours: Wandura only writes tags that start with `wd:` and adds new copies, so anything you changed stays as you left it. When Wandura updates the original, it tells you and leaves your version alone. Don't remove `wd:` tags. Uploads and encoding you run count toward your organisation's usage. Keep the key on your server only, never in an app. If it leaks, tell Wandura: a new key is issued and the old one is turned off. ## Films and fitness clips | Content | Format in your space | Player | |---|---|---| | Films | Encrypted HLS only | The Player SDK (licensed): [Player SDK](https://docs.wandura.ai/developers/player-sdk) | | Fitness clips of 30 seconds or more | HLS | Any standard player (AVPlayer, ExoPlayer, hls.js) | | Short fitness clips (about 10 seconds) | MP4 | Any standard player | ### Films in apps and on the web Each film episode has two kinds of encrypted HLS, one for apps and one for web players. Ask for the one your player uses, and always pass `Format=hls`: | Player | `FileType` | `Format` | Resolutions | |---|---|---|---| | App (Player SDK) | `evideo` | `hls` | 360p, 540p, 720p, 1080p | | Web | `private_evideo` | `hls` | 720p and 1080p; an episode whose original is below 720p gets one web version at its own resolution | - Without `Format=hls`, or when the kind you ask for does not exist, the platform answers with the **original MP4**. That file is removed from your space once the encrypted versions are ready, so the link fails (`404`). Treat an MP4 answer for a film as "not playable yet", not as a link to play. - The platform does not upscale: a version above the original's resolution is not made. - Web versions were added to spaces at different times. If an episode answers `private_evideo` with no HLS, tell Wandura in your team's channel with the series code and episode: the web version is added from Wandura's side. Every exercise in the fitness library — code, workout, phase and length — is listed in the [Fitness catalogue](https://docs.wandura.ai/developers/concepts/fitness-catalog). You can build your screens and workout plans from it before your own space is ready. ## Usage and cost Because your space stands on its own, the video platform **separates the numbers by space**: plays and bytes per video, storage, and transcoding. You do not embed an app code in the link, and you do not process logs to work out which share is yours. Wandura reconciles against those same numbers when billing. One thing to settle before you design around it: **the numbers separate by space, not by app**. Several of your apps reading one space add up into a single figure. If you need to know what each app uses, each app needs **its own playback domain** — ask for it while the space is being built, because added later it cannot split the history apart. Videos you upload yourself and transcoding you run yourself also count towards your organisation's usage. ## Metadata Wandura copies content in a fixed layout: one playlist per series named by its series code (series longer than 100 episodes continue in `-2`), episode titles ` · E · `, images named `-poster-…`, `-cover-…`, `-hero-…`, and WebVTT subtitles on each video. A CMS that reads those conventions works as is; on top of that, organise your space any way you like. Each video in your space carries a title, description, tags, category, playlist, images and subtitles. Read them from the platform. For what the platform does not hold, read Wandura's API with a `metadata:read` key: - [Get series metadata](https://docs.wandura.ai/developers/reference/series-get) (`GET /series/{code}`) gives the cast (`people`), tags, age rating, artwork and subtitle files. For each episode it gives the video ID in your space (`episodes[].vid`); `media.space` names your space and `media.playlists` lists your playlists for the series. `vid` stays `null` until Wandura's copy is ready in your space. - [List series](https://docs.wandura.ai/developers/reference/series-list) (`GET /series`) lists your licensed series with a `content_version` each. Pass `updated_since` to get only what changed since your last sync. - [List licensed catalog](https://docs.wandura.ai/developers/reference/catalog) (`GET /catalog`) also gives each episode's `vid` in your space. Not there yet: titles and synopses come in English only today (other languages will appear in the same fields), and licence dates are not in the API. Ask Wandura in your team's Discord channel for them. Each copied episode also carries machine-readable tags: `wd:series:`, `wd:ep:`, `wd:kind:episode` and `wd:lang:`. An episode appears in your space once its encrypted version is ready there, and only released series are copied. ## Change notifications Wandura can tell your server when a series changes, so you don't have to scan your space. It sends `series.updated` when the series' metadata changes, or when its episodes or playlists in your space change (an episode copied in or removed, for example). Only series you are licensed to stream are sent. **Set up.** Ask Wandura in your team's Discord channel. Wandura registers one `https` URL for your organisation and gives you a signing secret once. Keep the secret on your server. Without a registered URL, Wandura sends nothing. **What arrives.** A `POST` with this JSON body. It carries no metadata: read `data.url` ([Get series metadata](https://docs.wandura.ai/developers/reference/series-get)) with your key, and skip it if `content_version` equals the one you stored. Several changes to one series waiting to be sent are merged into one notification for the latest version. ```json { "id": "5e1b7c3a-2d4f-4a6b-9c8d-0e1f2a3b4c5d", "event": "series.updated", "occurred_at": "2026-10-21T07:00:00.000Z", "data": { "code": "WD000016", "content_version": "9f2c4e1a7b3d", "url": "https://www.wandura.ai/api/delivery/v1/series/WD000016" } } ``` Headers: `X-Wandura-Event` (the event), `X-Wandura-Delivery` (the same value as `id`), `X-Wandura-Timestamp` (send time, Unix seconds) and `X-Signature-256: sha256=`. **Check it.** Compute HMAC-SHA256 of the raw body with your secret, hex-encode it, and compare `sha256=` with `X-Signature-256` in constant time. Drop a notification whose timestamp is more than 5 minutes off, or whose `id` you have already handled. **Answer and retries.** Answer with a `2xx` within 10 seconds. Anything else, a timeout or a redirect counts as a failure. Wandura tries again after 1 minute, 5 minutes, 15 minutes, 1 hour, 3 hours, 6 hours and 12 hours, and stops after 8 failed attempts. A missed notification loses no data: keep a regular sync with `GET /series?updated_since=` as a safety net. ## When a licence ends Wandura removes the film or collection from your space. Links your server already handed out keep working until they expire, so drop the content from your app at the same time: [When rights end](https://docs.wandura.ai/developers/production/rights-end). For an urgent takedown (a copyright claim, for example), Wandura removes every copy of a series or an episode from your space at once: the videos with their subtitles, the images Wandura added, and those videos' entries in your playlists, including playlists you made (a playlist left empty is deleted). Videos you uploaded yourself stay, and Wandura does not copy that content again. Drop it from your app as above. ## Related - [Architecture · How your app plays films](https://docs.wandura.ai/developers/architecture#compare-the-two-models) - [Open video](https://docs.wandura.ai/developers/concepts/open-video): the shared path for small fitness apps (frozen). - [Security](https://docs.wandura.ai/developers/concepts/security) --- # Catalog > **TL;DR** — `GET /catalog` lists every film and episode your organisation may stream right now, with display order, free-episode rule and a readiness flag per episode. Metadata only, never a video URL. Fetch it whole, or in pages with `limit` and `cursor`. It is the only film list your app needs; a ticket request re-checks everything anyway. ## What is in the catalog A film is listed when, at the moment of the request: - your organisation holds a streaming licence for it, and the licence is active; - today (UTC) is inside the licence window — whole days, first and last day included; - the film is published. For those films it lists every published episode, plus a placeholder row for each planned episode not yet published. Films still in production and review cuts never appear and cannot be played through the API. An empty response (`"films": []`) means no licence is active for your organisation right now. ## Response shape Two flat arrays, `films` and `episodes`; join them on `episodes[].film_id` = `films[].id`. The response also carries `links` (`self`, `next`, `playback`, `config`). Every field: [List licensed catalog](https://docs.wandura.ai/developers/reference/catalog). ## Pages Without `limit` or `cursor` you receive the whole catalog in one response. With `limit` (1–200 films) you receive one page of films with **all** their episodes, plus `next_cursor` and `links.next`; pass the cursor back unchanged until it is `null`. Pages are **not** one consistent snapshot: the rules for syncing safely are in [Canonical API behaviour · Pagination](https://docs.wandura.ai/developers/reference/behaviour#pagination), and the code in [Catalog sync](https://docs.wandura.ai/developers/guides/catalog-sync). ## Order `films` arrives sorted by `display_order`, smallest first, and across pages too. Render films in that order; Wandura edits it, so keep no ordering table of your own. `episodes` arrives grouped by film, then by `episode_no`; take the film order from `films`. ## Free and paid episodes Episodes with `episode_no` ≤ the film's `free_until_episode` are free; the rest are paid. `0` means no free episode; `null` means none is set, so treat every episode as paid. The value differs per film and can change: read it on every sync. ## Planned episodes `planned_episodes` is the number of episodes the film will have. For each one not yet published, the catalog includes a placeholder row so you can show "coming soon": | Field | Value | |---|---| | `id` | `null` | | `status` | `"planned"` | | `stream_ready` | `false` | | `title`, `synopsis`, `duration_ms`, `poster_uri`, `poster_url` | `null` | Never send a placeholder to `POST /playback`: it has no ID. When `planned_episodes` is `null`, there are no placeholders. ## Readiness: `stream_ready` `true` means a ticket can be issued for the episode now. Grey out or hide episodes where it is `false`. It is a snapshot of the moment you fetched the catalog: the ticket request checks again, and its answer is the one that counts. A `not_ready` answer for an episode that was `stream_ready: true` is normal, for example right after a withdrawal. ## Genre facets | Field | Values (`null` = not classified; new values may be added) | |---|---| | `audience` | `women`, `men`, `lgbtq` | | `form` | `live_action`, `anime` | | `setting` | `modern`, `city`, `fantasy`, `campus`, `palace` | Films also carry `genres` (free-text labels) and `language` (free text: display it, do not parse it). ## Text and artwork - `synopsis_short` for cards, `synopsis_full` for detail pages; lengths vary, clamp them. Either can be `null`. - `poster_url` (film) can be `null` while artwork is prepared: show a placeholder. - For episodes use `poster_url` (a loadable `https` URL or `null`, then fall back to the film poster). `poster_uri` is an internal reference, not a loadable URL. Each film also carries `images`, its artwork by kind, each entry `{ "kind", "url", "width", "height" }`: | `kind` | What it is | `width` / `height` | |---|---|---| | `poster_3_4` | 3:4 card poster | pixels, measured from the file | | `cover_9_16` | 9:16 full-screen cover, the same image as `poster_url` | `null` for now (size not recorded yet) | A kind Wandura does not have is left out, so the array can be empty; it never holds a `null` entry. Every `url` is an absolute `https` URL on a Wandura host that you can load directly. New kinds may be added: skip a kind you do not know. `poster_url` stays as it is. ## Freshness A change on Wandura's side (a publication, a withdrawal, a licence that starts or ends) appears in the catalog within 30 seconds. All bounds: [Canonical API behaviour · Freshness](https://docs.wandura.ai/developers/reference/behaviour#freshness). Sync every 15–60 minutes from your server; never call the catalog on app launch. ## Related - [Catalog sync](https://docs.wandura.ai/developers/guides/catalog-sync) - [List licensed catalog](https://docs.wandura.ai/developers/reference/catalog) - [When rights end](https://docs.wandura.ai/developers/production/rights-end) --- # Creatives > **TL;DR** — The creatives feed gives your marketing systems a data record for each ad creative your organisation has approved on Wandura: film, episodes and scenes used, format, duration, hook, formula and the end of your rights. Records never contain a signed media URL. Sync them incrementally with `updated_since` and a cursor. Each record's `final.file_url` is a public share link to the final video: no API key needed, so you can hand it straight to Meta's video upload. ## What the feed contains Creatives of your organisation with status `approved` or `pushed` (already delivered). Drafts and other organisations' creatives never appear. `final.ready` says whether the final render exists; once it does, [download it](https://docs.wandura.ai/developers/concepts/creatives#downloading-the-final-file) from `final.file_url`. ## Endpoints | Endpoint | Use | |---|---| | [`GET /api/delivery/v1/creatives`](https://docs.wandura.ai/developers/reference/creatives-list) | Sync all records, incrementally. | | [`GET /api/delivery/v1/creatives/{id}`](https://docs.wandura.ai/developers/reference/creatives-get) | Fetch or re-check one record. | | [`GET /api/delivery/v1/creatives/{id}/file`](https://docs.wandura.ai/developers/reference/creatives-file) | Download the final video with your API key, instead of the share link in `final.file_url`. | All three need a key with `creatives:export` ([Authentication](https://docs.wandura.ai/developers/authentication#scopes)) and share one rate-limit counter. ## Response envelope Successful responses are wrapped in an envelope: ```json { "code": 0, "message": "ok", "data": { "items": [], "next_cursor": null }, "server_time": 1790679032 } ``` Errors use the same envelope **without** `data` (`code` is then a four-digit error code), except `429` and `400` `unsupported_version`, which use the flat format. Timestamps in this feed, `server_time` included, are Unix epoch seconds. See [Errors](https://docs.wandura.ai/developers/concepts/errors#creatives-envelope). ## Syncing Records come oldest update first (by `updated_at`, then ID), so updates made during a sync land after the pages you have read. Keep a checkpoint (the largest `updated_at` of your last complete run), pass it as `updated_since`, page with `cursor`, and overwrite records by `creative_id`: a record can arrive twice. The full procedure and code: [Creatives sync](https://docs.wandura.ai/developers/guides/creatives-sync). ### Creatives that leave the feed There are no deletion events. A creative that is no longer approved stops appearing. To check one you stored, call `GET /creatives/{id}`: `404` with `code` `4040` means it is gone. ## The record | Field | What it tells you | |---|---| | `creative_id` | Stable ID. Your primary key. | | `creative_code` | Immutable human-readable code; treat it as opaque. | | `created_by` | Who made the creative: `email`, and `name` (or `null` when no name is set). `null` when the creator is unknown, for example a creative made by the system. | | `film`, `episodes`, `scenes` | What the creative is made of: film, episode numbers, each clip with its start, end, action and line. | | `hook` | The action and line of the opening scene. | | `placement`, `aspect` | `reels_9x16`, `feed_4x5` or `square_1x1`, and the aspect ratio. | | `duration_ms` | Total length of the clips used. | | `formula` | The formula it was built with, if any. | | `rights.ends_at` | 00:00 UTC of the **last day** of your export rights, or `null`. That day is included: stop using the creative at `ends_at + 86400`. | | `final.ready` | Whether the final render exists. | | `final.file_url` | Public, durable download link (no API key needed), revocable in the portal; each open redirects to a fresh 15-minute download link. Safe to hand to Meta's video upload. `null` until `final.ready` is `true`, and `null` when an admin of your organisation revoked the link. The file is the clean final, with your company's brand mark if your org has one. | Every field: [List creatives](https://docs.wandura.ai/developers/reference/creatives-list#the-creative-record). Each record carries `schema_version` (currently `1`); new fields are added without changing it, so ignore fields you do not recognise. ## Downloading the final file When `final.ready` is `true`, `final.file_url` is the creative's [share link](https://docs.wandura.ai/partners/creatives#share-link), such as `https://www.wandura.ai/api/c/Q3vh0xAbCdEfGhIjKlMnOpQrStUvWx9f.mp4`. It needs no API key. Each open answers `302` with a fresh download link valid for 15 minutes, so tools that fetch a file by URL, such as Meta's video upload (`file_url`), can use it directly, however long your campaign setup takes: ```bash curl -sL -o final.mp4 "$FILE_URL" ``` - Store `final.file_url`, never the download link it redirects to: the download link expires after 15 minutes, the share link does not. - Anyone holding the share link can download the file. Treat it like a password: do not publish it. - Every open re-checks that the creative is still approved and that your export rights for the film are active; otherwise it answers `410`. An admin of your organisation can revoke the link in the portal, and it then answers `410` at once. - After a revoke, the record's `final.file_url` is `null`. Revoking does not change `updated_at`, so an incremental sync does not pick it up: when a stored link answers `410`, call [Get a creative](https://docs.wandura.ai/developers/reference/creatives-get) for the current link. Still `null`? Ask your admin, or create a new share link in the portal. - Each link allows 120 opens per minute; beyond that it answers `429` with `Retry-After`. - The file is an MP4, 1080 × 1920: the clean final, with your company's brand mark if your org has one. ### Downloading with your API key [`GET /api/delivery/v1/creatives/{id}/file`](https://docs.wandura.ai/developers/reference/creatives-file) downloads the same file with your API key instead of a share link. It answers `302` with a download link valid for 15 minutes; most HTTP clients follow it for you: ```bash curl -sL -o final.mp4 "https://www.wandura.ai/api/delivery/v1/creatives/$CREATIVE_ID/file" -H "Authorization: Bearer $WANDURA_API_KEY" ``` - `409` with `code` `4090` means the final is not ready yet. After your export rights end, it answers `403` with `code` `4032`. - Every download is logged against your API key. If a key leaks, revoke it: it can download every final of your organisation until then. ## Related - [Creatives sync](https://docs.wandura.ai/developers/guides/creatives-sync) - [When rights end](https://docs.wandura.ai/developers/production/rights-end) --- # Fitness exercise catalogue > **TL;DR** — Wandura's fitness library holds **1594 clips** across **7 collections** and **228 workouts**. This page lists every clip's code, exercise, phase and length, so you can build your screens and workout plans before your own space is ready. It carries **no** video links — those come from your organisation's own space. > **This is the whole library.** Your organisation's space holds only what Wandura has licensed to you, so it may contain fewer clips. ## Clip codes Every clip has a stable code, shaped `__E`: ``` CLE_01_E09 │ │ └── 9th exercise in the workout │ └───── workout 01 └───────── Calisthenics With Equipment ``` The code does not change when a clip is re-shot, so use it as your key when you store data on your side. A `segment` clip carries a `_S` suffix (for example `WPK_01_E01_S03`) — those are cuts from one longer exercise. ## Fields | Field | Meaning | |---|---| | `Code` | Stable clip identifier. Unchanged across re-shoots. | | `Workout` | Code and name of the workout the clip belongs to. A workout is an ordered set of exercises. | | `Exercise` | Exercise name, in English. | | `Phase` | `warm-up` · `circuit` the main set · `cool-down`. Use it to order a workout. | | `Kind` | `exercise` a whole exercise · `segment` a cut from a longer one. | | `Model` | Gender of the person in the clip: `female` or `male`. Most exercises exist in both, under different codes. | | `Sec` | Length. Clips of 30 seconds or more are delivered as HLS, shorter ones as MP4. | ## Collections | Collection | Clips | Workouts | |---|---|---| | [Abs Program](https://docs.wandura.ai/developers/concepts/fitness-catalog#abs-program) | 86 | 12 | | [Calisthenics With Equipment](https://docs.wandura.ai/developers/concepts/fitness-catalog#calisthenics-with-equipment) | 461 | 56 | | [Calisthenics Workout](https://docs.wandura.ai/developers/concepts/fitness-catalog#calisthenics-workout) | 371 | 53 | | [Gym](https://docs.wandura.ai/developers/concepts/fitness-catalog#gym) | 134 | 25 | | [Home Pilates](https://docs.wandura.ai/developers/concepts/fitness-catalog#home-pilates) | 178 | 25 | | [Wall Pilates](https://docs.wandura.ai/developers/concepts/fitness-catalog#wall-pilates) | 355 | 50 | | [Wall Pilates with Power Kit](https://docs.wandura.ai/developers/concepts/fitness-catalog#wall-pilates-with-power-kit) | 9 | 7 | ## Full list ### Abs Program | Code | Workout | Exercise | Phase | Kind | Model | Sec | |---|---|---|---|---|---|---| | `ABS_01_E01` | `ABS_01` Tighten Your Core | Hip Openers | warm-up | exercise | male | 12s | | `ABS_01_E02` | `ABS_01` Tighten Your Core | Burpee Walk | warm-up | exercise | male | 10s | | `ABS_01_E03` | `ABS_01` Tighten Your Core | Elbow Rotations (External) | circuit | exercise | male | 8s | | `ABS_01_E04` | `ABS_01` Tighten Your Core | Elbow Rotations (Internal) | circuit | exercise | male | 10s | | `ABS_01_E05` | `ABS_01` Tighten Your Core | Downward Dog Toe Touch | circuit | exercise | male | 12s | | `ABS_01_E06` | `ABS_01` Tighten Your Core | Oblique Crunches (Right) | circuit | exercise | male | 10s | | `ABS_01_E07` | `ABS_01` Tighten Your Core | Oblique Crunches (Left) | circuit | exercise | male | 13s | | `ABS_01_E08` | `ABS_01` Tighten Your Core | Single Leg Toe Touch | circuit | exercise | male | 11s | | `ABS_01_E09` | `ABS_01` Tighten Your Core | Side Knee Plank with Elbow to Knee (Right) | circuit | exercise | male | 10s | | `ABS_01_E10` | `ABS_01` Tighten Your Core | Side Knee Plank (Right) | circuit | exercise | male | 10s | | `ABS_01_E11` | `ABS_01` Tighten Your Core | Side Knee Plank with Elbow to Knee (Left) | circuit | exercise | male | 11s | | `ABS_01_E12` | `ABS_01` Tighten Your Core | Side Knee Plank (Left) | circuit | exercise | male | 10s | | `ABS_01_E13` | `ABS_01` Tighten Your Core | Mermaid (Right) | cool-down | exercise | male | 12s | | `ABS_01_E14` | `ABS_01` Tighten Your Core | Mermaid (Left) | cool-down | exercise | male | 13s | | `ABS_01_E15` | `ABS_01` Tighten Your Core | Cobra | cool-down | exercise | male | 11s | | `ABS_01_E16` | `ABS_01` Tighten Your Core | Child's Pose | cool-down | exercise | male | 10s | | `ABS_02_E01` | `ABS_02` Intense Plank | Rotating Toe Touches | warm-up | exercise | male | 11s | | `ABS_02_E02` | `ABS_02` Intense Plank | Plank to Downward Dog | circuit | exercise | male | 12s | | `ABS_02_E03` | `ABS_02` Intense Plank | Plank to Pike Walk | circuit | exercise | male | 13s | | `ABS_02_E04` | `ABS_02` Intense Plank | Airplane Plank | circuit | exercise | male | 9s | | `ABS_02_E05` | `ABS_02` Intense Plank | Spider + Cross Plank | circuit | exercise | male | 10s | | `ABS_02_E06` | `ABS_02` Intense Plank | Plank with Knee to Floor Touch | circuit | exercise | male | 11s | | `ABS_02_E07` | `ABS_02` Intense Plank | Plank Arm & Leg Raise | circuit | exercise | male | 19s | | `ABS_02_E08` | `ABS_02` Intense Plank | High Plank Walk Out | circuit | exercise | male | 9s | | `ABS_02_E09` | `ABS_02` Intense Plank | Elbow Plank | circuit | exercise | male | 11s | | `ABS_02_E10` | `ABS_02` Intense Plank | Side Stretch (Left) | cool-down | exercise | male | 10s | | `ABS_02_E11` | `ABS_02` Intense Plank | Side Stretch (Right) | cool-down | exercise | male | 11s | | `ABS_02_E12` | `ABS_02` Intense Plank | Overhead Lat Stretch (Left) | cool-down | exercise | male | 11s | | `ABS_02_E13` | `ABS_02` Intense Plank | Overhead Lat Stretch (Right) | cool-down | exercise | male | 10s | | `ABS_03_E01` | `ABS_03` Sculpted Upper Body Workout | Side Bends | warm-up | exercise | male | 10s | | `ABS_03_E02` | `ABS_03` Sculpted Upper Body Workout | Standing Elbow to Knee (modified) | warm-up | exercise | male | 10s | | `ABS_03_E03` | `ABS_03` Sculpted Upper Body Workout | Lunge with Rotation | warm-up | exercise | male | 10s | | `ABS_03_E04` | `ABS_03` Sculpted Upper Body Workout | Reach Through Crunch | circuit | exercise | male | 10s | | `ABS_03_E05` | `ABS_03` Sculpted Upper Body Workout | Elbow to Knee Crunch | circuit | exercise | male | 12s | | `ABS_03_E06` | `ABS_03` Sculpted Upper Body Workout | Pilates Scissors | circuit | exercise | male | 9s | | `ABS_03_E07` | `ABS_03` Sculpted Upper Body Workout | Single Leg V-Up (Right) | circuit | exercise | male | 13s | | `ABS_03_E08` | `ABS_03` Sculpted Upper Body Workout | Single Leg V-Up (Left) | circuit | exercise | male | 12s | | `ABS_03_E09` | `ABS_03` Sculpted Upper Body Workout | Dead Bug | circuit | exercise | male | 14s | | `ABS_03_E10` | `ABS_03` Sculpted Upper Body Workout | Tabletop Leg Press | circuit | exercise | male | 10s | | `ABS_03_E11` | `ABS_03` Sculpted Upper Body Workout | Seated Lower Back Stretch (Left) | cool-down | exercise | male | 10s | | `ABS_03_E12` | `ABS_03` Sculpted Upper Body Workout | Seated Lower Back Stretch (Right) | cool-down | exercise | male | 10s | | `ABS_04_E01` | `ABS_04` Hard Obliques Workout | Crunches | circuit | exercise | male | 15s | | `ABS_04_E02` | `ABS_04` Hard Obliques Workout | Scissor | circuit | exercise | male | 12s | | `ABS_04_E03` | `ABS_04` Hard Obliques Workout | Flutter Kicks | circuit | exercise | male | 12s | | `ABS_04_E04` | `ABS_04` Hard Obliques Workout | Oblique Crunch with Opposite Elbow to Knee (Left) | circuit | exercise | male | 12s | | `ABS_04_E05` | `ABS_04` Hard Obliques Workout | Oblique Crunch with Opposite Elbow to Knee (Right) | circuit | exercise | male | 13s | | `ABS_04_E06` | `ABS_04` Hard Obliques Workout | Side Knee Plank with Hip Drop (Left) | circuit | exercise | male | 12s | | `ABS_04_E07` | `ABS_04` Hard Obliques Workout | Side Knee Plank with Hip Drop (Right) | circuit | exercise | male | 11s | | `ABS_05_E01` | `ABS_05` Flat Belly Super Workout | Peekaboos | circuit | exercise | male | 13s | | `ABS_05_E02` | `ABS_05` Flat Belly Super Workout | Reverse Sit-ups | circuit | exercise | male | 11s | | `ABS_05_E03` | `ABS_05` Flat Belly Super Workout | Side to Side Reverse Sit Ups | circuit | exercise | male | 11s | | `ABS_05_E04` | `ABS_05` Flat Belly Super Workout | Side Plank with Elbow to Knee (Right) | circuit | exercise | male | 11s | | `ABS_05_E05` | `ABS_05` Flat Belly Super Workout | Side Plank with Elbow to Knee (Left) | circuit | exercise | male | 13s | | `ABS_05_E06` | `ABS_05` Flat Belly Super Workout | Spiderman | circuit | exercise | male | 11s | | `ABS_05_E07` | `ABS_05` Flat Belly Super Workout | Suitcase Extensions | circuit | exercise | male | 9s | | `ABS_06_E01` | `ABS_06` Effective Core Workout | Walking Mummy Kicks | warm-up | exercise | male | 15s | | `ABS_06_E02` | `ABS_06` Effective Core Workout | Skaters | warm-up | exercise | male | 16s | | `ABS_06_E03` | `ABS_06` Effective Core Workout | Walkouts to Forearm Plank | warm-up | exercise | male | 25s | | `ABS_06_E04` | `ABS_06` Effective Core Workout | Slow Mountain Climbers | circuit | exercise | male | 12s | | `ABS_06_E05` | `ABS_06` Effective Core Workout | Partial Sit-ups | circuit | exercise | male | 15s | | `ABS_06_E06` | `ABS_06` Effective Core Workout | Side Plank (Right) | circuit | exercise | male | 14s | | `ABS_06_E07` | `ABS_06` Effective Core Workout | Side Plank (Left) | circuit | exercise | male | 14s | | `ABS_06_E08` | `ABS_06` Effective Core Workout | Plank | circuit | exercise | male | 11s | | `ABS_07_E01` | `ABS_07` Intense Set for Defined Abs | Side to Side Jump Ropes | warm-up | exercise | male | 12s | | `ABS_07_E02` | `ABS_07` Intense Set for Defined Abs | Heisman 1 - 2 - 3 | warm-up | exercise | male | 15s | | `ABS_07_E03` | `ABS_07` Intense Set for Defined Abs | High Knees | warm-up | exercise | male | 10s | | `ABS_07_E04` | `ABS_07` Intense Set for Defined Abs | Wood Chops (Right) | circuit | exercise | male | 14s | | `ABS_07_E05` | `ABS_07` Intense Set for Defined Abs | Wood Chops (Left) | circuit | exercise | male | 14s | | `ABS_07_E06` | `ABS_07` Intense Set for Defined Abs | Plank Jack Shoulder Taps | circuit | exercise | male | 14s | | `ABS_07_E07` | `ABS_07` Intense Set for Defined Abs | Jump Plank | circuit | exercise | male | 14s | | `ABS_07_E08` | `ABS_07` Intense Set for Defined Abs | Bicycle Crunches | circuit | exercise | male | 16s | | `ABS_07_E09` | `ABS_07` Intense Set for Defined Abs | Mountain Climbers | circuit | exercise | male | 12s | | `ABS_07_E10` | `ABS_07` Intense Set for Defined Abs | Sit-ups | circuit | exercise | male | 18s | | `ABS_08_E01` | `ABS_08` Belly and Arm Workout | Heisman Move | circuit | exercise | male | 16s | | `ABS_08_E02` | `ABS_08` Belly and Arm Workout | Cross Jacks | circuit | exercise | male | 12s | | `ABS_08_E03` | `ABS_08` Belly and Arm Workout | Burpees Without Jump | circuit | exercise | male | 20s | | `ABS_08_E04` | `ABS_08` Belly and Arm Workout | Side to Side Floor Hops | circuit | exercise | male | 15s | | `ABS_08_E05` | `ABS_08` Belly and Arm Workout | Push-up Plank | circuit | exercise | male | 18s | | `ABS_08_E06` | `ABS_08` Belly and Arm Workout | Side Step Plank | circuit | exercise | male | 14s | | `ABS_09_E01` | `ABS_09` Workout for Stability and Balance | Side to Side Rotation | warm-up | exercise | male | 12s | | `ABS_10_E01` | `ABS_10` Workout for Epic Abs | Knee Claps | circuit | exercise | male | 10s | | `ABS_10_E02` | `ABS_10` Workout for Epic Abs | High Plank | circuit | exercise | male | 10s | | `ABS_11_E01` | `ABS_11` Core Stability | Standing Side Crunch (Left) | circuit | exercise | male | 10s | | `ABS_11_E02` | `ABS_11` Core Stability | Standing Side Crunch (Right) | circuit | exercise | male | 10s | | `ABS_11_E03` | `ABS_11` Core Stability | Seated Oblique Twist | circuit | exercise | male | 9s | | `ABS_12_E01` | `ABS_12` Intense Abs Workout | Suitcase Crunches | circuit | exercise | male | 10s | ### Calisthenics With Equipment | Code | Workout | Exercise | Phase | Kind | Model | Sec | |---|---|---|---|---|---|---| | `CLE_01_E01` | `CLE_01` Intro to Calisthenics | Kneeling Cat-Cow | warm-up | exercise | male | 24s | | `CLE_01_E02` | `CLE_01` Intro to Calisthenics | Kneeling Scapular Activations | warm-up | exercise | male | 25s | | `CLE_01_E03` | `CLE_01` Intro to Calisthenics | Bird-Dogs | warm-up | exercise | male | 24s | | `CLE_01_E04` | `CLE_01` Intro to Calisthenics | Banded Up and Overs | warm-up | exercise | male | 35s | | `CLE_01_E05` | `CLE_01` Intro to Calisthenics | Assisted Scapular Pull-Ups | warm-up | exercise | male | 19s | | `CLE_01_E06` | `CLE_01` Intro to Calisthenics | Assisted Dead Hang | circuit | exercise | male | 24s | | `CLE_01_E07` | `CLE_01` Intro to Calisthenics | Assisted Negative Pull-Ups | circuit | exercise | male | 24s | | `CLE_01_E08` | `CLE_01` Intro to Calisthenics | Band Pullovers | circuit | exercise | male | 32s | | `CLE_01_E09` | `CLE_01` Intro to Calisthenics | Bent-Knee Inverted Rows | circuit | exercise | male | 22s | | `CLE_01_E10` | `CLE_01` Intro to Calisthenics | Banded Bent-Over Rows | circuit | exercise | male | 21s | | `CLE_01_E11` | `CLE_01` Intro to Calisthenics | Kneeling Cross-Body Shoulder Stretch (Right) | cool-down | exercise | male | 25s | | `CLE_01_E12` | `CLE_01` Intro to Calisthenics | Kneeling Cross-Body Shoulder Stretch (Left) | cool-down | exercise | male | 26s | | `CLE_01_E13` | `CLE_01` Intro to Calisthenics | Child's Pose | cool-down | exercise | male | 24s | | `CLE_01_E14` | `CLE_01` Intro to Calisthenics | Seated Forward Fold | cool-down | exercise | male | 22s | | `CLE_02_E01` | `CLE_02` Push-Up Basics | Shoulder Rolls | warm-up | exercise | male | 23s | | `CLE_02_E02` | `CLE_02` Push-Up Basics | Prone YTW | warm-up | exercise | male | 36s | | `CLE_02_E03` | `CLE_02` Push-Up Basics | Wrist Rocks | warm-up | exercise | male | 23s | | `CLE_02_E04` | `CLE_02` Push-Up Basics | Kneeling Incline Push-Ups | circuit | exercise | male | 24s | | `CLE_02_E05` | `CLE_02` Push-Up Basics | Kneeling Plank Shoulder Taps | circuit | exercise | male | 27s | | `CLE_02_E06` | `CLE_02` Push-Up Basics | Assisted Dips | circuit | exercise | male | 19s | | `CLE_02_E07` | `CLE_02` Push-Up Basics | Kneeling Shoot Throughs | circuit | exercise | male | 19s | | `CLE_02_E08` | `CLE_02` Push-Up Basics | Kneeling Chest Opener Stretch | cool-down | exercise | male | 32s | | `CLE_02_E09` | `CLE_02` Push-Up Basics | Tricep Stretch (Right) | cool-down | exercise | male | 23s | | `CLE_02_E10` | `CLE_02` Push-Up Basics | Tricep Stretch (Left) | cool-down | exercise | male | 26s | | `CLE_02_E11` | `CLE_02` Push-Up Basics | Cobra Stretch | cool-down | exercise | male | 27s | | `CLE_03_E01` | `CLE_03` Legs + Glutes Routine | Gorilla Walks | warm-up | exercise | male | 15s | | `CLE_03_E02` | `CLE_03` Legs + Glutes Routine | Hurdle Steps | warm-up | exercise | male | 20s | | `CLE_03_E03` | `CLE_03` Legs + Glutes Routine | Ankle Circles (Right) | warm-up | exercise | male | 20s | | `CLE_03_E04` | `CLE_03` Legs + Glutes Routine | Ankle Circles (Left) | warm-up | exercise | male | 16s | | `CLE_03_E05` | `CLE_03` Legs + Glutes Routine | Banded Lateral Walks | warm-up | exercise | male | 23s | | `CLE_03_E06` | `CLE_03` Legs + Glutes Routine | Banded Squats | circuit | exercise | male | 28s | | `CLE_03_E07` | `CLE_03` Legs + Glutes Routine | Forward Walking Lunges | circuit | exercise | male | 19s | | `CLE_03_E08` | `CLE_03` Legs + Glutes Routine | Eyes-Closed Single-Leg Balance (Right) | circuit | exercise | male | 14s | | `CLE_03_E09` | `CLE_03` Legs + Glutes Routine | Eyes-Closed Single-Leg Balance (Left) | circuit | exercise | male | 19s | | `CLE_03_E10` | `CLE_03` Legs + Glutes Routine | Wall-Supported Band Glute Kickbacks (Right) | circuit | exercise | male | 27s | | `CLE_03_E11` | `CLE_03` Legs + Glutes Routine | Wall-Supported Band Glute Kickbacks (Left) | circuit | exercise | male | 28s | | `CLE_03_E12` | `CLE_03` Legs + Glutes Routine | Supine Knee Circles | cool-down | exercise | male | 26s | | `CLE_03_E13` | `CLE_03` Legs + Glutes Routine | Supine Twist (Right) | cool-down | exercise | male | 29s | | `CLE_03_E14` | `CLE_03` Legs + Glutes Routine | Supine Twist (Left) | cool-down | exercise | male | 27s | | `CLE_04_E01` | `CLE_04` Intro to Frog Pose | Bent-Knee Hollow Hold | circuit | exercise | male | 22s | | `CLE_04_E02` | `CLE_04` Intro to Frog Pose | Pseudo Planche Lean Pulses | circuit | exercise | male | 26s | | `CLE_04_E03` | `CLE_04` Intro to Frog Pose | Pseudo Planche Lean | circuit | exercise | male | 23s | | `CLE_04_E04` | `CLE_04` Intro to Frog Pose | Hanging Knee Raises | circuit | exercise | male | 18s | | `CLE_04_E05` | `CLE_04` Intro to Frog Pose | Band Pallof Press (Right) | circuit | exercise | male | 24s | | `CLE_04_E06` | `CLE_04` Intro to Frog Pose | Band Pallof Press (Left) | circuit | exercise | male | 30s | | `CLE_04_E07` | `CLE_04` Intro to Frog Pose | Banded Glute Bridges | circuit | exercise | male | 31s | | `CLE_04_E08` | `CLE_04` Intro to Frog Pose | Figure 4 Twists (Right) | cool-down | exercise | male | 28s | | `CLE_04_E09` | `CLE_04` Intro to Frog Pose | Figure 4 Twists (Left) | cool-down | exercise | male | 28s | | `CLE_05_E01` | `CLE_05` Back & Arms Work | Scapular Pull-Ups | warm-up | exercise | male | 26s | | `CLE_05_E02` | `CLE_05` Back & Arms Work | Band Bicep Curls | circuit | exercise | male | 34s | | `CLE_05_E03` | `CLE_05` Back & Arms Work | Thread the Needle Stretch (Right) | cool-down | exercise | male | 28s | | `CLE_05_E04` | `CLE_05` Back & Arms Work | Thread the Needle Stretch (Left) | cool-down | exercise | male | 31s | | `CLE_06_E01` | `CLE_06` Push-Ups in Focus | Band Chest Presses | circuit | exercise | male | 39s | | `CLE_07_E01` | `CLE_07` Mobility Session | Standing Chest Opener Stretch | circuit | exercise | male | 17s | | `CLE_07_E02` | `CLE_07` Mobility Session | Hip Circles | circuit | exercise | male | 25s | | `CLE_07_E03` | `CLE_07` Mobility Session | Bent-Knee Reverse Bridges | circuit | exercise | male | 21s | | `CLE_07_E04` | `CLE_07` Mobility Session | Superman | circuit | exercise | male | 18s | | `CLE_07_E05` | `CLE_07` Mobility Session | Supported Spine Twists | circuit | exercise | male | 24s | | `CLE_07_E06` | `CLE_07` Mobility Session | Frog Rocks | circuit | exercise | male | 25s | | `CLE_07_E07` | `CLE_07` Mobility Session | Pigeon Stretch (Right) | circuit | exercise | male | 27s | | `CLE_07_E08` | `CLE_07` Mobility Session | Pigeon Stretch (Left) | circuit | exercise | male | 27s | | `CLE_08_E01` | `CLE_08` Lower Body Strength | Reverse Lunges (Right) | circuit | exercise | male | 15s | | `CLE_08_E02` | `CLE_08` Lower Body Strength | Reverse Lunges (Left) | circuit | exercise | male | 15s | | `CLE_08_E03` | `CLE_08` Lower Body Strength | Supported Single-Leg Squats (Right) | circuit | exercise | male | 18s | | `CLE_08_E04` | `CLE_08` Lower Body Strength | Supported Single-Leg Squats (Left) | circuit | exercise | male | 18s | | `CLE_08_E05` | `CLE_08` Lower Body Strength | Banded Good Mornings | circuit | exercise | male | 30s | | `CLE_09_E01` | `CLE_09` Core Compression | Hanging Knee Tuck Hold | circuit | exercise | male | 20s | | `CLE_10_E01` | `CLE_10` Biceps Boost | Assisted Pull-Ups | circuit | exercise | male | 19s | | `CLE_11_E01` | `CLE_11` Abs in Focus | Hollow Body Hold | warm-up | exercise | male | 22s | | `CLE_11_E02` | `CLE_11` Abs in Focus | Dead Bugs | warm-up | exercise | male | 38s | | `CLE_11_E03` | `CLE_11` Abs in Focus | Tabletop Knee Taps | warm-up | exercise | male | 21s | | `CLE_11_E04` | `CLE_11` Abs in Focus | Banded Lat Pulldowns | warm-up | exercise | male | 32s | | `CLE_11_E05` | `CLE_11` Abs in Focus | Hanging Alternating Leg Raises | circuit | exercise | male | 24s | | `CLE_11_E06` | `CLE_11` Abs in Focus | Elbow Plank | circuit | exercise | male | 20s | | `CLE_11_E07` | `CLE_11` Abs in Focus | Side Plank (Right) | circuit | exercise | male | 23s | | `CLE_11_E08` | `CLE_11` Abs in Focus | Side Plank (Left) | circuit | exercise | male | 24s | | `CLE_11_E09` | `CLE_11` Abs in Focus | Frog Stretch | cool-down | exercise | male | 21s | | `CLE_11_E10` | `CLE_11` Abs in Focus | Scorpion Chest Stretch (Left) | cool-down | exercise | male | 28s | | `CLE_11_E11` | `CLE_11` Abs in Focus | Scorpion Chest Stretch (Right) | cool-down | exercise | male | 27s | | `CLE_12_E01` | `CLE_12` Elevate Your Push-Ups | Wrist Rotations | warm-up | exercise | male | 19s | | `CLE_12_E02` | `CLE_12` Elevate Your Push-Ups | Plank Shoulder Taps | warm-up | exercise | male | 24s | | `CLE_12_E03` | `CLE_12` Elevate Your Push-Ups | Scapular Push-Ups | warm-up | exercise | male | 25s | | `CLE_12_E04` | `CLE_12` Elevate Your Push-Ups | Incline Push-Ups | circuit | exercise | male | 19s | | `CLE_12_E05` | `CLE_12` Elevate Your Push-Ups | Incline Plank | circuit | exercise | male | 16s | | `CLE_12_E06` | `CLE_12` Elevate Your Push-Ups | Eccentric Archer Push-Ups (Right) | circuit | exercise | male | 26s | | `CLE_12_E07` | `CLE_12` Elevate Your Push-Ups | Eccentric Archer Push-Ups (Left) | circuit | exercise | male | 23s | | `CLE_12_E08` | `CLE_12` Elevate Your Push-Ups | Inverted Rows | circuit | exercise | male | 18s | | `CLE_12_E09` | `CLE_12` Elevate Your Push-Ups | Band Face Pulls | circuit | exercise | male | 29s | | `CLE_13_E01` | `CLE_13` Arms & Core Engagement | Elbow Rotations | warm-up | exercise | male | 21s | | `CLE_13_E02` | `CLE_13` Arms & Core Engagement | Hanging Hollow Body Pulses | warm-up | exercise | male | 24s | | `CLE_13_E03` | `CLE_13` Arms & Core Engagement | Tuck Front Lever Raises | circuit | exercise | male | 23s | | `CLE_13_E04` | `CLE_13` Arms & Core Engagement | Side Plank Hip Lifts (Right) | circuit | exercise | male | 21s | | `CLE_13_E05` | `CLE_13` Arms & Core Engagement | Side Plank Hip Lifts (Left) | circuit | exercise | male | 21s | | `CLE_13_E06` | `CLE_13` Arms & Core Engagement | Hanging Lat Stretch (Right) | cool-down | exercise | male | 18s | | `CLE_13_E07` | `CLE_13` Arms & Core Engagement | Hanging Lat Stretch (Left) | cool-down | exercise | male | 19s | | `CLE_13_E08` | `CLE_13` Arms & Core Engagement | Seated Chest Stretch | cool-down | exercise | male | 23s | | `CLE_14_E01` | `CLE_14` Headstand Intro | Forearm Plank to Dolphin Poses | warm-up | exercise | male | 33s | | `CLE_14_E02` | `CLE_14` Headstand Intro | Neck Circles | warm-up | exercise | male | 17s | | `CLE_14_E03` | `CLE_14` Headstand Intro | Standing Forward Fold | warm-up | exercise | male | 16s | | `CLE_14_E04` | `CLE_14` Headstand Intro | Wall-Supported Tripod Headstand Hold | circuit | exercise | male | 33s | | `CLE_14_E05` | `CLE_14` Headstand Intro | Dolphin Push-Ups | circuit | exercise | male | 28s | | `CLE_14_E06` | `CLE_14` Headstand Intro | Elbow Plank Scapular Push-Ups | circuit | exercise | male | 24s | | `CLE_14_E07` | `CLE_14` Headstand Intro | Pike Hand Lifts | circuit | exercise | male | 21s | | `CLE_14_E08` | `CLE_14` Headstand Intro | Iron Cross Stretch | cool-down | exercise | male | 33s | | `CLE_14_E09` | `CLE_14` Headstand Intro | Puppy Pose | cool-down | exercise | male | 28s | | `CLE_15_E01` | `CLE_15` Back, Abs & Arms Sesh | Arm Swings | warm-up | exercise | male | 10s | | `CLE_15_E02` | `CLE_15` Back, Abs & Arms Sesh | Hanging Tuck Sits to Tuck Ups | circuit | exercise | male | 23s | | `CLE_15_E03` | `CLE_15` Back, Abs & Arms Sesh | Knee Hug Stretch | cool-down | exercise | male | 37s | | `CLE_16_E01` | `CLE_16` Belly Work | Supine Eccentric Leg Raises | circuit | exercise | male | 24s | | `CLE_17_E01` | `CLE_17` Full Body Mobility | Wall-Assisted Shoulder Slides | circuit | exercise | male | 43s | | `CLE_17_E02` | `CLE_17` Full Body Mobility | Banded T-Spine Rotations (Left) | circuit | exercise | male | 27s | | `CLE_17_E03` | `CLE_17` Full Body Mobility | Banded T-Spine Rotations (Right) | circuit | exercise | male | 28s | | `CLE_17_E04` | `CLE_17` Full Body Mobility | Reverse Bridges | circuit | exercise | male | 22s | | `CLE_17_E05` | `CLE_17` Full Body Mobility | Half-Kneeling Windmills (Left) | circuit | exercise | male | 25s | | `CLE_17_E06` | `CLE_17` Full Body Mobility | Half-Kneeling Windmills (Right) | circuit | exercise | male | 24s | | `CLE_17_E07` | `CLE_17` Full Body Mobility | Gorilla Squats | circuit | exercise | male | 22s | | `CLE_17_E08` | `CLE_17` Full Body Mobility | 90/90 Hip Openers | circuit | exercise | male | 17s | | `CLE_17_E09` | `CLE_17` Full Body Mobility | Seated Leg Lift Over Parallette (Left) | circuit | exercise | male | 19s | | `CLE_17_E10` | `CLE_17` Full Body Mobility | Seated Leg Lift Over Parallette (Right) | circuit | exercise | male | 18s | | `CLE_18_E01` | `CLE_18` More Push-Ups | Assisted Archer Push-Ups | circuit | exercise | male | 22s | | `CLE_18_E02` | `CLE_18` More Push-Ups | Incline Push-Ups (Eccentric Lower) | circuit | exercise | male | 22s | | `CLE_18_E03` | `CLE_18` More Push-Ups | Reverse Table Top Hold | cool-down | exercise | male | 24s | | `CLE_19_E01` | `CLE_19` Upper Body Sculpting | Hanging Single-Leg L-Sit (Left) | circuit | exercise | male | 15s | | `CLE_19_E02` | `CLE_19` Upper Body Sculpting | Hanging Single-Leg L-Sit (Right) | circuit | exercise | male | 14s | | `CLE_20_E01` | `CLE_20` Wall Headstand Drills | Wall-Supported Tripod Headstand Single-Leg Transitions | circuit | exercise | male | 40s | | `CLE_20_E02` | `CLE_20` Wall Headstand Drills | Banded Dead Bugs | circuit | exercise | male | 30s | | `CLE_20_E03` | `CLE_20` Wall Headstand Drills | Hollow to Superman Rolls | circuit | exercise | male | 21s | | `CLE_20_E04` | `CLE_20` Wall Headstand Drills | Seated Neck Circles | cool-down | exercise | male | 38s | | `CLE_21_E01` | `CLE_21` Upper Body Day | Mountain Climbers | warm-up | exercise | male | 24s | | `CLE_21_E02` | `CLE_21` Upper Body Day | Band Pull-Aparts | warm-up | exercise | male | 30s | | `CLE_21_E03` | `CLE_21` Upper Body Day | Assisted Tempo Pull-Ups | warm-up | exercise | male | 24s | | `CLE_21_E04` | `CLE_21` Upper Body Day | Assisted Archer Pull-Ups | circuit | exercise | male | 21s | | `CLE_21_E05` | `CLE_21` Upper Body Day | Assisted Wide Pull-Ups | circuit | exercise | male | 17s | | `CLE_21_E06` | `CLE_21` Upper Body Day | Half Typewriter Pull-Ups | circuit | exercise | male | 23s | | `CLE_21_E07` | `CLE_21` Upper Body Day | Chin-Ups | circuit | exercise | male | 25s | | `CLE_21_E08` | `CLE_21` Upper Body Day | Band Sumo Deadlifts | circuit | exercise | male | 20s | | `CLE_21_E09` | `CLE_21` Upper Body Day | Elbow and Forearm Stretch (Right) | cool-down | exercise | male | 20s | | `CLE_21_E10` | `CLE_21` Upper Body Day | Elbow and Forearm Stretch (Left) | cool-down | exercise | male | 21s | | `CLE_22_E01` | `CLE_22` Arms-Focused Workout | Jumping Jacks | warm-up | exercise | male | 16s | | `CLE_22_E02` | `CLE_22` Arms-Focused Workout | Palm Pulses | warm-up | exercise | male | 26s | | `CLE_22_E03` | `CLE_22` Arms-Focused Workout | Planche Leans | circuit | exercise | male | 17s | | `CLE_22_E04` | `CLE_22` Arms-Focused Workout | Dynamic Pike Alignments | circuit | exercise | male | 26s | | `CLE_22_E05` | `CLE_22` Arms-Focused Workout | Pike Push-Ups | circuit | exercise | male | 26s | | `CLE_22_E06` | `CLE_22` Arms-Focused Workout | Negative Straddle Pike Push-Ups | circuit | exercise | male | 26s | | `CLE_22_E07` | `CLE_22` Arms-Focused Workout | Straddle Pike Push-Ups Hold | circuit | exercise | male | 22s | | `CLE_22_E08` | `CLE_22` Arms-Focused Workout | Diamond Push-Ups | circuit | exercise | male | 23s | | `CLE_22_E09` | `CLE_22` Arms-Focused Workout | Supine Floor Slides | cool-down | exercise | male | 28s | | `CLE_22_E10` | `CLE_22` Arms-Focused Workout | Supine Pelvic Tilts | cool-down | exercise | male | 27s | | `CLE_22_E11` | `CLE_22` Arms-Focused Workout | Pancake Side Bends (Right) | cool-down | exercise | male | 25s | | `CLE_22_E12` | `CLE_22` Arms-Focused Workout | Pancake Side Bends (Left) | cool-down | exercise | male | 23s | | `CLE_23_E01` | `CLE_23` Front Lever Training | Negative Skin the Cats | circuit | exercise | male | 21s | | `CLE_23_E02` | `CLE_23` Front Lever Training | Tuck Front Lever Negatives | circuit | exercise | male | 26s | | `CLE_23_E03` | `CLE_23` Front Lever Training | Half Tuck Front Lever | circuit | exercise | male | 31s | | `CLE_23_E04` | `CLE_23` Front Lever Training | Hollow Body Straddles | circuit | exercise | male | 23s | | `CLE_24_E01` | `CLE_24` Pistol Squat Training | Pause Deep Squats | warm-up | exercise | male | 32s | | `CLE_24_E02` | `CLE_24` Pistol Squat Training | Deep Squat Ankle Mobility | warm-up | exercise | male | 33s | | `CLE_24_E03` | `CLE_24` Pistol Squat Training | Typewriter Archer Squats | circuit | exercise | male | 28s | | `CLE_24_E04` | `CLE_24` Pistol Squat Training | Pistol Squats to Chair (Right) | circuit | exercise | male | 16s | | `CLE_24_E05` | `CLE_24` Pistol Squat Training | Pistol Squats to Chair (Left) | circuit | exercise | male | 17s | | `CLE_24_E06` | `CLE_24` Pistol Squat Training | Supported Pistol Squats (Right) | circuit | exercise | male | 18s | | `CLE_24_E07` | `CLE_24` Pistol Squat Training | Supported Pistol Squats (Left) | circuit | exercise | male | 18s | | `CLE_24_E08` | `CLE_24` Pistol Squat Training | Assisted Deep Pistol Squat Switches | circuit | exercise | male | 16s | | `CLE_24_E09` | `CLE_24` Pistol Squat Training | Forward Walking Lunge | circuit | exercise | male | 18s | | `CLE_24_E10` | `CLE_24` Pistol Squat Training | Banded Quad Stretch (Right) | cool-down | exercise | male | 26s | | `CLE_24_E11` | `CLE_24` Pistol Squat Training | Banded Quad Stretch (Left) | cool-down | exercise | male | 30s | | `CLE_25_E01` | `CLE_25` Full Body Control | Shoulder Throws | warm-up | exercise | male | 22s | | `CLE_25_E02` | `CLE_25` Full Body Control | Half Tuck Back Lever Hold | circuit | exercise | male | 27s | | `CLE_25_E03` | `CLE_25` Full Body Control | Tuck Back Lever Pulls | circuit | exercise | male | 29s | | `CLE_25_E04` | `CLE_25` Full Body Control | Bent-Knee Hollow Body Crunches | circuit | exercise | male | 25s | | `CLE_25_E05` | `CLE_25` Full Body Control | Reverse Plank | circuit | exercise | male | 28s | | `CLE_25_E06` | `CLE_25` Full Body Control | Back Lever Stretch and Hold | cool-down | exercise | male | 30s | | `CLE_26_E01` | `CLE_26` Advanced Pull Day | One-Arm Band Pulls (Right) | warm-up | exercise | male | 31s | | `CLE_26_E02` | `CLE_26` Advanced Pull Day | One-Arm Band Pulls (Left) | warm-up | exercise | male | 31s | | `CLE_26_E03` | `CLE_26` Advanced Pull Day | Assisted One-Arm Scapular Pull-Ups (Right) | circuit | exercise | male | 21s | | `CLE_26_E04` | `CLE_26` Advanced Pull Day | Assisted One-Arm Scapular Pull-Ups (Left) | circuit | exercise | male | 19s | | `CLE_26_E05` | `CLE_26` Advanced Pull Day | Wide Pull-Ups | circuit | exercise | male | 19s | | `CLE_26_E06` | `CLE_26` Advanced Pull Day | Assisted Typewriter Pull-Ups with Pauses | circuit | exercise | male | 20s | | `CLE_27_E01` | `CLE_27` Mobility Work | Seated Banded Overhead Reaches | circuit | exercise | male | 29s | | `CLE_27_E02` | `CLE_27` Mobility Work | Banded Cow Face Pose (Right) | circuit | exercise | male | 25s | | `CLE_27_E03` | `CLE_27` Mobility Work | Banded Cow Face Pose (Left) | circuit | exercise | male | 26s | | `CLE_27_E04` | `CLE_27` Mobility Work | Dynamic Hip to Hamstring Stretches (Right) | circuit | exercise | male | 22s | | `CLE_27_E05` | `CLE_27` Mobility Work | Dynamic Hip to Hamstring Stretches (Left) | circuit | exercise | male | 21s | | `CLE_27_E06` | `CLE_27` Mobility Work | Ankle Mobility (Right) | circuit | exercise | male | 29s | | `CLE_27_E07` | `CLE_27` Mobility Work | Ankle Mobility (Left) | circuit | exercise | male | 22s | | `CLE_28_E01` | `CLE_28` Sculpt Your Arms | Pike Push-Ups Straddle | circuit | exercise | male | 30s | | `CLE_28_E02` | `CLE_28` Sculpt Your Arms | Pike Push-Up Negatives | circuit | exercise | male | 24s | | `CLE_28_E03` | `CLE_28` Sculpt Your Arms | Box Pike to Hollow Walks | circuit | exercise | male | 27s | | `CLE_29_E01` | `CLE_29` Full Body Power Up | Bounce Jump Rope | warm-up | exercise | female | 11s | | `CLE_29_E02` | `CLE_29` Full Body Power Up | Alternating Overhead Reach | warm-up | exercise | female | 86s | | `CLE_29_E03` | `CLE_29` Full Body Power Up | Windmill Twists | warm-up | exercise | female | 83s | | `CLE_29_E04` | `CLE_29` Full Body Power Up | Lateral Hip Opener | warm-up | exercise | female | 82s | | `CLE_29_E05` | `CLE_29` Full Body Power Up | Hurdle Steps | warm-up | exercise | female | 88s | | `CLE_29_E06` | `CLE_29` Full Body Power Up | Banded Chest Press | circuit | exercise | female | 36s | | `CLE_29_E07` | `CLE_29` Full Body Power Up | Bent Over Banded Row | circuit | exercise | female | 38s | | `CLE_29_E08` | `CLE_29` Full Body Power Up | Band Resisted Squat | circuit | exercise | female | 36s | | `CLE_29_E10` | `CLE_29` Full Body Power Up | Banded Lateral Raises | circuit | exercise | female | 26s | | `CLE_29_E11` | `CLE_29` Full Body Power Up | Banded Upright Row | circuit | exercise | female | 35s | | `CLE_29_E12` | `CLE_29` Full Body Power Up | Side Stretch (Left) | cool-down | exercise | female | 85s | | `CLE_29_E13` | `CLE_29` Full Body Power Up | Side Stretch (Right) | cool-down | exercise | female | 85s | | `CLE_29_E14` | `CLE_29` Full Body Power Up | Puppy Pose | cool-down | exercise | female | 86s | | `CLE_29_E15` | `CLE_29` Full Body Power Up | Wide-Leg Forward Fold | cool-down | exercise | female | 85s | | `CLE_30_E01` | `CLE_30` Ab-Focused Routine | Single Unders | warm-up | exercise | female | 11s | | `CLE_30_E02` | `CLE_30` Ab-Focused Routine | Alternating Jump Rope | warm-up | exercise | female | 8s | | `CLE_30_E03` | `CLE_30` Ab-Focused Routine | Side-to-Side Jump Rope | warm-up | exercise | female | 8s | | `CLE_30_E04` | `CLE_30` Ab-Focused Routine | Overhead Arm Circles | warm-up | exercise | female | 80s | | `CLE_30_E05` | `CLE_30` Ab-Focused Routine | Alternating Knee Hugs | warm-up | exercise | female | 84s | | `CLE_30_E06` | `CLE_30` Ab-Focused Routine | Kneeling Cat-Cow | warm-up | exercise | female | 80s | | `CLE_30_E07` | `CLE_30` Ab-Focused Routine | Knee Plank with Alternating Pull-Through | circuit | exercise | female | 37s | | `CLE_30_E09` | `CLE_30` Ab-Focused Routine | Half Kneeling Chops (Right) | circuit | exercise | female | 35s | | `CLE_30_E12` | `CLE_30` Ab-Focused Routine | Seated Leg Open-Close | circuit | exercise | female | 89s | | `CLE_30_E13` | `CLE_30` Ab-Focused Routine | Seated Oblique Twist | circuit | exercise | female | 83s | | `CLE_30_E14` | `CLE_30` Ab-Focused Routine | Seated Spinal Twist (Left) | cool-down | exercise | female | 84s | | `CLE_30_E15` | `CLE_30` Ab-Focused Routine | Seated Spinal Twist (Right) | cool-down | exercise | female | 84s | | `CLE_30_E16` | `CLE_30` Ab-Focused Routine | Cobra Stretch | cool-down | exercise | female | 82s | | `CLE_30_E17` | `CLE_30` Ab-Focused Routine | Child's Pose | cool-down | exercise | female | 80s | | `CLE_31_E01` | `CLE_31` Glutes & Legs Burn | Cordless Jumps | warm-up | exercise | female | 5s | | `CLE_31_E02` | `CLE_31` Glutes & Legs Burn | Cordless Alternating Feet | warm-up | exercise | female | 11s | | `CLE_31_E03` | `CLE_31` Glutes & Legs Burn | Cordless Single-Leg Jumps | warm-up | exercise | female | 12s | | `CLE_31_E04` | `CLE_31` Glutes & Legs Burn | Quad Stretch With Reach | warm-up | exercise | female | 82s | | `CLE_31_E05` | `CLE_31` Glutes & Legs Burn | Alternating Hip Cradles | warm-up | exercise | female | 88s | | `CLE_31_E06` | `CLE_31` Glutes & Legs Burn | Alternating Tin Soldiers | warm-up | exercise | female | 84s | | `CLE_31_E07` | `CLE_31` Glutes & Legs Burn | Split Squats (Left) | circuit | exercise | female | 37s | | `CLE_31_E08` | `CLE_31` Glutes & Legs Burn | Split Squats (Right) | circuit | exercise | female | 35s | | `CLE_31_E10` | `CLE_31` Glutes & Legs Burn | Split Squat Hold (Left) | circuit | exercise | female | 37s | | `CLE_31_E11` | `CLE_31` Glutes & Legs Burn | Split Squat Hold (Right) | circuit | exercise | female | 37s | | `CLE_31_E12` | `CLE_31` Glutes & Legs Burn | Frog Pumps | circuit | exercise | female | 37s | | `CLE_31_E13` | `CLE_31` Glutes & Legs Burn | Cross Body Stretch (Left) | cool-down | exercise | female | 39s | | `CLE_31_E14` | `CLE_31` Glutes & Legs Burn | Cross Body Stretch (Right) | cool-down | exercise | female | 39s | | `CLE_31_E15` | `CLE_31` Glutes & Legs Burn | Quad Stretch (Left) | cool-down | exercise | female | 80s | | `CLE_31_E16` | `CLE_31` Glutes & Legs Burn | Quad Stretch (Right) | cool-down | exercise | female | 80s | | `CLE_32_E01` | `CLE_32` Core Power & Control Set | Kneeling Chest Opener | warm-up | exercise | female | 86s | | `CLE_32_E02` | `CLE_32` Core Power & Control Set | Bear to Down-Dog | warm-up | exercise | female | 85s | | `CLE_32_E03` | `CLE_32` Core Power & Control Set | Downward Dog Pedal | warm-up | exercise | female | 82s | | `CLE_32_E04` | `CLE_32` Core Power & Control Set | Modified 90/90 Hip Openers | warm-up | exercise | female | 80s | | `CLE_32_E05` | `CLE_32` Core Power & Control Set | Prone Scorpion | warm-up | exercise | female | 95s | | `CLE_32_E06` | `CLE_32` Core Power & Control Set | Dead Bug Toe Taps | circuit | exercise | female | 34s | | `CLE_32_E07` | `CLE_32` Core Power & Control Set | Reverse Crunches | circuit | exercise | female | 38s | | `CLE_32_E08` | `CLE_32` Core Power & Control Set | Bicycle Crunches | circuit | exercise | female | 26s | | `CLE_32_E09` | `CLE_32` Core Power & Control Set | Flutter Kicks | circuit | exercise | female | 36s | | `CLE_32_E10` | `CLE_32` Core Power & Control Set | Crossover Kicks | circuit | exercise | female | 26s | | `CLE_32_E11` | `CLE_32` Core Power & Control Set | Single Leg Reach Overs (Left) | circuit | exercise | female | 25s | | `CLE_32_E12` | `CLE_32` Core Power & Control Set | Single Leg Reach Overs (Right) | circuit | exercise | female | 27s | | `CLE_32_E13` | `CLE_32` Core Power & Control Set | Supine Pelvic Tilts | cool-down | exercise | female | 81s | | `CLE_32_E14` | `CLE_32` Core Power & Control Set | Supine Twist (Left) | cool-down | exercise | female | 80s | | `CLE_32_E15` | `CLE_32` Core Power & Control Set | Supine Twist (Right) | cool-down | exercise | female | 80s | | `CLE_33_E01` | `CLE_33` Upper Body Push | Kneeling Scapular Activation | warm-up | exercise | female | 84s | | `CLE_33_E02` | `CLE_33` Upper Body Push | Arm Circles (Backwards) | warm-up | exercise | female | 86s | | `CLE_33_E03` | `CLE_33` Upper Body Push | Passthroughs | warm-up | exercise | female | 37s | | `CLE_33_E04` | `CLE_33` Upper Body Push | Supinated Banded Pull-Aparts | circuit | exercise | female | 36s | | `CLE_33_E10` | `CLE_33` Upper Body Push | Lying Chest Flyes | circuit | exercise | female | 39s | | `CLE_33_E12` | `CLE_33` Upper Body Push | Scorpion Chest Stretch (Left) | cool-down | exercise | female | 80s | | `CLE_33_E13` | `CLE_33` Upper Body Push | Scorpion Chest Stretch (Right) | cool-down | exercise | female | 80s | | `CLE_33_E14` | `CLE_33` Upper Body Push | Downward Dog | cool-down | exercise | female | 84s | | `CLE_34_E01` | `CLE_34` Lower Body Strength Set | Quad Rockers | warm-up | exercise | female | 82s | | `CLE_34_E02` | `CLE_34` Lower Body Strength Set | Standing Hip Extension (Left) | circuit | exercise | female | 34s | | `CLE_34_E03` | `CLE_34` Lower Body Strength Set | Standing Hip Abduction (Left) | circuit | exercise | female | 33s | | `CLE_34_E04` | `CLE_34` Lower Body Strength Set | Standing Hip Extension (Right) | circuit | exercise | female | 34s | | `CLE_34_E05` | `CLE_34` Lower Body Strength Set | Standing Hip Abduction (Right) | circuit | exercise | female | 34s | | `CLE_34_E06` | `CLE_34` Lower Body Strength Set | Quadruped Fire Hydrants (Left) | circuit | exercise | female | 34s | | `CLE_34_E07` | `CLE_34` Lower Body Strength Set | Quadruped Fire Hydrants (Right) | circuit | exercise | female | 35s | | `CLE_34_E08` | `CLE_34` Lower Body Strength Set | Prone Hamstring Curls | circuit | exercise | female | 34s | | `CLE_34_E09` | `CLE_34` Lower Body Strength Set | Figure Four Stretch (Left) | cool-down | exercise | female | 92s | | `CLE_34_E10` | `CLE_34` Lower Body Strength Set | Figure Four Stretch (Right) | cool-down | exercise | female | 87s | | `CLE_34_E11` | `CLE_34` Lower Body Strength Set | Hamstring Stretch (Left) | cool-down | exercise | female | 80s | | `CLE_34_E12` | `CLE_34` Lower Body Strength Set | Hamstring Stretch (Right) | cool-down | exercise | female | 80s | | `CLE_35_E01` | `CLE_35` Mobility Basics Flow | Standing Trunk Twists | warm-up | exercise | female | 80s | | `CLE_35_E02` | `CLE_35` Mobility Basics Flow | Leg Swings (Left) | warm-up | exercise | female | 82s | | `CLE_35_E03` | `CLE_35` Mobility Basics Flow | Leg Swings (Right) | warm-up | exercise | female | 80s | | `CLE_35_E04` | `CLE_35` Mobility Basics Flow | Forward Leg Swings (Left) | warm-up | exercise | female | 82s | | `CLE_35_E05` | `CLE_35` Mobility Basics Flow | Forward Leg Swings (Right) | warm-up | exercise | female | 81s | | `CLE_35_E06` | `CLE_35` Mobility Basics Flow | Quadruped Thoracic Rotation (Left) | warm-up | exercise | female | 90s | | `CLE_35_E07` | `CLE_35` Mobility Basics Flow | Quadruped Thoracic Rotation (Right) | warm-up | exercise | female | 84s | | `CLE_35_E08` | `CLE_35` Mobility Basics Flow | Quadruped Wrist Extension | circuit | exercise | female | 85s | | `CLE_35_E09` | `CLE_35` Mobility Basics Flow | Dynamic Thread the Needle (Left) | circuit | exercise | female | 81s | | `CLE_35_E10` | `CLE_35` Mobility Basics Flow | Dynamic Thread the Needle (Right) | circuit | exercise | female | 81s | | `CLE_35_E11` | `CLE_35` Mobility Basics Flow | Seated Back Arch | circuit | exercise | female | 81s | | `CLE_35_E12` | `CLE_35` Mobility Basics Flow | Butterfly Stretch | circuit | exercise | female | 84s | | `CLE_35_E13` | `CLE_35` Mobility Basics Flow | Seated Posture Hold | circuit | exercise | female | 38s | | `CLE_35_E14` | `CLE_35` Mobility Basics Flow | Lying Hamstring Stretch (Left) | circuit | exercise | female | 36s | | `CLE_35_E15` | `CLE_35` Mobility Basics Flow | Lying Hamstring Stretch (Right) | circuit | exercise | female | 33s | | `CLE_35_E16` | `CLE_35` Mobility Basics Flow | Supine Chest Stretch | circuit | exercise | female | 81s | | `CLE_35_E17` | `CLE_35` Mobility Basics Flow | Corpse Pose | circuit | exercise | female | 85s | | `CLE_36_E01` | `CLE_36` Full Body Strength | Cordless Side-to-Side Jumps | circuit | exercise | female | 11s | | `CLE_36_E03` | `CLE_36` Full Body Strength | Overhead Raise to Tricep Extension | circuit | exercise | female | 37s | | `CLE_36_E04` | `CLE_36` Full Body Strength | Standing Hip Flexion (Left) | circuit | exercise | female | 32s | | `CLE_36_E05` | `CLE_36` Full Body Strength | Standing Hip Flexion (Right) | circuit | exercise | female | 33s | | `CLE_37_E01` | `CLE_37` Strong Core Flow | Single-Arm Rope Swings (Left) | warm-up | exercise | female | 7s | | `CLE_37_E02` | `CLE_37` Strong Core Flow | Single-Arm Rope Swings (Right) | warm-up | exercise | female | 7s | | `CLE_37_E03` | `CLE_37` Strong Core Flow | Standing March | circuit | exercise | female | 37s | | `CLE_37_E04` | `CLE_37` Strong Core Flow | Standing Oblique Crunches (Left) | circuit | exercise | female | 36s | | `CLE_37_E05` | `CLE_37` Strong Core Flow | Standing Oblique Crunches (Right) | circuit | exercise | female | 36s | | `CLE_37_E06` | `CLE_37` Strong Core Flow | High Plank Side Steps | circuit | exercise | female | 33s | | `CLE_37_E07` | `CLE_37` Strong Core Flow | Elbow Plank Leg Lifts | circuit | exercise | female | 33s | | `CLE_37_E08` | `CLE_37` Strong Core Flow | Single Leg Raises (Left) | circuit | exercise | female | 35s | | `CLE_37_E09` | `CLE_37` Strong Core Flow | Single Leg Raises (Right) | circuit | exercise | female | 34s | | `CLE_37_E10` | `CLE_37` Strong Core Flow | Knee to Chest (Left) | cool-down | exercise | female | 80s | | `CLE_37_E11` | `CLE_37` Strong Core Flow | Knee to Chest (Right) | cool-down | exercise | female | 81s | | `CLE_38_E01` | `CLE_38` Legs Power Up | Adductor Rocks (Left) | warm-up | exercise | female | 83s | | `CLE_38_E02` | `CLE_38` Legs Power Up | Adductor Rocks (Right) | warm-up | exercise | female | 82s | | `CLE_38_E04` | `CLE_38` Legs Power Up | Reverse Lunges (Left) | circuit | exercise | female | 34s | | `CLE_38_E05` | `CLE_38` Legs Power Up | Reverse Lunges (Right) | circuit | exercise | female | 34s | | `CLE_38_E07` | `CLE_38` Legs Power Up | Sumo Squat | circuit | exercise | female | 34s | | `CLE_38_E08` | `CLE_38` Legs Power Up | Side Lunges (Left) | circuit | exercise | female | 35s | | `CLE_38_E09` | `CLE_38` Legs Power Up | Side Lunges (Right) | circuit | exercise | female | 35s | | `CLE_38_E11` | `CLE_38` Legs Power Up | Hip Flexor Stretch (Left) | cool-down | exercise | female | 86s | | `CLE_38_E12` | `CLE_38` Legs Power Up | Hip Flexor Stretch (Right) | cool-down | exercise | female | 80s | | `CLE_38_E13` | `CLE_38` Legs Power Up | Pigeon Stretch (Left) | cool-down | exercise | female | 83s | | `CLE_38_E14` | `CLE_38` Legs Power Up | Pigeon Stretch (Right) | cool-down | exercise | female | 89s | | `CLE_39_E01` | `CLE_39` Butt & Legs Turn Up | Down-Dog to Pigeon | warm-up | exercise | female | 96s | | `CLE_39_E02` | `CLE_39` Butt & Legs Turn Up | Worlds Greatest Stretch | warm-up | exercise | female | 85s | | `CLE_39_E03` | `CLE_39` Butt & Legs Turn Up | Gorilla Squats | warm-up | exercise | female | 89s | | `CLE_39_E04` | `CLE_39` Butt & Legs Turn Up | Sumo Deadlift | circuit | exercise | female | 34s | | `CLE_39_E05` | `CLE_39` Butt & Legs Turn Up | Single Leg RDL (Left) | circuit | exercise | female | 37s | | `CLE_39_E06` | `CLE_39` Butt & Legs Turn Up | Single Leg RDL (Right) | circuit | exercise | female | 35s | | `CLE_39_E07` | `CLE_39` Butt & Legs Turn Up | Quadruped Band Kickback (Left) | circuit | exercise | female | 35s | | `CLE_39_E08` | `CLE_39` Butt & Legs Turn Up | Quadruped Band Kickback (Right) | circuit | exercise | female | 36s | | `CLE_39_E09` | `CLE_39` Butt & Legs Turn Up | Glute Bridge | circuit | exercise | female | 33s | | `CLE_39_E10` | `CLE_39` Butt & Legs Turn Up | Dead Bug | circuit | exercise | female | 39s | | `CLE_39_E11` | `CLE_39` Butt & Legs Turn Up | Happy Baby Stretch | cool-down | exercise | female | 80s | | `CLE_40_E01` | `CLE_40` Core Focus Routine | Half-Kneeling Windmills (Left) | warm-up | exercise | female | 83s | | `CLE_40_E02` | `CLE_40` Core Focus Routine | Half-Kneeling Windmills (Right) | warm-up | exercise | female | 81s | | `CLE_40_E03` | `CLE_40` Core Focus Routine | Bear Plank with Alternating Pull-Through | circuit | exercise | female | 29s | | `CLE_40_E04` | `CLE_40` Core Focus Routine | Plank with Alternating Pull-Through | circuit | exercise | female | 26s | | `CLE_40_E05` | `CLE_40` Core Focus Routine | Modified Oblique Twist | circuit | exercise | female | 35s | | `CLE_40_E06` | `CLE_40` Core Focus Routine | Seated Knee Tucks | circuit | exercise | female | 32s | | `CLE_40_E07` | `CLE_40` Core Focus Routine | Pike Leg Lifts | circuit | exercise | female | 81s | | `CLE_40_E08` | `CLE_40` Core Focus Routine | Supine Butterfly Stretch | cool-down | exercise | female | 80s | | `CLE_41_E01` | `CLE_41` Total Body Flow | Reverse Hurdle Steps | warm-up | exercise | female | 80s | | `CLE_41_E02` | `CLE_41` Total Body Flow | Walking Toe Touch | warm-up | exercise | female | 80s | | `CLE_41_E03` | `CLE_41` Total Body Flow | Single Arm Lateral Raises (Left) | circuit | exercise | female | 33s | | `CLE_41_E04` | `CLE_41` Total Body Flow | Single Arm Lateral Raises (Right) | circuit | exercise | female | 33s | | `CLE_41_E05` | `CLE_41` Total Body Flow | Side Bend (Left) | circuit | exercise | female | 36s | | `CLE_41_E06` | `CLE_41` Total Body Flow | Side Bend (Right) | circuit | exercise | female | 37s | | `CLE_41_E07` | `CLE_41` Total Body Flow | Cordless High Knees | circuit | exercise | female | 11s | | `CLE_41_E08` | `CLE_41` Total Body Flow | Cordless Butt Kicks | circuit | exercise | female | 10s | | `CLE_41_E09` | `CLE_41` Total Body Flow | Cordless Forward Straddles | circuit | exercise | female | 11s | | `CLE_41_E10` | `CLE_41` Total Body Flow | Wall Calf Stretch (Left) | cool-down | exercise | female | 80s | | `CLE_41_E11` | `CLE_41` Total Body Flow | Wall Calf Stretch (Right) | cool-down | exercise | female | 80s | | `CLE_41_E12` | `CLE_41` Total Body Flow | Standing Forward Fold | cool-down | exercise | female | 84s | | `CLE_41_E13` | `CLE_41` Total Body Flow | Dragon Stretch (Left) | cool-down | exercise | female | 85s | | `CLE_41_E14` | `CLE_41` Total Body Flow | Dragon Stretch (Right) | cool-down | exercise | female | 82s | | `CLE_42_E01` | `CLE_42` Lower Body Sculpt | 90/90 Hip Openers | warm-up | exercise | female | 80s | | `CLE_42_E02` | `CLE_42` Lower Body Sculpt | Pigeon With Arm Reach (Left) | warm-up | exercise | female | 82s | | `CLE_42_E03` | `CLE_42` Lower Body Sculpt | Pigeon With Arm Reach (Right) | warm-up | exercise | female | 80s | | `CLE_42_E04` | `CLE_42` Lower Body Sculpt | Split Squat Pulses (Left) | circuit | exercise | female | 37s | | `CLE_42_E05` | `CLE_42` Lower Body Sculpt | Split Squat Pulses (Right) | circuit | exercise | female | 36s | | `CLE_42_E06` | `CLE_42` Lower Body Sculpt | Reverse Lunges | circuit | exercise | female | 34s | | `CLE_42_E07` | `CLE_42` Lower Body Sculpt | Side Lunges | circuit | exercise | female | 36s | | `CLE_43_E01` | `CLE_43` Toned Belly Routine | Highland Jacks | warm-up | exercise | female | 81s | | `CLE_43_E02` | `CLE_43` Toned Belly Routine | Scapular Pushups | warm-up | exercise | female | 81s | | `CLE_43_E03` | `CLE_43` Toned Belly Routine | Dolphin Pushups | warm-up | exercise | female | 23s | | `CLE_43_E04` | `CLE_43` Toned Belly Routine | Wall-Supported Tripod to Headstand Hold | circuit | exercise | female | 39s | | `CLE_43_E05` | `CLE_43` Toned Belly Routine | Wall-Supported Tripod to Headstand Single Leg Lift | circuit | exercise | female | 30s | | `CLE_43_E06` | `CLE_43` Toned Belly Routine | Wall-Supported Tripod to Headstand Raises | circuit | exercise | female | 29s | | `CLE_43_E07` | `CLE_43` Toned Belly Routine | Tabletop Foot Lifts | circuit | exercise | female | 38s | | `CLE_43_E08` | `CLE_43` Toned Belly Routine | Single Leg Pike Lifts (Left) | circuit | exercise | female | 33s | | `CLE_43_E09` | `CLE_43` Toned Belly Routine | Single Leg Pike Lifts (Right) | circuit | exercise | female | 33s | | `CLE_43_E10` | `CLE_43` Toned Belly Routine | Modified Sprinter Crunches | circuit | exercise | female | 36s | | `CLE_43_E11` | `CLE_43` Toned Belly Routine | Side Plank Crunch (Left) | circuit | exercise | female | 35s | | `CLE_43_E12` | `CLE_43` Toned Belly Routine | Side Plank Crunch (Right) | circuit | exercise | female | 34s | | `CLE_44_E01` | `CLE_44` Banded Upper Band Superset | Arm Circles (Forwards) | warm-up | exercise | female | 80s | | `CLE_44_E02` | `CLE_44` Banded Upper Band Superset | Banded Pull-Aparts | warm-up | exercise | female | 36s | | `CLE_44_E03` | `CLE_44` Banded Upper Band Superset | Biceps Curl | circuit | exercise | female | 34s | | `CLE_44_E04` | `CLE_44` Banded Upper Band Superset | Alternating Banded Rows | circuit | exercise | female | 36s | | `CLE_44_E05` | `CLE_44` Banded Upper Band Superset | Diagonal Pull-Aparts (Left) | circuit | exercise | female | 39s | | `CLE_44_E06` | `CLE_44` Banded Upper Band Superset | Diagonal Pull-Aparts (Right) | circuit | exercise | female | 38s | | `CLE_44_E07` | `CLE_44` Banded Upper Band Superset | Single Banded Row (Left) | circuit | exercise | female | 36s | | `CLE_44_E08` | `CLE_44` Banded Upper Band Superset | Single Banded Row (Right) | circuit | exercise | female | 35s | | `CLE_44_E09` | `CLE_44` Banded Upper Band Superset | Seated Face-Pulls | circuit | exercise | female | 35s | | `CLE_44_E10` | `CLE_44` Banded Upper Band Superset | Seated Lat Pulldown | circuit | exercise | female | 37s | | `CLE_45_E01` | `CLE_45` Full Body Mobility | Kneeling Wall Sweeps (Left) | warm-up | exercise | female | 90s | | `CLE_45_E02` | `CLE_45` Full Body Mobility | Kneeling Wall Sweeps (Right) | warm-up | exercise | female | 82s | | `CLE_45_E03` | `CLE_45` Full Body Mobility | Ankle Mobility (Left) | circuit | exercise | female | 85s | | `CLE_45_E04` | `CLE_45` Full Body Mobility | Ankle Mobility (Right) | circuit | exercise | female | 80s | | `CLE_45_E05` | `CLE_45` Full Body Mobility | Twisted Lizard Stretch (Left) | circuit | exercise | female | 80s | | `CLE_45_E06` | `CLE_45` Full Body Mobility | Twisted Lizard Stretch (Right) | circuit | exercise | female | 84s | | `CLE_45_E07` | `CLE_45` Full Body Mobility | Side-Lying Arm Sweep (Left) | circuit | exercise | female | 86s | | `CLE_45_E08` | `CLE_45` Full Body Mobility | Side-Lying Arm Sweep (Right) | circuit | exercise | female | 82s | | `CLE_45_E09` | `CLE_45` Full Body Mobility | Supine TFL Stretch (Left) | circuit | exercise | female | 80s | | `CLE_45_E10` | `CLE_45` Full Body Mobility | Supine TFL Stretch (Right) | circuit | exercise | female | 80s | | `CLE_45_E11` | `CLE_45` Full Body Mobility | Hamstring Activation (Left) | circuit | exercise | female | 34s | | `CLE_45_E12` | `CLE_45` Full Body Mobility | Hamstring Activation (Right) | circuit | exercise | female | 36s | | `CLE_45_E13` | `CLE_45` Full Body Mobility | Alternating Supine Scorpion | circuit | exercise | female | 88s | | `CLE_46_E01` | `CLE_46` Butt & Thighs Routine | Standing Glute Kickback (Left) | circuit | exercise | female | 37s | | `CLE_46_E02` | `CLE_46` Butt & Thighs Routine | Standing Diagonal Kickbacks (Left) | circuit | exercise | female | 37s | | `CLE_46_E03` | `CLE_46` Butt & Thighs Routine | Standing Glute Kickback (Right) | circuit | exercise | female | 36s | | `CLE_46_E04` | `CLE_46` Butt & Thighs Routine | Standing Diagonal Kickbacks (Right) | circuit | exercise | female | 37s | | `CLE_46_E05` | `CLE_46` Butt & Thighs Routine | Rainbow Leg Lifts (Left) | circuit | exercise | female | 37s | | `CLE_46_E06` | `CLE_46` Butt & Thighs Routine | Quadruped Cross Donkey Kicks (Left) | circuit | exercise | female | 36s | | `CLE_46_E07` | `CLE_46` Butt & Thighs Routine | Rainbow Leg Lifts (Right) | circuit | exercise | female | 36s | | `CLE_46_E08` | `CLE_46` Butt & Thighs Routine | Quadruped Cross Donkey Kicks (Right) | circuit | exercise | female | 38s | | `CLE_46_E09` | `CLE_46` Butt & Thighs Routine | Glute Bridge March | circuit | exercise | female | 37s | | `CLE_46_E10` | `CLE_46` Butt & Thighs Routine | Single Leg Glute Bridges (Left) | circuit | exercise | female | 38s | | `CLE_46_E11` | `CLE_46` Butt & Thighs Routine | Single Leg Glute Bridges (Right) | circuit | exercise | female | 36s | | `CLE_46_E12` | `CLE_46` Butt & Thighs Routine | Prone Leg Lifts | circuit | exercise | female | 35s | | `CLE_47_E01` | `CLE_47` Toned Belly Set | Backwards Toe-Taps Jump Rope | warm-up | exercise | female | 7s | | `CLE_47_E02` | `CLE_47` Toned Belly Set | High Plank with Slide-Out (Left) | circuit | exercise | female | 36s | | `CLE_47_E03` | `CLE_47` Toned Belly Set | High Plank with Slide-Out (Right) | circuit | exercise | female | 38s | | `CLE_47_E04` | `CLE_47` Toned Belly Set | Seated Pike Hold | circuit | exercise | female | 21s | | `CLE_48_E01` | `CLE_48` Lower Body Endurance Focus | Hamstring Rock Back (Left) | warm-up | exercise | female | 80s | | `CLE_48_E02` | `CLE_48` Lower Body Endurance Focus | Hamstring Rock Back (Right) | warm-up | exercise | female | 86s | | `CLE_48_E03` | `CLE_48` Lower Body Endurance Focus | Partial Pistol Squats (Left) | circuit | exercise | female | 21s | | `CLE_48_E04` | `CLE_48` Lower Body Endurance Focus | Eccentric Pistol Squats (Left) | circuit | exercise | female | 24s | | `CLE_48_E05` | `CLE_48` Lower Body Endurance Focus | Partial Pistol Squats (Right) | circuit | exercise | female | 21s | | `CLE_48_E06` | `CLE_48` Lower Body Endurance Focus | Eccentric Pistol Squats (Right) | circuit | exercise | female | 25s | | `CLE_48_E07` | `CLE_48` Lower Body Endurance Focus | Reverse to Forward Lunge (Left) | circuit | exercise | female | 36s | | `CLE_48_E08` | `CLE_48` Lower Body Endurance Focus | Curtsy Lunges (Left) | circuit | exercise | female | 80s | | `CLE_48_E10` | `CLE_48` Lower Body Endurance Focus | Reverse to Forward Lunge (Right) | circuit | exercise | female | 35s | | `CLE_48_E11` | `CLE_48` Lower Body Endurance Focus | Curtsy Lunges (Right) | circuit | exercise | female | 84s | | `CLE_48_E13` | `CLE_48` Lower Body Endurance Focus | Clock Lunges (Left) | circuit | exercise | female | 44s | | `CLE_48_E14` | `CLE_48` Lower Body Endurance Focus | Clock Lunges (Right) | circuit | exercise | female | 35s | | `CLE_49_E01` | `CLE_49` Total Body Power | Forward-Backward Jump Rope | warm-up | exercise | female | 8s | | `CLE_49_E02` | `CLE_49` Total Body Power | Heel-Taps Jump Rope | circuit | exercise | female | 7s | | `CLE_49_E05` | `CLE_49` Total Body Power | Wrist Palloff Press | circuit | exercise | female | 37s | | `CLE_49_E06` | `CLE_49` Total Body Power | Bent Over Row | circuit | exercise | female | 38s | | `CLE_49_E09` | `CLE_49` Total Body Power | Long Sit Ups | circuit | exercise | female | 39s | | `CLE_49_E10` | `CLE_49` Total Body Power | Quad and Glute Stretch (Left) | cool-down | exercise | female | 93s | | `CLE_49_E11` | `CLE_49` Total Body Power | Quad and Glute Stretch (Right) | cool-down | exercise | female | 86s | | `CLE_50_E01` | `CLE_50` Advanced Abs Sesh | Down-Dog Toe Taps | warm-up | exercise | female | 83s | | `CLE_50_E02` | `CLE_50` Advanced Abs Sesh | Wall Walks | circuit | exercise | female | 40s | | `CLE_50_E03` | `CLE_50` Advanced Abs Sesh | Wall-Facing Handstand | circuit | exercise | female | 31s | | `CLE_50_E04` | `CLE_50` Advanced Abs Sesh | Handstand Hold | circuit | exercise | female | 29s | | `CLE_50_E05` | `CLE_50` Advanced Abs Sesh | Oblique Twist | circuit | exercise | female | 37s | | `CLE_50_E06` | `CLE_50` Advanced Abs Sesh | Pancake Side Bend (Left) | cool-down | exercise | female | 80s | | `CLE_50_E07` | `CLE_50` Advanced Abs Sesh | Pancake Side Bend (Right) | cool-down | exercise | female | 80s | | `CLE_51_E01` | `CLE_51` Toned Legs Set | Prayer Squat Opener | warm-up | exercise | female | 81s | | `CLE_51_E02` | `CLE_51` Toned Legs Set | Boxer Jump Rope | warm-up | exercise | female | 7s | | `CLE_51_E03` | `CLE_51` Toned Legs Set | Running Jump Rope | warm-up | exercise | female | 6s | | `CLE_51_E04` | `CLE_51` Toned Legs Set | Single Leg RDL to High Knee (Left) | circuit | exercise | female | 29s | | `CLE_51_E05` | `CLE_51` Toned Legs Set | Single Leg RDL to High Knee (Right) | circuit | exercise | female | 29s | | `CLE_51_E06` | `CLE_51` Toned Legs Set | Prone Quad Stretch (Left) | cool-down | exercise | female | 37s | | `CLE_51_E07` | `CLE_51` Toned Legs Set | Prone Quad Stretch (Right) | cool-down | exercise | female | 36s | | `CLE_52_E01` | `CLE_52` Chest-Toning Routine | Robot Arms | warm-up | exercise | female | 81s | | `CLE_52_E02` | `CLE_52` Chest-Toning Routine | Dynamic Chest Stretch | warm-up | exercise | female | 81s | | `CLE_52_E04` | `CLE_52` Chest-Toning Routine | Resisted Pushups | circuit | exercise | female | 19s | | `CLE_52_E07` | `CLE_52` Chest-Toning Routine | Seated Rows | circuit | exercise | female | 35s | | `CLE_52_E10` | `CLE_52` Chest-Toning Routine | Lying Pullover | circuit | exercise | female | 37s | | `CLE_52_E12` | `CLE_52` Chest-Toning Routine | Dual Sit Ups | circuit | exercise | female | 23s | | `CLE_52_E13` | `CLE_52` Chest-Toning Routine | Seated Tricep Stretch (Left) | cool-down | exercise | female | 81s | | `CLE_52_E14` | `CLE_52` Chest-Toning Routine | Seated Tricep Stretch (Right) | cool-down | exercise | female | 80s | | `CLE_53_E01` | `CLE_53` Core Power Flow | Standing Cross Crawl March | warm-up | exercise | female | 84s | | `CLE_53_E02` | `CLE_53` Core Power Flow | Wall-Facing Tuck Handstand | circuit | exercise | female | 32s | | `CLE_53_E03` | `CLE_53` Core Power Flow | Pike Handstand | circuit | exercise | female | 27s | | `CLE_53_E04` | `CLE_53` Core Power Flow | L-Sit Tuck Foot Lifts | circuit | exercise | female | 27s | | `CLE_53_E05` | `CLE_53` Core Power Flow | Single-Leg L-Sit (Left) | circuit | exercise | female | 21s | | `CLE_53_E06` | `CLE_53` Core Power Flow | Single-Leg L-Sit (Right) | circuit | exercise | female | 20s | | `CLE_53_E07` | `CLE_53` Core Power Flow | Starfish Crunches | circuit | exercise | female | 34s | | `CLE_53_E08` | `CLE_53` Core Power Flow | Leg Raises | circuit | exercise | female | 34s | | `CLE_54_E01` | `CLE_54` Grow Your Glutes | Alternating 90/90 into Shin Box | warm-up | exercise | female | 86s | | `CLE_54_E02` | `CLE_54` Grow Your Glutes | Straddle Jump Rope | warm-up | exercise | female | 6s | | `CLE_54_E03` | `CLE_54` Grow Your Glutes | Forward-Straddle Jump Rope | warm-up | exercise | female | 6s | | `CLE_54_E04` | `CLE_54` Grow Your Glutes | Lateral to Curtsy Lunge (Left) | circuit | exercise | female | 36s | | `CLE_54_E05` | `CLE_54` Grow Your Glutes | Lateral to Curtsy Lunge (Right) | circuit | exercise | female | 35s | | `CLE_54_E06` | `CLE_54` Grow Your Glutes | Bridge Knee to Chest (Left) | circuit | exercise | female | 38s | | `CLE_54_E07` | `CLE_54` Grow Your Glutes | Bridge Knee to Chest (Right) | circuit | exercise | female | 37s | | `CLE_54_E08` | `CLE_54` Grow Your Glutes | Supine V Stretch | cool-down | exercise | female | 80s | | `CLE_55_E01` | `CLE_55` Stretch and Release | Thread the Needle (Left) | circuit | exercise | female | 80s | | `CLE_55_E02` | `CLE_55` Stretch and Release | Thread the Needle (Right) | circuit | exercise | female | 80s | | `CLE_55_E03` | `CLE_55` Stretch and Release | Full Pigeon Pose (Left) | circuit | exercise | female | 88s | | `CLE_55_E04` | `CLE_55` Stretch and Release | Full Pigeon Pose (Right) | circuit | exercise | female | 80s | | `CLE_56_E01` | `CLE_56` Total Body Circuit | Forward Toe-Taps Jump Rope | circuit | exercise | female | 6s | ### Calisthenics Workout | Code | Workout | Exercise | Phase | Kind | Model | Sec | |---|---|---|---|---|---|---| | `CLW_01_E01` | `CLW_01` Full Body Basics | Dynamic Side Bends | warm-up | exercise | male | 31s | | `CLW_01_E02` | `CLW_01` Full Body Basics | Elbow Rotations | warm-up | exercise | male | 26s | | `CLW_01_E03` | `CLW_01` Full Body Basics | Cross-Body Shoulder Stretch | warm-up | exercise | male | 28s | | `CLW_01_E04` | `CLW_01` Full Body Basics | Roll Down | warm-up | exercise | male | 23s | | `CLW_01_E05` | `CLW_01` Full Body Basics | Standing Hip Rotations (Left) | warm-up | exercise | male | 26s | | `CLW_01_E06` | `CLW_01` Full Body Basics | Standing Hip Rotations (Right) | warm-up | exercise | male | 26s | | `CLW_01_E07` | `CLW_01` Full Body Basics | Kneeling Push-Ups | circuit | exercise | male | 25s | | `CLW_01_E08` | `CLW_01` Full Body Basics | Bird Dogs | circuit | exercise | male | 24s | | `CLW_01_E09` | `CLW_01` Full Body Basics | Elbow Plank | circuit | exercise | male | 25s | | `CLW_01_E10` | `CLW_01` Full Body Basics | Dead Bug | circuit | exercise | male | 24s | | `CLW_01_E11` | `CLW_01` Full Body Basics | Glute Bridge | circuit | exercise | male | 25s | | `CLW_01_E12` | `CLW_01` Full Body Basics | Heel Taps | circuit | exercise | male | 23s | | `CLW_01_E13` | `CLW_01` Full Body Basics | Bodyweight Squat | circuit | exercise | male | 24s | | `CLW_01_E14` | `CLW_01` Full Body Basics | Shadow Boxing | circuit | exercise | male | 23s | | `CLW_01_E15` | `CLW_01` Full Body Basics | Burpee Walk | circuit | exercise | male | 20s | | `CLW_01_E16` | `CLW_01` Full Body Basics | Hip Flexor Stretch | cool-down | exercise | male | 32s | | `CLW_01_E17` | `CLW_01` Full Body Basics | Plank to Downward Dog | cool-down | exercise | male | 27s | | `CLW_01_E18` | `CLW_01` Full Body Basics | Cat to Cow Stretch | cool-down | exercise | male | 25s | | `CLW_01_E19` | `CLW_01` Full Body Basics | Child's Pose | cool-down | exercise | male | 40s | | `CLW_02_E01` | `CLW_02` Core Conditioning | Wrist Warm-Up | warm-up | exercise | male | 21s | | `CLW_02_E02` | `CLW_02` Core Conditioning | Chest Openers with Rotation | warm-up | exercise | male | 35s | | `CLW_02_E03` | `CLW_02` Core Conditioning | Standing Hip Rotation | warm-up | exercise | male | 28s | | `CLW_02_E04` | `CLW_02` Core Conditioning | Deep Side to Side Lunge | warm-up | exercise | male | 31s | | `CLW_02_E05` | `CLW_02` Core Conditioning | Mountain Climber | circuit | exercise | male | 26s | | `CLW_02_E06` | `CLW_02` Core Conditioning | Superman | circuit | exercise | male | 24s | | `CLW_02_E07` | `CLW_02` Core Conditioning | Sit Up | circuit | exercise | male | 20s | | `CLW_02_E08` | `CLW_02` Core Conditioning | Leg Raises | circuit | exercise | male | 29s | | `CLW_02_E09` | `CLW_02` Core Conditioning | Side Plank (Left) | circuit | exercise | male | 25s | | `CLW_02_E10` | `CLW_02` Core Conditioning | Side Plank (Right) | circuit | exercise | male | 25s | | `CLW_02_E11` | `CLW_02` Core Conditioning | Seated Hamstring Stretch | cool-down | exercise | male | 39s | | `CLW_02_E12` | `CLW_02` Core Conditioning | Seated Lower Back Stretch (Left) | cool-down | exercise | male | 40s | | `CLW_02_E13` | `CLW_02` Core Conditioning | Seated Lower Back Stretch (Right) | cool-down | exercise | male | 44s | | `CLW_03_E01` | `CLW_03` Upper Body Set | Cross-Body Shoulder Stretch (Left) | warm-up | exercise | male | 39s | | `CLW_03_E02` | `CLW_03` Upper Body Set | Cross-Body Shoulder Stretch (Right) | warm-up | exercise | male | 40s | | `CLW_03_E03` | `CLW_03` Upper Body Set | Active Calf & Hamstring Stretch | warm-up | exercise | male | 25s | | `CLW_03_E04` | `CLW_03` Upper Body Set | Malasana Squat | warm-up | exercise | male | 40s | | `CLW_03_E05` | `CLW_03` Upper Body Set | Kneeling Archer Push-Ups | circuit | exercise | male | 26s | | `CLW_03_E06` | `CLW_03` Upper Body Set | Airplane Plank | circuit | exercise | male | 28s | | `CLW_03_E07` | `CLW_03` Upper Body Set | Plank Punches | circuit | exercise | male | 27s | | `CLW_03_E08` | `CLW_03` Upper Body Set | Prayer Pulse | circuit | exercise | male | 28s | | `CLW_03_E09` | `CLW_03` Upper Body Set | Overhead Lat Stretch | cool-down | exercise | male | 27s | | `CLW_04_E01` | `CLW_04` Dynamic Movement Flow | Sumo Squat | circuit | exercise | male | 28s | | `CLW_04_E02` | `CLW_04` Dynamic Movement Flow | High Knees | circuit | exercise | male | 20s | | `CLW_04_E03` | `CLW_04` Dynamic Movement Flow | Hip Thrust | circuit | exercise | male | 34s | | `CLW_04_E04` | `CLW_04` Dynamic Movement Flow | Spinal Twist (Left) | cool-down | exercise | male | 39s | | `CLW_04_E05` | `CLW_04` Dynamic Movement Flow | Spinal Twist (Right) | cool-down | exercise | male | 41s | | `CLW_05_E01` | `CLW_05` Legs and Abs Set | Full Lunge Leg Rolls | warm-up | exercise | male | 37s | | `CLW_05_E02` | `CLW_05` Legs and Abs Set | Lunge with Thoracic Rotation (Left) | warm-up | exercise | male | 21s | | `CLW_05_E03` | `CLW_05` Legs and Abs Set | Lunge with Thoracic Rotation (Right) | warm-up | exercise | male | 21s | | `CLW_05_E04` | `CLW_05` Legs and Abs Set | Standing Side Crunch (Left) | circuit | exercise | male | 25s | | `CLW_05_E05` | `CLW_05` Legs and Abs Set | Standing Side Crunch (Right) | circuit | exercise | male | 26s | | `CLW_05_E06` | `CLW_05` Legs and Abs Set | Elbow to Knee Bird Dogs (Left) | circuit | exercise | male | 26s | | `CLW_05_E07` | `CLW_05` Legs and Abs Set | Elbow to Knee Bird Dogs (Right) | circuit | exercise | male | 29s | | `CLW_05_E08` | `CLW_05` Legs and Abs Set | Donkey Kicks (Left) | circuit | exercise | male | 27s | | `CLW_05_E09` | `CLW_05` Legs and Abs Set | Donkey Kicks (Right) | circuit | exercise | male | 25s | | `CLW_05_E10` | `CLW_05` Legs and Abs Set | Glutes Bridge Hold | circuit | exercise | male | 25s | | `CLW_05_E11` | `CLW_05` Legs and Abs Set | Figure 4 Stretch (Right) | cool-down | exercise | male | 40s | | `CLW_05_E12` | `CLW_05` Legs and Abs Set | Figure 4 Stretch (Left) | cool-down | exercise | male | 41s | | `CLW_05_E13` | `CLW_05` Legs and Abs Set | Knees to Chest Stretch | cool-down | exercise | male | 27s | | `CLW_07_E01` | `CLW_07` Leg & Core Control | Butt Kicks | circuit | exercise | male | 19s | | `CLW_07_E02` | `CLW_07` Leg & Core Control | Lizard Lunge (Right) | cool-down | exercise | male | 41s | | `CLW_07_E03` | `CLW_07` Leg & Core Control | Lizard Lunge (Left) | cool-down | exercise | male | 41s | | `CLW_08_E01` | `CLW_08` Full Body Flow | Side to Side Lunge | warm-up | exercise | male | 28s | | `CLW_08_E02` | `CLW_08` Full Body Flow | Side Step Squats | circuit | exercise | male | 27s | | `CLW_08_E03` | `CLW_08` Full Body Flow | Scissor Kicks | circuit | exercise | male | 25s | | `CLW_08_E04` | `CLW_08` Full Body Flow | Cobra | cool-down | exercise | male | 40s | | `CLW_09_E01` | `CLW_09` Full Body Strength | Kneeling Pseudo Push-Ups | circuit | exercise | male | 18s | | `CLW_09_E02` | `CLW_09` Full Body Strength | Seated Butterfly Stretch | cool-down | exercise | male | 27s | | `CLW_11_E01` | `CLW_11` Upper Body Push | Wide Grip Push-Ups | circuit | exercise | male | 23s | | `CLW_11_E02` | `CLW_11` Upper Body Push | Jump Plank | circuit | exercise | male | 26s | | `CLW_11_E03` | `CLW_11` Upper Body Push | Narrow Grip Kneeling Push-Ups | circuit | exercise | male | 25s | | `CLW_11_E04` | `CLW_11` Upper Body Push | Mountain Climber to Push-ups from Knees | circuit | exercise | male | 29s | | `CLW_11_E05` | `CLW_11` Upper Body Push | Commando Plank | circuit | exercise | male | 27s | | `CLW_11_E06` | `CLW_11` Upper Body Push | Scapular Push-Ups | circuit | exercise | male | 26s | | `CLW_12_E01` | `CLW_12` Full Body Burn | Squat Jumps | circuit | exercise | male | 23s | | `CLW_12_E02` | `CLW_12` Full Body Burn | Squats with Kickback | circuit | exercise | male | 25s | | `CLW_12_E03` | `CLW_12` Full Body Burn | Kneeling Push-Ups (hands-off) | circuit | exercise | male | 28s | | `CLW_12_E04` | `CLW_12` Full Body Burn | Back Bow with Alternating Heel Taps | circuit | exercise | male | 24s | | `CLW_14_E01` | `CLW_14` Strength & Stability Sesh | Wave Push-Up | circuit | exercise | male | 27s | | `CLW_14_E02` | `CLW_14` Strength & Stability Sesh | Spider + Cross Plank | circuit | exercise | male | 26s | | `CLW_15_E01` | `CLW_15` Strength & Cardio Session | Reverse Glute Raise | circuit | exercise | male | 23s | | `CLW_15_E02` | `CLW_15` Strength & Cardio Session | Deep Squat + Thoracic Rotation | cool-down | exercise | male | 32s | | `CLW_16_E01` | `CLW_16` Leg & Core in Focus | 90/90 Flip: Hip Mobility | warm-up | exercise | male | 22s | | `CLW_16_E02` | `CLW_16` Leg & Core in Focus | Side Lunges (Left) | circuit | exercise | male | 22s | | `CLW_16_E03` | `CLW_16` Leg & Core in Focus | Side Lunges (Right) | circuit | exercise | male | 22s | | `CLW_16_E04` | `CLW_16` Leg & Core in Focus | Pike Push-Ups | circuit | exercise | male | 19s | | `CLW_16_E05` | `CLW_16` Leg & Core in Focus | Airplane Push-Ups | circuit | exercise | male | 25s | | `CLW_17_E01` | `CLW_17` Total Body Conditioning | Kneeling Push-Ups to Down Dog | circuit | exercise | male | 27s | | `CLW_18_E01` | `CLW_18` Lower Body Sculpt | 5 o'Clock Lunges (Right) | circuit | exercise | male | 26s | | `CLW_18_E02` | `CLW_18` Lower Body Sculpt | 5 o'Clock Lunges (Left) | circuit | exercise | male | 26s | | `CLW_18_E03` | `CLW_18` Lower Body Sculpt | Squat with Calf Raise | circuit | exercise | male | 26s | | `CLW_18_E04` | `CLW_18` Lower Body Sculpt | Alternating Glute Bridge Hold | circuit | exercise | male | 27s | | `CLW_18_E05` | `CLW_18` Lower Body Sculpt | Bridge Hold with Knee to Chest | circuit | exercise | male | 25s | | `CLW_19_E01` | `CLW_19` Leg & Abs Focus | Alternating Forward Lunge | circuit | exercise | male | 24s | | `CLW_19_E02` | `CLW_19` Leg & Abs Focus | Backward Lunges (Right) | circuit | exercise | male | 25s | | `CLW_19_E03` | `CLW_19` Leg & Abs Focus | Backward Lunges (Left) | circuit | exercise | male | 24s | | `CLW_19_E04` | `CLW_19` Leg & Abs Focus | Windshield Wipers | circuit | exercise | male | 28s | | `CLW_20_E01` | `CLW_20` Arms & Abs Activation | Plank Jack Shoulder Taps | circuit | exercise | male | 27s | | `CLW_21_E01` | `CLW_21` Full Body Circuit | Squat to Walkout | circuit | exercise | male | 27s | | `CLW_21_E02` | `CLW_21` Full Body Circuit | Hindu Push-Ups | circuit | exercise | male | 20s | | `CLW_21_E03` | `CLW_21` Full Body Circuit | Modified Diagonal Mountain Climber | circuit | exercise | male | 24s | | `CLW_21_E04` | `CLW_21` Full Body Circuit | Hip Thrust to Knee Strike (Left) | circuit | exercise | male | 25s | | `CLW_21_E05` | `CLW_21` Full Body Circuit | Hip Thrust to Knee Strike (Right) | circuit | exercise | male | 23s | | `CLW_21_E06` | `CLW_21` Full Body Circuit | L-Crunch (Left) | circuit | exercise | male | 21s | | `CLW_21_E07` | `CLW_21` Full Body Circuit | L-Crunch (Right) | circuit | exercise | male | 24s | | `CLW_22_E01` | `CLW_22` Dynamic Full Body Set | Burpee | circuit | exercise | male | 20s | | `CLW_22_E02` | `CLW_22` Dynamic Full Body Set | Wood Chops (Left) | circuit | exercise | male | 25s | | `CLW_22_E03` | `CLW_22` Dynamic Full Body Set | Wood Chops (Right) | circuit | exercise | male | 27s | | `CLW_22_E04` | `CLW_22` Dynamic Full Body Set | V Sit Bicycles | circuit | exercise | male | 23s | | `CLW_22_E05` | `CLW_22` Dynamic Full Body Set | Seated Knee Tucks | circuit | exercise | male | 27s | | `CLW_22_E06` | `CLW_22` Dynamic Full Body Set | Kayak Abs | circuit | exercise | male | 25s | | `CLW_23_E01` | `CLW_23` Chest-Focused HIIT | Archer Push-Ups | circuit | exercise | male | 26s | | `CLW_23_E02` | `CLW_23` Chest-Focused HIIT | Pigeon Pose (Right) | cool-down | exercise | male | 34s | | `CLW_23_E03` | `CLW_23` Chest-Focused HIIT | Pigeon Pose (Left) | cool-down | exercise | male | 40s | | `CLW_24_E01` | `CLW_24` Power & Cardio Flow | Single Leg Push-ups (Left) | circuit | exercise | male | 22s | | `CLW_24_E02` | `CLW_24` Power & Cardio Flow | Single Leg Push-ups (Right) | circuit | exercise | male | 18s | | `CLW_25_E01` | `CLW_25` Chest Strength Flow | Side Stretch (Left) | warm-up | exercise | male | 26s | | `CLW_25_E02` | `CLW_25` Chest Strength Flow | Side Stretch (Right) | warm-up | exercise | male | 28s | | `CLW_25_E03` | `CLW_25` Chest Strength Flow | Plank to Kick Back | circuit | exercise | male | 29s | | `CLW_25_E04` | `CLW_25` Chest Strength Flow | Narrow Grip Push-ups | circuit | exercise | male | 18s | | `CLW_25_E05` | `CLW_25` Chest Strength Flow | Reverse Plank Tricep Dips | circuit | exercise | male | 28s | | `CLW_26_E01` | `CLW_26` 360 Stability Training | High Plank Walk Out | circuit | exercise | male | 30s | | `CLW_26_E02` | `CLW_26` 360 Stability Training | Extended Suitcase Crunch | circuit | exercise | male | 20s | | `CLW_26_E03` | `CLW_26` 360 Stability Training | Glute Bridges with Abduction | circuit | exercise | male | 25s | | `CLW_27_E01` | `CLW_27` Leg Power Flow | Curtsey Lunges (Left) | circuit | exercise | male | 23s | | `CLW_27_E02` | `CLW_27` Leg Power Flow | Curtsey Lunges (Right) | circuit | exercise | male | 26s | | `CLW_28_E01` | `CLW_28` Full Body in Motion | Suitcase Sit Up | circuit | exercise | male | 26s | | `CLW_29_E01` | `CLW_29` Strong & Sculpted | Alternating Overhead Reach | warm-up | exercise | female | 86s | | `CLW_29_E02` | `CLW_29` Strong & Sculpted | Alternating Tin Soldiers | warm-up | exercise | female | 84s | | `CLW_29_E03` | `CLW_29` Strong & Sculpted | Dynamic Chest Stretch | warm-up | exercise | female | 81s | | `CLW_29_E04` | `CLW_29` Strong & Sculpted | Windmill Twists | warm-up | exercise | female | 83s | | `CLW_29_E05` | `CLW_29` Strong & Sculpted | Snow Angels | circuit | exercise | female | 85s | | `CLW_29_E06` | `CLW_29` Strong & Sculpted | Bent-Over Arm Raise | circuit | exercise | female | 91s | | `CLW_29_E07` | `CLW_29` Strong & Sculpted | Down-Dog Toe Taps | circuit | exercise | female | 83s | | `CLW_29_E08` | `CLW_29` Strong & Sculpted | Bird Dog Pulse (Left) | circuit | exercise | female | 84s | | `CLW_29_E09` | `CLW_29` Strong & Sculpted | Bird Dog Pulse (Right) | circuit | exercise | female | 32s | | `CLW_29_E10` | `CLW_29` Strong & Sculpted | Knee Push-Ups | circuit | exercise | female | 89s | | `CLW_29_E11` | `CLW_29` Strong & Sculpted | Crab Foot Lifts | circuit | exercise | female | 87s | | `CLW_29_E12` | `CLW_29` Strong & Sculpted | Seated Back Arch | cool-down | exercise | female | 81s | | `CLW_29_E13` | `CLW_29` Strong & Sculpted | Cross-Body Lat Stretch (Left) | cool-down | exercise | female | 82s | | `CLW_29_E14` | `CLW_29` Strong & Sculpted | Cross-Body Lat Stretch (Right) | cool-down | exercise | female | 83s | | `CLW_30_E01` | `CLW_30` Glute & Thigh Sculpt | Low-Impact Jacks | warm-up | exercise | female | 81s | | `CLW_30_E02` | `CLW_30` Glute & Thigh Sculpt | Hurdle Steps | warm-up | exercise | female | 88s | | `CLW_30_E03` | `CLW_30` Glute & Thigh Sculpt | Lateral Hip Opener | warm-up | exercise | female | 82s | | `CLW_30_E04` | `CLW_30` Glute & Thigh Sculpt | Squat | circuit | exercise | female | 83s | | `CLW_30_E05` | `CLW_30` Glute & Thigh Sculpt | Alternating Reverse Lunges | circuit | exercise | female | 96s | | `CLW_30_E06` | `CLW_30` Glute & Thigh Sculpt | Alternating Side Lunges | circuit | exercise | female | 81s | | `CLW_30_E07` | `CLW_30` Glute & Thigh Sculpt | Lateral Reach Lunge (Left) | circuit | exercise | female | 82s | | `CLW_30_E08` | `CLW_30` Glute & Thigh Sculpt | Lateral Reach Lunge (Right) | circuit | exercise | female | 86s | | `CLW_30_E09` | `CLW_30` Glute & Thigh Sculpt | Rainbow Leg Lifts (Left) | circuit | exercise | female | 82s | | `CLW_30_E10` | `CLW_30` Glute & Thigh Sculpt | Rainbow Leg Lifts (Right) | circuit | exercise | female | 82s | | `CLW_30_E11` | `CLW_30` Glute & Thigh Sculpt | Glute Bridges | circuit | exercise | female | 85s | | `CLW_30_E12` | `CLW_30` Glute & Thigh Sculpt | Knee to Chest (Left) | cool-down | exercise | female | 80s | | `CLW_30_E13` | `CLW_30` Glute & Thigh Sculpt | Knee to Chest (Right) | cool-down | exercise | female | 81s | | `CLW_30_E14` | `CLW_30` Glute & Thigh Sculpt | Seated Cross-Legged Forward Fold | cool-down | exercise | female | 80s | | `CLW_31_E01` | `CLW_31` Ab Shredder | Standing Cross Crawl March | warm-up | exercise | female | 84s | | `CLW_31_E02` | `CLW_31` Ab Shredder | Overhead Arm Circles | warm-up | exercise | female | 80s | | `CLW_31_E03` | `CLW_31` Ab Shredder | Alternating Knee Hugs | warm-up | exercise | female | 84s | | `CLW_31_E04` | `CLW_31` Ab Shredder | Dead Bug | circuit | exercise | female | 92s | | `CLW_31_E05` | `CLW_31` Ab Shredder | Bicycle Crunches | circuit | exercise | female | 80s | | `CLW_31_E06` | `CLW_31` Ab Shredder | Bent Knee Hollow Hold | circuit | exercise | female | 81s | | `CLW_31_E07` | `CLW_31` Ab Shredder | Straight Leg Crunches | circuit | exercise | female | 81s | | `CLW_31_E08` | `CLW_31` Ab Shredder | Bird Dog (Right) | circuit | exercise | female | 84s | | `CLW_31_E09` | `CLW_31` Ab Shredder | Bird Dog (Left) | circuit | exercise | female | 83s | | `CLW_31_E10` | `CLW_31` Ab Shredder | Slow Mountain Climbers | circuit | exercise | female | 81s | | `CLW_31_E11` | `CLW_31` Ab Shredder | Knee-Plank Shoulder Taps | circuit | exercise | female | 80s | | `CLW_31_E12` | `CLW_31` Ab Shredder | Cobra Stretch | cool-down | exercise | female | 82s | | `CLW_31_E13` | `CLW_31` Ab Shredder | Puppy Pose | cool-down | exercise | female | 86s | | `CLW_31_E14` | `CLW_31` Ab Shredder | Child's Pose | cool-down | exercise | female | 80s | | `CLW_32_E01` | `CLW_32` Total Body Circuit | Bear to Down-Dog | warm-up | exercise | female | 85s | | `CLW_32_E02` | `CLW_32` Total Body Circuit | Downward Dog Pedal | warm-up | exercise | female | 82s | | `CLW_32_E03` | `CLW_32` Total Body Circuit | Kneeling Cat-Cow | warm-up | exercise | female | 80s | | `CLW_32_E04` | `CLW_32` Total Body Circuit | Dynamic Thread the Needle (Left) | warm-up | exercise | female | 81s | | `CLW_32_E05` | `CLW_32` Total Body Circuit | Dynamic Thread the Needle (Right) | warm-up | exercise | female | 81s | | `CLW_32_E06` | `CLW_32` Total Body Circuit | Quadruped Donkey Kicks | circuit | exercise | female | 85s | | `CLW_32_E07` | `CLW_32` Total Body Circuit | Figure Four Stretch (Left) | cool-down | exercise | female | 92s | | `CLW_32_E08` | `CLW_32` Total Body Circuit | Figure Four Stretch (Right) | cool-down | exercise | female | 87s | | `CLW_33_E01` | `CLW_33` Lower Body Lift | 5 O'Clock Lunges (Left) | circuit | exercise | female | 87s | | `CLW_33_E02` | `CLW_33` Lower Body Lift | 5 O'Clock Lunges (Right) | circuit | exercise | female | 91s | | `CLW_33_E03` | `CLW_33` Lower Body Lift | Quarter Squats | circuit | exercise | female | 81s | | `CLW_33_E04` | `CLW_33` Lower Body Lift | Single Leg Glute Bridges (Left) | circuit | exercise | female | 82s | | `CLW_33_E05` | `CLW_33` Lower Body Lift | Single Leg Glute Bridges (Right) | circuit | exercise | female | 84s | | `CLW_33_E06` | `CLW_33` Lower Body Lift | Prone Quad Stretch (Left) | cool-down | exercise | female | 84s | | `CLW_33_E07` | `CLW_33` Lower Body Lift | Prone Quad Stretch (Right) | cool-down | exercise | female | 82s | | `CLW_34_E01` | `CLW_34` Upper Body Toning | Arm Circles (Backwards) | warm-up | exercise | female | 86s | | `CLW_34_E02` | `CLW_34` Upper Body Toning | Arm Circles (Forwards) | warm-up | exercise | female | 80s | | `CLW_34_E03` | `CLW_34` Upper Body Toning | Robot Arms | circuit | exercise | female | 81s | | `CLW_34_E04` | `CLW_34` Upper Body Toning | Knee Elbow Plank | circuit | exercise | female | 83s | | `CLW_34_E05` | `CLW_34` Upper Body Toning | Cobra Push-Up | circuit | exercise | female | 83s | | `CLW_34_E06` | `CLW_34` Upper Body Toning | Kneeling Chest Opener | cool-down | exercise | female | 86s | | `CLW_34_E07` | `CLW_34` Upper Body Toning | Thread the Needle (Right) | cool-down | exercise | female | 80s | | `CLW_34_E08` | `CLW_34` Upper Body Toning | Thread the Needle (Left) | cool-down | exercise | female | 80s | | `CLW_35_E01` | `CLW_35` Total Body Mobility | Straddle Good Mornings | circuit | exercise | female | 90s | | `CLW_35_E02` | `CLW_35` Total Body Mobility | Lateral Neck Stretch (Right) | circuit | exercise | female | 84s | | `CLW_35_E03` | `CLW_35` Total Body Mobility | Lateral Neck Stretch (Left) | circuit | exercise | female | 80s | | `CLW_35_E04` | `CLW_35` Total Body Mobility | Seated Spinal Twist (Right) | circuit | exercise | female | 84s | | `CLW_35_E05` | `CLW_35` Total Body Mobility | Seated Spinal Twist (Left) | circuit | exercise | female | 84s | | `CLW_35_E06` | `CLW_35` Total Body Mobility | Seated Tricep Stretch (Right) | circuit | exercise | female | 80s | | `CLW_35_E07` | `CLW_35` Total Body Mobility | Seated Tricep Stretch (Left) | circuit | exercise | female | 81s | | `CLW_35_E08` | `CLW_35` Total Body Mobility | Modified 90/90 Hip Openers | circuit | exercise | female | 80s | | `CLW_35_E09` | `CLW_35` Total Body Mobility | Alternating Supine Scorpion | circuit | exercise | female | 88s | | `CLW_35_E10` | `CLW_35` Total Body Mobility | Supine Pelvic Tilts | circuit | exercise | female | 81s | | `CLW_35_E11` | `CLW_35` Total Body Mobility | Corpse Pose | circuit | exercise | female | 85s | | `CLW_36_E01` | `CLW_36` Core Sculpt & Strength | Quadruped Wrist Extension | warm-up | exercise | female | 85s | | `CLW_36_E02` | `CLW_36` Core Sculpt & Strength | Reverse Crunches | circuit | exercise | female | 82s | | `CLW_36_E03` | `CLW_36` Core Sculpt & Strength | Supine Twist (Right) | cool-down | exercise | female | 80s | | `CLW_36_E04` | `CLW_36` Core Sculpt & Strength | Supine Twist (Left) | cool-down | exercise | female | 80s | | `CLW_36_E05` | `CLW_36` Core Sculpt & Strength | Supine Chest Stretch | cool-down | exercise | female | 81s | | `CLW_37_E01` | `CLW_37` Lower Body Activation | Adductor Rocks (Left) | warm-up | exercise | female | 83s | | `CLW_37_E02` | `CLW_37` Lower Body Activation | Adductor Rocks (Right) | warm-up | exercise | female | 82s | | `CLW_37_E03` | `CLW_37` Lower Body Activation | Quad Rockers | warm-up | exercise | female | 82s | | `CLW_37_E04` | `CLW_37` Lower Body Activation | Sumo Squat | circuit | exercise | female | 83s | | `CLW_37_E05` | `CLW_37` Lower Body Activation | Squat Pulses | circuit | exercise | female | 83s | | `CLW_37_E06` | `CLW_37` Lower Body Activation | Side Squat Walk | circuit | exercise | female | 81s | | `CLW_37_E07` | `CLW_37` Lower Body Activation | Reverse Lunges (Right) | circuit | exercise | female | 81s | | `CLW_37_E08` | `CLW_37` Lower Body Activation | Reverse Lunges (Left) | circuit | exercise | female | 83s | | `CLW_37_E09` | `CLW_37` Lower Body Activation | Quad Stretch (Right) | cool-down | exercise | female | 80s | | `CLW_37_E10` | `CLW_37` Lower Body Activation | Quad Stretch (Left) | cool-down | exercise | female | 80s | | `CLW_38_E01` | `CLW_38` Good Posture Flow | Kneeling Scapular Activation | warm-up | exercise | female | 84s | | `CLW_38_E02` | `CLW_38` Good Posture Flow | Prone Scorpion | warm-up | exercise | female | 95s | | `CLW_38_E03` | `CLW_38` Good Posture Flow | Dart Lifts | circuit | exercise | female | 82s | | `CLW_38_E04` | `CLW_38` Good Posture Flow | Superman Pulses | circuit | exercise | female | 83s | | `CLW_38_E05` | `CLW_38` Good Posture Flow | Quadruped Thoracic Rotation (Right) | circuit | exercise | female | 84s | | `CLW_38_E06` | `CLW_38` Good Posture Flow | Quadruped Thoracic Rotation (Left) | circuit | exercise | female | 90s | | `CLW_38_E07` | `CLW_38` Good Posture Flow | Knee Plank Rows | circuit | exercise | female | 89s | | `CLW_38_E08` | `CLW_38` Good Posture Flow | Bear Crawl | circuit | exercise | female | 89s | | `CLW_39_E01` | `CLW_39` Full Body Control | Jumping Jacks | warm-up | exercise | female | 81s | | `CLW_39_E02` | `CLW_39` Full Body Control | Quad Stretch With Reach | warm-up | exercise | female | 82s | | `CLW_39_E03` | `CLW_39` Full Body Control | Speedskaters | warm-up | exercise | female | 86s | | `CLW_39_E04` | `CLW_39` Full Body Control | Inchworms | circuit | exercise | female | 92s | | `CLW_39_E05` | `CLW_39` Full Body Control | Kneeling Hip Thrust | circuit | exercise | female | 81s | | `CLW_39_E06` | `CLW_39` Full Body Control | Bear to Underswitch (Left) | circuit | exercise | female | 87s | | `CLW_39_E07` | `CLW_39` Full Body Control | Bear to Underswitch (Right) | circuit | exercise | female | 81s | | `CLW_39_E08` | `CLW_39` Full Body Control | Butterfly Stretch | cool-down | exercise | female | 84s | | `CLW_40_E01` | `CLW_40` Abs Kickstart | 90/90 Hip Openers | warm-up | exercise | female | 80s | | `CLW_40_E02` | `CLW_40` Abs Kickstart | Pigeon With Arm Reach (Left) | warm-up | exercise | female | 82s | | `CLW_40_E03` | `CLW_40` Abs Kickstart | Pigeon With Arm Reach (Right) | warm-up | exercise | female | 80s | | `CLW_40_E04` | `CLW_40` Abs Kickstart | Leg Raises | circuit | exercise | female | 83s | | `CLW_40_E05` | `CLW_40` Abs Kickstart | Vertical Scissor Kicks | circuit | exercise | female | 80s | | `CLW_40_E06` | `CLW_40` Abs Kickstart | Knees to Chest Plank | circuit | exercise | female | 86s | | `CLW_40_E07` | `CLW_40` Abs Kickstart | Body Saw Plank | circuit | exercise | female | 82s | | `CLW_40_E08` | `CLW_40` Abs Kickstart | High Plank Knee Twists | circuit | exercise | female | 81s | | `CLW_40_E09` | `CLW_40` Abs Kickstart | Side Stretch (Left) | cool-down | exercise | female | 85s | | `CLW_40_E10` | `CLW_40` Abs Kickstart | Side Stretch (Right) | cool-down | exercise | female | 85s | | `CLW_41_E01` | `CLW_41` Upper Body Set | Knee Hand Release Push-Ups | circuit | exercise | female | 84s | | `CLW_41_E02` | `CLW_41` Upper Body Set | Elbow Plank | circuit | exercise | female | 82s | | `CLW_41_E03` | `CLW_41` Upper Body Set | Prone Swimmer Pulls | circuit | exercise | female | 84s | | `CLW_41_E04` | `CLW_41` Upper Body Set | Prone Swimming | circuit | exercise | female | 83s | | `CLW_42_E01` | `CLW_42` Full Body Activate | Crab Knee Touches | circuit | exercise | female | 81s | | `CLW_42_E02` | `CLW_42` Full Body Activate | Seated Oblique Twist | circuit | exercise | female | 83s | | `CLW_42_E03` | `CLW_42` Full Body Activate | Reverse Plank | circuit | exercise | female | 83s | | `CLW_42_E04` | `CLW_42` Full Body Activate | Oblique Twist Balance | circuit | exercise | female | 80s | | `CLW_42_E05` | `CLW_42` Full Body Activate | Reverse Plank Leg-Lifts | circuit | exercise | female | 84s | | `CLW_42_E06` | `CLW_42` Full Body Activate | Glute Bridge Marches | circuit | exercise | female | 85s | | `CLW_42_E07` | `CLW_42` Full Body Activate | Windshield Wipers | circuit | exercise | female | 88s | | `CLW_42_E08` | `CLW_42` Full Body Activate | Frog Pumps | circuit | exercise | female | 82s | | `CLW_42_E09` | `CLW_42` Full Body Activate | Happy Baby Stretch | cool-down | exercise | female | 80s | | `CLW_42_E10` | `CLW_42` Full Body Activate | Hip Flexor Stretch (Right) | cool-down | exercise | female | 80s | | `CLW_42_E11` | `CLW_42` Full Body Activate | Hip Flexor Stretch (Left) | cool-down | exercise | female | 86s | | `CLW_43_E01` | `CLW_43` Deep Stretch Session | Forward Leg Swings (Right) | circuit | exercise | female | 81s | | `CLW_43_E02` | `CLW_43` Deep Stretch Session | Forward Leg Swings (Left) | circuit | exercise | female | 82s | | `CLW_43_E03` | `CLW_43` Deep Stretch Session | Wall Lat Stretch | circuit | exercise | female | 80s | | `CLW_43_E04` | `CLW_43` Deep Stretch Session | Wall Banana Stretch (Right) | circuit | exercise | female | 80s | | `CLW_43_E05` | `CLW_43` Deep Stretch Session | Wall Banana Stretch (Left) | circuit | exercise | female | 80s | | `CLW_43_E06` | `CLW_43` Deep Stretch Session | Kneeling Wall Sweeps (Left) | circuit | exercise | female | 90s | | `CLW_43_E07` | `CLW_43` Deep Stretch Session | Kneeling Wall Sweeps (Right) | circuit | exercise | female | 82s | | `CLW_43_E08` | `CLW_43` Deep Stretch Session | Twisted Lizard Stretch (Left) | circuit | exercise | female | 80s | | `CLW_43_E09` | `CLW_43` Deep Stretch Session | Twisted Lizard Stretch (Right) | circuit | exercise | female | 84s | | `CLW_43_E10` | `CLW_43` Deep Stretch Session | Down-Dog to Pigeon | circuit | exercise | female | 96s | | `CLW_43_E11` | `CLW_43` Deep Stretch Session | Dynamic Hamstring Extender (Left) | circuit | exercise | female | 85s | | `CLW_43_E12` | `CLW_43` Deep Stretch Session | Dynamic Hamstring Extender (Right) | circuit | exercise | female | 80s | | `CLW_43_E13` | `CLW_43` Deep Stretch Session | Supine TFL Stretch (Right) | circuit | exercise | female | 80s | | `CLW_43_E14` | `CLW_43` Deep Stretch Session | Supine TFL Stretch (Left) | circuit | exercise | female | 80s | | `CLW_44_E01` | `CLW_44` Toned & Trimmed Legs | Alternating Hip Cradles | warm-up | exercise | female | 88s | | `CLW_44_E02` | `CLW_44` Toned & Trimmed Legs | Highland Jacks | warm-up | exercise | female | 81s | | `CLW_44_E03` | `CLW_44` Toned & Trimmed Legs | Prayer Squat Opener | warm-up | exercise | female | 81s | | `CLW_44_E04` | `CLW_44` Toned & Trimmed Legs | Alternating Pulse Lunges | circuit | exercise | female | 82s | | `CLW_44_E05` | `CLW_44` Toned & Trimmed Legs | Cossack Squats | circuit | exercise | female | 85s | | `CLW_44_E06` | `CLW_44` Toned & Trimmed Legs | Sumo Toe Touch | circuit | exercise | female | 82s | | `CLW_44_E07` | `CLW_44` Toned & Trimmed Legs | Side Lying Abduction (Right) | circuit | exercise | female | 82s | | `CLW_44_E08` | `CLW_44` Toned & Trimmed Legs | Side Plank Clamshells (Right) | circuit | exercise | female | 80s | | `CLW_44_E09` | `CLW_44` Toned & Trimmed Legs | Adductor Lifts (Right) | circuit | exercise | female | 87s | | `CLW_44_E10` | `CLW_44` Toned & Trimmed Legs | Side Lying Abduction (Left) | circuit | exercise | female | 83s | | `CLW_44_E11` | `CLW_44` Toned & Trimmed Legs | Side Plank Clamshells (Left) | circuit | exercise | female | 84s | | `CLW_44_E12` | `CLW_44` Toned & Trimmed Legs | Adductor Lifts (Left) | circuit | exercise | female | 86s | | `CLW_45_E01` | `CLW_45` All Over Sweat & Sculpt | Lateral Lunge Lift (Right) | circuit | exercise | female | 86s | | `CLW_45_E02` | `CLW_45` All Over Sweat & Sculpt | Lateral Lunge Lift (Left) | circuit | exercise | female | 83s | | `CLW_45_E03` | `CLW_45` All Over Sweat & Sculpt | Partial Pistol Squats (Right) | circuit | exercise | female | 86s | | `CLW_45_E04` | `CLW_45` All Over Sweat & Sculpt | Partial Pistol Squats (Left) | circuit | exercise | female | 82s | | `CLW_45_E05` | `CLW_45` All Over Sweat & Sculpt | Single-Leg RDL (Right) | circuit | exercise | female | 83s | | `CLW_45_E06` | `CLW_45` All Over Sweat & Sculpt | Single-Leg RDL (Left) | circuit | exercise | female | 81s | | `CLW_45_E07` | `CLW_45` All Over Sweat & Sculpt | Skater Jumps | circuit | exercise | female | 81s | | `CLW_45_E08` | `CLW_45` All Over Sweat & Sculpt | Stance Switches | circuit | exercise | female | 81s | | `CLW_45_E09` | `CLW_45` All Over Sweat & Sculpt | Tabletop Reverse Plank | circuit | exercise | female | 83s | | `CLW_45_E10` | `CLW_45` All Over Sweat & Sculpt | Seated Leg Open-Close | circuit | exercise | female | 89s | | `CLW_45_E11` | `CLW_45` All Over Sweat & Sculpt | Hamstring Stretch (Right) | cool-down | exercise | female | 80s | | `CLW_45_E12` | `CLW_45` All Over Sweat & Sculpt | Hamstring Stretch (Left) | cool-down | exercise | female | 80s | | `CLW_45_E13` | `CLW_45` All Over Sweat & Sculpt | Wide-Leg Forward Fold | cool-down | exercise | female | 85s | | `CLW_46_E01` | `CLW_46` Back in Motion | High Plank Rows | circuit | exercise | female | 83s | | `CLW_46_E02` | `CLW_46` Back in Motion | Short Lever Copenhagen (Right) | circuit | exercise | female | 80s | | `CLW_46_E03` | `CLW_46` Back in Motion | Short Lever Copenhagen (Left) | circuit | exercise | female | 80s | | `CLW_46_E04` | `CLW_46` Back in Motion | Superman to Lat Pulldown | circuit | exercise | female | 82s | | `CLW_46_E05` | `CLW_46` Back in Motion | Scorpion Chest Stretch (Right) | cool-down | exercise | female | 80s | | `CLW_46_E06` | `CLW_46` Back in Motion | Scorpion Chest Stretch (Left) | cool-down | exercise | female | 80s | | `CLW_47_E01` | `CLW_47` Build Your Core | Standing Trunk Twists | warm-up | exercise | female | 80s | | `CLW_47_E02` | `CLW_47` Build Your Core | Flutter Kicks | circuit | exercise | female | 83s | | `CLW_47_E03` | `CLW_47` Build Your Core | Eccentric Single Leg Raises (Left) | circuit | exercise | female | 83s | | `CLW_47_E04` | `CLW_47` Build Your Core | Eccentric Single Leg Raises (Right) | circuit | exercise | female | 82s | | `CLW_47_E05` | `CLW_47` Build Your Core | Supine Leg Raises | circuit | exercise | female | 90s | | `CLW_47_E06` | `CLW_47` Build Your Core | Side Plank (Right) | circuit | exercise | female | 80s | | `CLW_47_E07` | `CLW_47` Build Your Core | Side Plank Hip-Dips (Right) | circuit | exercise | female | 80s | | `CLW_47_E08` | `CLW_47` Build Your Core | Side Plank (Left) | circuit | exercise | female | 80s | | `CLW_47_E09` | `CLW_47` Build Your Core | Side Plank Hip-Dips (Left) | circuit | exercise | female | 84s | | `CLW_48_E01` | `CLW_48` Full Body Coordination | Half-Kneeling Windmills (Right) | warm-up | exercise | female | 81s | | `CLW_48_E02` | `CLW_48` Full Body Coordination | Half-Kneeling Windmills (Left) | warm-up | exercise | female | 83s | | `CLW_48_E03` | `CLW_48` Full Body Coordination | Worlds Greatest Stretch | warm-up | exercise | female | 85s | | `CLW_48_E04` | `CLW_48` Full Body Coordination | Push-Up Shoulder Taps | circuit | exercise | female | 80s | | `CLW_48_E05` | `CLW_48` Full Body Coordination | Mountain Climber Reach (Right) | circuit | exercise | female | 81s | | `CLW_48_E06` | `CLW_48` Full Body Coordination | Mountain Climber Reach (Left) | circuit | exercise | female | 84s | | `CLW_48_E07` | `CLW_48` Full Body Coordination | Supine Butterfly Stretch | cool-down | exercise | female | 80s | | `CLW_49_E01` | `CLW_49` Intense Glute Session | Gorilla Squats | warm-up | exercise | female | 89s | | `CLW_49_E02` | `CLW_49` Intense Glute Session | Walking Toe Touch | warm-up | exercise | female | 80s | | `CLW_49_E03` | `CLW_49` Intense Glute Session | Kneel to Squat | circuit | exercise | female | 86s | | `CLW_49_E04` | `CLW_49` Intense Glute Session | Bear Donkey Kicks | circuit | exercise | female | 82s | | `CLW_49_E05` | `CLW_49` Intense Glute Session | Reverse Plank Knee-Drive | circuit | exercise | female | 83s | | `CLW_49_E06` | `CLW_49` Intense Glute Session | Quad and Glute Stretch (Left) | cool-down | exercise | female | 93s | | `CLW_49_E07` | `CLW_49` Intense Glute Session | Quad and Glute Stretch (Right) | cool-down | exercise | female | 86s | | `CLW_50_E01` | `CLW_50` Abs of Steel | Bear to Frogger | warm-up | exercise | female | 85s | | `CLW_50_E02` | `CLW_50` Abs of Steel | Commando Plank | circuit | exercise | female | 80s | | `CLW_50_E03` | `CLW_50` Abs of Steel | Side-to-Side Leg Lifts | circuit | exercise | female | 82s | | `CLW_51_E01` | `CLW_51` Full Body Sweat | Squat to Crunch | circuit | exercise | female | 86s | | `CLW_51_E02` | `CLW_51` Full Body Sweat | Squat to Chair | circuit | exercise | female | 81s | | `CLW_51_E03` | `CLW_51` Full Body Sweat | Chair Step-Ups (Left) | circuit | exercise | female | 88s | | `CLW_51_E04` | `CLW_51` Full Body Sweat | Chair Step-Ups (Right) | circuit | exercise | female | 80s | | `CLW_51_E05` | `CLW_51` Full Body Sweat | Plank Walkout | circuit | exercise | female | 87s | | `CLW_51_E06` | `CLW_51` Full Body Sweat | Lateral Lunge Crunch (Left) | circuit | exercise | female | 83s | | `CLW_51_E07` | `CLW_51` Full Body Sweat | Lateral Lunge Crunch (Right) | circuit | exercise | female | 84s | | `CLW_51_E08` | `CLW_51` Full Body Sweat | Crab Toe Touches | circuit | exercise | female | 88s | | `CLW_51_E09` | `CLW_51` Full Body Sweat | Tricep Dips | circuit | exercise | female | 83s | | `CLW_51_E10` | `CLW_51` Full Body Sweat | Pike Shoulder Taps | circuit | exercise | female | 83s | | `CLW_51_E11` | `CLW_51` Full Body Sweat | Rockback Push-Ups | circuit | exercise | female | 82s | | `CLW_51_E12` | `CLW_51` Full Body Sweat | Mountain Climbers | circuit | exercise | female | 80s | | `CLW_51_E13` | `CLW_51` Full Body Sweat | Downward Dog | cool-down | exercise | female | 84s | | `CLW_52_E01` | `CLW_52` Advanced Leg Day | Reverse Hurdle Steps | warm-up | exercise | female | 80s | | `CLW_52_E02` | `CLW_52` Advanced Leg Day | Alternating Curtsy Lunges | circuit | exercise | female | 83s | | `CLW_52_E03` | `CLW_52` Advanced Leg Day | Sumo Squat Pulses | circuit | exercise | female | 81s | | `CLW_52_E04` | `CLW_52` Advanced Leg Day | Curtsy Lunges Pulses (Left) | circuit | exercise | female | 80s | | `CLW_52_E05` | `CLW_52` Advanced Leg Day | Curtsy Lunges Pulses (Right) | circuit | exercise | female | 94s | | `CLW_52_E06` | `CLW_52` Advanced Leg Day | Dragon Stretch (Left) | cool-down | exercise | female | 85s | | `CLW_52_E07` | `CLW_52` Advanced Leg Day | Dragon Stretch (Right) | cool-down | exercise | female | 82s | | `CLW_53_E01` | `CLW_53` Back Strength Routine | Push-Up to Down Dog Toe Tap | circuit | exercise | female | 94s | | `CLW_53_E02` | `CLW_53` Back Strength Routine | Dynamic Contralateral Plank | circuit | exercise | female | 81s | | `CLW_54_E01` | `CLW_54` Deep Mobility Reset | Leg Swings (Right) | circuit | exercise | female | 80s | | `CLW_54_E02` | `CLW_54` Deep Mobility Reset | Leg Swings (Left) | circuit | exercise | female | 82s | | `CLW_54_E03` | `CLW_54` Deep Mobility Reset | Pancake Side Bend (Right) | circuit | exercise | female | 80s | | `CLW_54_E04` | `CLW_54` Deep Mobility Reset | Pancake Side Bend (Left) | circuit | exercise | female | 80s | | `CLW_55_E01` | `CLW_55` Glutes on Fire | Pistol Squat to Chair (Right) | circuit | exercise | female | 82s | | `CLW_55_E02` | `CLW_55` Glutes on Fire | Pistol Squat to Chair (Left) | circuit | exercise | female | 86s | | `CLW_55_E03` | `CLW_55` Glutes on Fire | Bulgarian Split Squat (Right) | circuit | exercise | female | 83s | | `CLW_55_E04` | `CLW_55` Glutes on Fire | Bulgarian Split Squat (Left) | circuit | exercise | female | 80s | | `CLW_55_E05` | `CLW_55` Glutes on Fire | Elevated Glute Bridge | circuit | exercise | female | 81s | | `CLW_55_E06` | `CLW_55` Glutes on Fire | Elevated Hamstring Plank | circuit | exercise | female | 84s | | `CLW_55_E07` | `CLW_55` Glutes on Fire | Glute Bridge Walkout | circuit | exercise | female | 86s | | `CLW_56_E01` | `CLW_56` A+ Abs & Arms | Hollow Hold | circuit | exercise | female | 84s | | `CLW_56_E02` | `CLW_56` A+ Abs & Arms | Butterfly Sit-Ups | circuit | exercise | female | 81s | | `CLW_56_E03` | `CLW_56` A+ Abs & Arms | Reverse Crunch With Hip Raise | circuit | exercise | female | 81s | | `CLW_56_E04` | `CLW_56` A+ Abs & Arms | Sprinter Crunches | circuit | exercise | female | 82s | | `CLW_56_E05` | `CLW_56` A+ Abs & Arms | Sports Plank (Right) | circuit | exercise | female | 80s | | `CLW_56_E06` | `CLW_56` A+ Abs & Arms | Sports Plank (Left) | circuit | exercise | female | 80s | | `CLW_56_E07` | `CLW_56` A+ Abs & Arms | Plank Knee Crunch | circuit | exercise | female | 82s | | `CLW_56_E08` | `CLW_56` A+ Abs & Arms | Camel Pose | cool-down | exercise | female | 86s | ### Gym | Code | Workout | Exercise | Phase | Kind | Model | Sec | |---|---|---|---|---|---|---| | `GYM_01_E01` | `GYM_01` Total Body Workout | Walkouts | warm-up | exercise | male | 18s | | `GYM_01_E02` | `GYM_01` Total Body Workout | Shoulder Rotations (Forward) | warm-up | exercise | male | 18s | | `GYM_01_E03` | `GYM_01` Total Body Workout | Shoulder Rotations (Backward) | warm-up | exercise | male | 18s | | `GYM_01_E04` | `GYM_01` Total Body Workout | Bodyweight Squat | warm-up | exercise | male | 12s | | `GYM_01_E05` | `GYM_01` Total Body Workout | Machine Leg Press | circuit | exercise | male | 15s | | `GYM_01_E06` | `GYM_01` Total Body Workout | Legs Extension | circuit | exercise | male | 14s | | `GYM_01_E07` | `GYM_01` Total Body Workout | Wide-Grip Lat Pulldown | circuit | exercise | male | 14s | | `GYM_01_E08` | `GYM_01` Total Body Workout | Cable Triceps Bar | circuit | exercise | male | 13s | | `GYM_01_E09` | `GYM_01` Total Body Workout | Seated Dumbbell Shoulder Press | circuit | exercise | male | 20s | | `GYM_01_E10` | `GYM_01` Total Body Workout | Barbell Bicep Curl | circuit | exercise | male | 18s | | `GYM_01_E11` | `GYM_01` Total Body Workout | Seated Dumbbell Lateral Raise | circuit | exercise | male | 18s | | `GYM_01_E12` | `GYM_01` Total Body Workout | Standing Quad Stretch (Right) | cool-down | exercise | male | 19s | | `GYM_01_E13` | `GYM_01` Total Body Workout | Standing Quad Stretch (Left) | cool-down | exercise | male | 20s | | `GYM_01_E14` | `GYM_01` Total Body Workout | Child's Pose | cool-down | exercise | male | 19s | | `GYM_02_E01` | `GYM_02` Work It All Out | Dynamic Side Bends | warm-up | exercise | male | 21s | | `GYM_02_E02` | `GYM_02` Work It All Out | Dynamic Calf Raises | warm-up | exercise | male | 25s | | `GYM_02_E03` | `GYM_02` Work It All Out | Crossover Touch Squat | warm-up | exercise | male | 17s | | `GYM_02_E04` | `GYM_02` Work It All Out | Robot Arms | warm-up | exercise | male | 24s | | `GYM_02_E05` | `GYM_02` Work It All Out | Back Barbell Squat | circuit | exercise | male | 16s | | `GYM_02_E06` | `GYM_02` Work It All Out | Overhead Wide-Grip Lat Pulldown | circuit | exercise | male | 14s | | `GYM_02_E07` | `GYM_02` Work It All Out | Cable Single-Arm Tricep Extension (Right) | circuit | exercise | male | 12s | | `GYM_02_E08` | `GYM_02` Work It All Out | Cable Single-Arm Tricep Extension (Left) | circuit | exercise | male | 11s | | `GYM_02_E09` | `GYM_02` Work It All Out | Barbell Alternating Forward Lunges | circuit | exercise | male | 18s | | `GYM_02_E10` | `GYM_02` Work It All Out | Bench Tricep Dips | circuit | exercise | male | 22s | | `GYM_02_E11` | `GYM_02` Work It All Out | Seated Lower Back Stretch (Right) | cool-down | exercise | male | 20s | | `GYM_02_E12` | `GYM_02` Work It All Out | Seated Lower Back Stretch (Left) | cool-down | exercise | male | 19s | | `GYM_02_E13` | `GYM_02` Work It All Out | Knees to Chest Stretch | cool-down | exercise | male | 24s | | `GYM_03_E01` | `GYM_03` Lower Body Build | Side to Side Lunge | warm-up | exercise | male | 22s | | `GYM_03_E02` | `GYM_03` Lower Body Build | Hula Rotations | warm-up | exercise | male | 22s | | `GYM_03_E03` | `GYM_03` Lower Body Build | Wide Leg Press | circuit | exercise | male | 14s | | `GYM_03_E04` | `GYM_03` Lower Body Build | Seated Leg Curls | circuit | exercise | male | 19s | | `GYM_03_E05` | `GYM_03` Lower Body Build | Outer Thigh Abductor | circuit | exercise | male | 15s | | `GYM_03_E06` | `GYM_03` Lower Body Build | Inner Thigh Adductor | circuit | exercise | male | 16s | | `GYM_03_E07` | `GYM_03` Lower Body Build | Smith Calf Raises | circuit | exercise | male | 19s | | `GYM_03_E08` | `GYM_03` Lower Body Build | Smith Machine Squat (newbie) | circuit | exercise | male | 26s | | `GYM_03_E09` | `GYM_03` Lower Body Build | Pendulum Hamstring Stretch | cool-down | exercise | male | 26s | | `GYM_04_E01` | `GYM_04` Full Body, Fully Done | Standing Hip Rotations (Right) | warm-up | exercise | male | 22s | | `GYM_04_E02` | `GYM_04` Full Body, Fully Done | Standing Hip Rotations (Left) | warm-up | exercise | male | 24s | | `GYM_04_E03` | `GYM_04` Full Body, Fully Done | Seated Cable Row | circuit | exercise | male | 20s | | `GYM_04_E04` | `GYM_04` Full Body, Fully Done | Deadlift with Dumbbell | circuit | exercise | male | 16s | | `GYM_04_E05` | `GYM_04` Full Body, Fully Done | Seated Reverse Flys | circuit | exercise | male | 20s | | `GYM_04_E06` | `GYM_04` Full Body, Fully Done | Figure 4 Stretch (Right) | cool-down | exercise | male | 23s | | `GYM_04_E07` | `GYM_04` Full Body, Fully Done | Figure 4 Stretch (Left) | cool-down | exercise | male | 19s | | `GYM_04_E08` | `GYM_04` Full Body, Fully Done | Spinal Twist (Right) | cool-down | exercise | male | 22s | | `GYM_04_E09` | `GYM_04` Full Body, Fully Done | Spinal Twist (Left) | cool-down | exercise | male | 23s | | `GYM_05_E01` | `GYM_05` Chest and Arms Routine | Elbow Rotations (External) | warm-up | exercise | male | 20s | | `GYM_05_E02` | `GYM_05` Chest and Arms Routine | Elbow Rotations (Internal) | warm-up | exercise | male | 21s | | `GYM_05_E03` | `GYM_05` Chest and Arms Routine | Seated Dumbbell Bicep Curl | circuit | exercise | male | 20s | | `GYM_05_E04` | `GYM_05` Chest and Arms Routine | Tricep Kickback (Right) | circuit | exercise | male | 21s | | `GYM_05_E05` | `GYM_05` Chest and Arms Routine | Tricep Kickback (Left) | circuit | exercise | male | 20s | | `GYM_05_E06` | `GYM_05` Chest and Arms Routine | Dumbbell Skull Crusher (Right) | circuit | exercise | male | 21s | | `GYM_05_E07` | `GYM_05` Chest and Arms Routine | Dumbbell Skull Crusher (Left) | circuit | exercise | male | 19s | | `GYM_05_E08` | `GYM_05` Chest and Arms Routine | Decline Bench Sit-up | circuit | exercise | male | 20s | | `GYM_05_E09` | `GYM_05` Chest and Arms Routine | Neck Stretch (Side) | cool-down | exercise | male | 22s | | `GYM_05_E10` | `GYM_05` Chest and Arms Routine | Overhead Lat Stretch (Right) | cool-down | exercise | male | 19s | | `GYM_05_E11` | `GYM_05` Chest and Arms Routine | Overhead Lat Stretch (Left) | cool-down | exercise | male | 19s | | `GYM_05_E12` | `GYM_05` Chest and Arms Routine | Neck Stretch (Forward-Backward) | cool-down | exercise | male | 28s | | `GYM_06_E01` | `GYM_06` Legs and Back Building Set | Side to Side Rotation | warm-up | exercise | male | 21s | | `GYM_06_E02` | `GYM_06` Legs and Back Building Set | Rotating Toe Touches | warm-up | exercise | male | 23s | | `GYM_06_E03` | `GYM_06` Legs and Back Building Set | Roll Down | warm-up | exercise | male | 39s | | `GYM_06_E04` | `GYM_06` Legs and Back Building Set | Wrist Warm-Up | warm-up | exercise | male | 19s | | `GYM_06_E05` | `GYM_06` Legs and Back Building Set | Lying Incline Bench Dumbbell Rows | circuit | exercise | male | 20s | | `GYM_06_E06` | `GYM_06` Legs and Back Building Set | Dumbbell Shrug | circuit | exercise | male | 19s | | `GYM_06_E07` | `GYM_06` Legs and Back Building Set | Skull Crushers | circuit | exercise | male | 22s | | `GYM_06_E08` | `GYM_06` Legs and Back Building Set | Barbell Overhead Press | circuit | exercise | male | 22s | | `GYM_06_E09` | `GYM_06` Legs and Back Building Set | Back Raise (newbie) | circuit | exercise | male | 21s | | `GYM_06_E10` | `GYM_06` Legs and Back Building Set | Side Plank (Right) | circuit | exercise | male | 18s | | `GYM_06_E11` | `GYM_06` Legs and Back Building Set | Side Plank (Left) | circuit | exercise | male | 18s | | `GYM_06_E12` | `GYM_06` Legs and Back Building Set | Cobra | cool-down | exercise | male | 20s | | `GYM_06_E13` | `GYM_06` Legs and Back Building Set | Kneeling Hamsting Stretch (Right) | cool-down | exercise | male | 18s | | `GYM_06_E14` | `GYM_06` Legs and Back Building Set | Kneeling Hamsting Stretch (Left) | cool-down | exercise | male | 20s | | `GYM_07_E01` | `GYM_07` Total Body Energy | Pec Fly | circuit | exercise | male | 26s | | `GYM_07_E02` | `GYM_07` Total Body Energy | Captain Chair Knee Raise | circuit | exercise | male | 14s | | `GYM_08_E01` | `GYM_08` Full Body Sculpt | Dumbbell Side Lunge (Right) | warm-up | exercise | male | 18s | | `GYM_08_E02` | `GYM_08` Full Body Sculpt | Dumbbell Side Lunge (Left) | warm-up | exercise | male | 18s | | `GYM_08_E03` | `GYM_08` Full Body Sculpt | Dumbbell Forward Lunge (Right) | circuit | exercise | male | 18s | | `GYM_08_E04` | `GYM_08` Full Body Sculpt | Dumbbell Forward Lunge (Left) | circuit | exercise | male | 19s | | `GYM_08_E05` | `GYM_08` Full Body Sculpt | Dumbbell Bench Press | circuit | exercise | male | 20s | | `GYM_08_E06` | `GYM_08` Full Body Sculpt | Dumbbell Bent Over Row (Right) | circuit | exercise | male | 16s | | `GYM_08_E07` | `GYM_08` Full Body Sculpt | Dumbbell Bent Over Row (Left) | circuit | exercise | male | 15s | | `GYM_08_E08` | `GYM_08` Full Body Sculpt | Cat to Cow Stretch | cool-down | exercise | male | 28s | | `GYM_09_E01` | `GYM_09` Whole Body on Fire | Smith Machine Sumo Squat | circuit | exercise | male | 20s | | `GYM_09_E02` | `GYM_09` Whole Body on Fire | Narrow Grip Cable Row | circuit | exercise | male | 13s | | `GYM_10_E01` | `GYM_10` Active Legs Training | Barbell Good Morning | circuit | exercise | male | 16s | | `GYM_10_E02` | `GYM_10` Active Legs Training | Barbell Sumo Squat | circuit | exercise | male | 18s | | `GYM_10_E03` | `GYM_10` Active Legs Training | Barbell Standing Torso Twist | circuit | exercise | male | 27s | | `GYM_10_E04` | `GYM_10` Active Legs Training | Side Stretch (Right) | cool-down | exercise | male | 18s | | `GYM_10_E05` | `GYM_10` Active Legs Training | Side Stretch (Left) | cool-down | exercise | male | 20s | | `GYM_12_E01` | `GYM_12` Back and Shoulders Set | Barbell Alternating Reverse Lunge | circuit | exercise | male | 19s | | `GYM_12_E02` | `GYM_12` Back and Shoulders Set | Barbell Shrug | circuit | exercise | male | 16s | | `GYM_12_E03` | `GYM_12` Back and Shoulders Set | Cable Bicep Bar | circuit | exercise | male | 15s | | `GYM_12_E04` | `GYM_12` Back and Shoulders Set | Capitan Chair Leg Raise | circuit | exercise | male | 15s | | `GYM_13_E01` | `GYM_13` Don’t Skip Leg Day | Mountain Climber | warm-up | exercise | male | 20s | | `GYM_13_E02` | `GYM_13` Don’t Skip Leg Day | Hip Flexor Stretch (Right) | cool-down | exercise | male | 18s | | `GYM_13_E03` | `GYM_13` Don’t Skip Leg Day | Hip Flexor Stretch (Left) | cool-down | exercise | male | 19s | | `GYM_14_E01` | `GYM_14` Lower Body in Focus | Smith Machine Lunge (Right) | circuit | exercise | male | 21s | | `GYM_14_E02` | `GYM_14` Lower Body in Focus | Smith Machine Lunge (Left) | circuit | exercise | male | 20s | | `GYM_14_E03` | `GYM_14` Lower Body in Focus | Db Bulgarian Split Squat (Right) | circuit | exercise | male | 17s | | `GYM_14_E04` | `GYM_14` Lower Body in Focus | Db Bulgarian Split Squat (Left) | circuit | exercise | male | 20s | | `GYM_15_E01` | `GYM_15` Ultimate Body Builder | Front Lunges | warm-up | exercise | male | 9s | | `GYM_15_E02` | `GYM_15` Ultimate Body Builder | Walkouts to Push-ups | warm-up | exercise | male | 21s | | `GYM_15_E03` | `GYM_15` Ultimate Body Builder | Smith Machine Squat Wide Legs | circuit | exercise | male | 21s | | `GYM_15_E04` | `GYM_15` Ultimate Body Builder | Seated Alternating Dumbbell Hammer Curl | circuit | exercise | male | 22s | | `GYM_16_E01` | `GYM_16` Grow Your Legs | Lunge with Thoracic Rotation | circuit | exercise | male | 22s | | `GYM_16_E02` | `GYM_16` Grow Your Legs | Captain Chair Oblique Knee Raise | circuit | exercise | male | 12s | | `GYM_16_E03` | `GYM_16` Grow Your Legs | Elbow Plank | circuit | exercise | male | 20s | | `GYM_17_E01` | `GYM_17` Legs and Core Combo | Seated Calf Raise | circuit | exercise | male | 20s | | `GYM_17_E02` | `GYM_17` Legs and Core Combo | Dumbbell Backward Lunge (Right) | circuit | exercise | male | 21s | | `GYM_17_E03` | `GYM_17` Legs and Core Combo | Dumbbell Backward Lunge (Left) | circuit | exercise | male | 21s | | `GYM_18_E01` | `GYM_18` Chest and Biceps Workout | Smith Machine Push-Up | circuit | exercise | male | 12s | | `GYM_18_E02` | `GYM_18` Chest and Biceps Workout | Flat Bench Barbell Press | circuit | exercise | male | 16s | | `GYM_18_E03` | `GYM_18` Chest and Biceps Workout | Low Cable Crossover | circuit | exercise | male | 27s | | `GYM_18_E04` | `GYM_18` Chest and Biceps Workout | Reverse Pec Deck Fly | circuit | exercise | male | 18s | | `GYM_18_E05` | `GYM_18` Chest and Biceps Workout | Cable Triceps Bar (Rope) | circuit | exercise | male | 13s | | `GYM_19_E01` | `GYM_19` Arms and Core Routine | Triceps Assisted Dip | circuit | exercise | male | 23s | | `GYM_20_E01` | `GYM_20` Upper Body Blast | Wide Grip Assisted Pull-Ups | circuit | exercise | male | 25s | | `GYM_21_E01` | `GYM_21` Legs Burner Workout | Machine Single Leg Press (Right) | circuit | exercise | male | 13s | | `GYM_21_E02` | `GYM_21` Legs Burner Workout | Machine Single Leg Press (Left) | circuit | exercise | male | 14s | | `GYM_21_E03` | `GYM_21` Legs Burner Workout | Hanging Side to Side Knee Crunch | circuit | exercise | male | 19s | | `GYM_21_E04` | `GYM_21` Legs Burner Workout | Hanging Double Leg Raise | circuit | exercise | male | 20s | | `GYM_23_E01` | `GYM_23` Legs Strengthening Routine | Lunge with Rotation | warm-up | exercise | male | 20s | | `GYM_23_E02` | `GYM_23` Legs Strengthening Routine | Smith Machine Squat (advanced) | circuit | exercise | male | 21s | | `GYM_23_E03` | `GYM_23` Legs Strengthening Routine | Single-Leg Side Leg Press (Right) | circuit | exercise | male | 14s | | `GYM_23_E04` | `GYM_23` Legs Strengthening Routine | Single-Leg Side Leg Press (Left) | circuit | exercise | male | 13s | | `GYM_24_E01` | `GYM_24` Arms and Back Set | Narrow Grip Pulldown | circuit | exercise | male | 14s | | `GYM_24_E02` | `GYM_24` Arms and Back Set | Hanging Bicycles | circuit | exercise | male | 19s | | `GYM_25_E01` | `GYM_25` Chest and Back Workout | Captain Chair Tricep Dip | circuit | exercise | male | 16s | | `GYM_25_E02` | `GYM_25` Chest and Back Workout | Upright Barbell Rows | circuit | exercise | male | 19s | | `GYM_25_E03` | `GYM_25` Chest and Back Workout | Incline Dumbbell Bench Press | circuit | exercise | male | 19s | | `GYM_25_E04` | `GYM_25` Chest and Back Workout | Dumbbell Waiter | circuit | exercise | male | 20s | | `GYM_26_E01` | `GYM_26` Super Pump Arms Workout | Dumbbell Front Raise | circuit | exercise | male | 17s | | `GYM_26_E02` | `GYM_26` Super Pump Arms Workout | Hanging Knee Lift | circuit | exercise | male | 19s | | `GYM_26_E03` | `GYM_26` Super Pump Arms Workout | Back Raise (Advanced) | circuit | exercise | male | 25s | | `GYM_27_E01` | `GYM_27` Transform Your Body | Decline Dumbbell Bench Press | circuit | exercise | male | 21s | ### Home Pilates | Code | Workout | Exercise | Phase | Kind | Model | Sec | |---|---|---|---|---|---|---| | `HPL_01_E01` | `HPL_01` Sculpt Pilates Routine | Standing Cat-Cow | warm-up | exercise | female | 32s | | `HPL_01_E02` | `HPL_01` Sculpt Pilates Routine | Alternating Front Hip Raises | warm-up | exercise | female | 32s | | `HPL_01_E03` | `HPL_01` Sculpt Pilates Routine | Regular Squat | warm-up | exercise | female | 30s | | `HPL_01_E04` | `HPL_01` Sculpt Pilates Routine | Walkout to Plank | warm-up | exercise | female | 31s | | `HPL_01_E05` | `HPL_01` Sculpt Pilates Routine | Curtsey Lunges (Right) | circuit | exercise | female | 30s | | `HPL_01_E06` | `HPL_01` Sculpt Pilates Routine | Curtsey Lunges (Left) | circuit | exercise | female | 31s | | `HPL_01_E07` | `HPL_01` Sculpt Pilates Routine | Standing Elbow to Knee | circuit | exercise | female | 33s | | `HPL_01_E08` | `HPL_01` Sculpt Pilates Routine | Standing Side Crunch (Right) | circuit | exercise | female | 34s | | `HPL_01_E09` | `HPL_01` Sculpt Pilates Routine | Standing Side Crunch (Left) | circuit | exercise | female | 32s | | `HPL_01_E10` | `HPL_01` Sculpt Pilates Routine | Half-Squats | circuit | exercise | female | 30s | | `HPL_01_E11` | `HPL_01` Sculpt Pilates Routine | Half-Squat with Arms Extensions | circuit | exercise | female | 35s | | `HPL_01_E12` | `HPL_01` Sculpt Pilates Routine | Roll Down | cool-down | exercise | female | 31s | | `HPL_01_E13` | `HPL_01` Sculpt Pilates Routine | Standing Glute Stretch (Right) | cool-down | exercise | female | 25s | | `HPL_01_E14` | `HPL_01` Sculpt Pilates Routine | Standing Glute Stretch (Left) | cool-down | exercise | female | 27s | | `HPL_01_E15` | `HPL_01` Sculpt Pilates Routine | Forward Bend With Shoulder Opener | cool-down | exercise | female | 34s | | `HPL_02_E01` | `HPL_02` Legs & Glutes Tone | Standing Leg Extensions (Right) | warm-up | exercise | female | 29s | | `HPL_02_E02` | `HPL_02` Legs & Glutes Tone | Standing Leg Extensions (Left) | warm-up | exercise | female | 31s | | `HPL_02_E03` | `HPL_02` Legs & Glutes Tone | Modified Semi Squat to Leg Extension (Right) | warm-up | exercise | female | 30s | | `HPL_02_E04` | `HPL_02` Legs & Glutes Tone | Modified Semi Squat to Leg Extension (Left) | warm-up | exercise | female | 30s | | `HPL_02_E05` | `HPL_02` Legs & Glutes Tone | Side-lying Hip Raises (Right) | circuit | exercise | female | 26s | | `HPL_02_E06` | `HPL_02` Legs & Glutes Tone | Adductor Raises (Left) | circuit | exercise | female | 31s | | `HPL_02_E07` | `HPL_02` Legs & Glutes Tone | Side-lying Hip Raises (Left) | circuit | exercise | female | 28s | | `HPL_02_E08` | `HPL_02` Legs & Glutes Tone | Adductor Raises (Right) | circuit | exercise | female | 30s | | `HPL_02_E09` | `HPL_02` Legs & Glutes Tone | Pelvic Curl | circuit | exercise | female | 28s | | `HPL_02_E10` | `HPL_02` Legs & Glutes Tone | Assisted Leg Circles (Right) | circuit | exercise | female | 30s | | `HPL_02_E11` | `HPL_02` Legs & Glutes Tone | Assisted Leg Circles (Left) | circuit | exercise | female | 29s | | `HPL_02_E12` | `HPL_02` Legs & Glutes Tone | Single Leg Stretch | circuit | exercise | female | 30s | | `HPL_02_E13` | `HPL_02` Legs & Glutes Tone | Figure 4 Stretch (Right) | cool-down | exercise | female | 27s | | `HPL_02_E14` | `HPL_02` Legs & Glutes Tone | Figure 4 Stretch (Left) | cool-down | exercise | female | 30s | | `HPL_02_E15` | `HPL_02` Legs & Glutes Tone | Seal | cool-down | exercise | female | 28s | | `HPL_02_E16` | `HPL_02` Legs & Glutes Tone | Half Split Pose With Active Heel (Right) | cool-down | exercise | female | 29s | | `HPL_02_E17` | `HPL_02` Legs & Glutes Tone | Pigeon Pose (Right) | cool-down | exercise | female | 30s | | `HPL_02_E18` | `HPL_02` Legs & Glutes Tone | Half Split Pose With Active Heel (Left) | cool-down | exercise | female | 30s | | `HPL_02_E19` | `HPL_02` Legs & Glutes Tone | Pigeon Pose (Left) | cool-down | exercise | female | 29s | | `HPL_03_E01` | `HPL_03` Abs in Focus | Active Puppy Pose | warm-up | exercise | female | 26s | | `HPL_03_E02` | `HPL_03` Abs in Focus | Spinal Rotations | warm-up | exercise | female | 35s | | `HPL_03_E03` | `HPL_03` Abs in Focus | Cat to Cow Stretch | warm-up | exercise | female | 30s | | `HPL_03_E04` | `HPL_03` Abs in Focus | Thread the Needle (Right) | warm-up | exercise | female | 30s | | `HPL_03_E05` | `HPL_03` Abs in Focus | Thread the Needle (Left) | warm-up | exercise | female | 41s | | `HPL_03_E06` | `HPL_03` Abs in Focus | Bear Crawl Hold | warm-up | exercise | female | 29s | | `HPL_03_E07` | `HPL_03` Abs in Focus | Quadruped to High Plank | warm-up | exercise | female | 26s | | `HPL_03_E08` | `HPL_03` Abs in Focus | Knee Plank with Alternating Arm Raise | circuit | exercise | female | 27s | | `HPL_03_E09` | `HPL_03` Abs in Focus | Leg Raise to the Back | circuit | exercise | female | 28s | | `HPL_03_E10` | `HPL_03` Abs in Focus | Bird Dogs | circuit | exercise | female | 28s | | `HPL_03_E11` | `HPL_03` Abs in Focus | Mountain Climbers | circuit | exercise | female | 28s | | `HPL_03_E12` | `HPL_03` Abs in Focus | Front Leg Raises with Extension (Right) | circuit | exercise | female | 34s | | `HPL_03_E13` | `HPL_03` Abs in Focus | Front Leg Raises with Extension (Left) | circuit | exercise | female | 32s | | `HPL_03_E14` | `HPL_03` Abs in Focus | Modified Hundred | circuit | exercise | female | 29s | | `HPL_03_E15` | `HPL_03` Abs in Focus | Chest Lift | circuit | exercise | female | 34s | | `HPL_03_E16` | `HPL_03` Abs in Focus | Sphinx Pose | cool-down | exercise | female | 30s | | `HPL_03_E17` | `HPL_03` Abs in Focus | Child's Pose | cool-down | exercise | female | 29s | | `HPL_03_E18` | `HPL_03` Abs in Focus | Kneeling Side Stretch (Right) | cool-down | exercise | female | 29s | | `HPL_03_E19` | `HPL_03` Abs in Focus | Kneeling Side Stretch (Left) | cool-down | exercise | female | 29s | | `HPL_04_E01` | `HPL_04` Ease Your Back | Cat Plank to Downward Dog | warm-up | exercise | female | 35s | | `HPL_04_E02` | `HPL_04` Ease Your Back | Elbow to Knee Bird Dogs (Right) | circuit | exercise | female | 34s | | `HPL_04_E03` | `HPL_04` Ease Your Back | Elbow to Knee Bird Dogs (Left) | circuit | exercise | female | 28s | | `HPL_04_E04` | `HPL_04` Ease Your Back | Upper Back Raises | circuit | exercise | female | 28s | | `HPL_04_E05` | `HPL_04` Ease Your Back | Prone Leg Raises | circuit | exercise | female | 35s | | `HPL_04_E06` | `HPL_04` Ease Your Back | Swimmers | circuit | exercise | female | 29s | | `HPL_04_E07` | `HPL_04` Ease Your Back | Spinal Twist (Right) | circuit | exercise | female | 29s | | `HPL_04_E08` | `HPL_04` Ease Your Back | Spinal Twist (Left) | circuit | exercise | female | 30s | | `HPL_04_E09` | `HPL_04` Ease Your Back | Side to Side Crunches | circuit | exercise | female | 30s | | `HPL_04_E10` | `HPL_04` Ease Your Back | Plank Saw | circuit | exercise | female | 29s | | `HPL_04_E11` | `HPL_04` Ease Your Back | Seated Forward Bend | circuit | exercise | female | 29s | | `HPL_04_E12` | `HPL_04` Ease Your Back | Spine Twist | circuit | exercise | female | 28s | | `HPL_04_E13` | `HPL_04` Ease Your Back | Head-of-the-Knee Pose (Right) | cool-down | exercise | female | 28s | | `HPL_04_E14` | `HPL_04` Ease Your Back | Head-of-the-Knee Pose (Left) | cool-down | exercise | female | 30s | | `HPL_04_E15` | `HPL_04` Ease Your Back | Seated Lower Back Stretch (Right) | cool-down | exercise | female | 32s | | `HPL_04_E16` | `HPL_04` Ease Your Back | Seated Lower Back Stretch (Left) | cool-down | exercise | female | 30s | | `HPL_05_E01` | `HPL_05` At-Home Toning | Side Bends | warm-up | exercise | female | 26s | | `HPL_05_E02` | `HPL_05` At-Home Toning | Front Hip Raises (Left) | warm-up | exercise | female | 28s | | `HPL_05_E03` | `HPL_05` At-Home Toning | Front Hip Raises (Right) | warm-up | exercise | female | 29s | | `HPL_05_E04` | `HPL_05` At-Home Toning | Side-Lying Double Leg Lifts (Left) | circuit | exercise | female | 31s | | `HPL_05_E05` | `HPL_05` At-Home Toning | Side Hip Raise (Right) | circuit | exercise | female | 29s | | `HPL_05_E06` | `HPL_05` At-Home Toning | Side Plank with Twist (Left) | circuit | exercise | female | 39s | | `HPL_05_E07` | `HPL_05` At-Home Toning | Open Book (Right) | circuit | exercise | female | 26s | | `HPL_05_E08` | `HPL_05` At-Home Toning | Side-Lying Double Leg Lifts (Right) | circuit | exercise | female | 30s | | `HPL_05_E09` | `HPL_05` At-Home Toning | Side Hip Raise (Left) | circuit | exercise | female | 31s | | `HPL_05_E10` | `HPL_05` At-Home Toning | Side Plank with Twist (Right) | circuit | exercise | female | 32s | | `HPL_05_E11` | `HPL_05` At-Home Toning | Open Book (Left) | circuit | exercise | female | 39s | | `HPL_05_E12` | `HPL_05` At-Home Toning | Supermans | circuit | exercise | female | 22s | | `HPL_05_E13` | `HPL_05` At-Home Toning | Tricep Stretch (Right) | cool-down | exercise | female | 29s | | `HPL_05_E14` | `HPL_05` At-Home Toning | Tricep Stretch (Left) | cool-down | exercise | female | 29s | | `HPL_06_E01` | `HPL_06` No More Bat Wings Routine | Chest Openers in Lunge Position (Right) | warm-up | exercise | female | 32s | | `HPL_06_E02` | `HPL_06` No More Bat Wings Routine | Chest Openers in Lunge Position (Left) | warm-up | exercise | female | 32s | | `HPL_06_E03` | `HPL_06` No More Bat Wings Routine | Press & Lift | warm-up | exercise | female | 25s | | `HPL_06_E04` | `HPL_06` No More Bat Wings Routine | Front Biceps Curl | circuit | exercise | female | 28s | | `HPL_06_E05` | `HPL_06` No More Bat Wings Routine | Tricep Press | circuit | exercise | female | 29s | | `HPL_06_E06` | `HPL_06` No More Bat Wings Routine | Kneeling Side Kick (Left) | circuit | exercise | female | 29s | | `HPL_06_E07` | `HPL_06` No More Bat Wings Routine | Kneeling Side Kick (Right) | circuit | exercise | female | 29s | | `HPL_06_E08` | `HPL_06` No More Bat Wings Routine | Tricep Push-ups | circuit | exercise | female | 29s | | `HPL_06_E09` | `HPL_06` No More Bat Wings Routine | Elbow Plank | circuit | exercise | female | 26s | | `HPL_06_E10` | `HPL_06` No More Bat Wings Routine | Dolphin Plank | circuit | exercise | female | 37s | | `HPL_06_E11` | `HPL_06` No More Bat Wings Routine | Cross-body Shoulder Stretch (Right) | cool-down | exercise | female | 28s | | `HPL_06_E12` | `HPL_06` No More Bat Wings Routine | Cross-body Shoulder Stretch (Left) | cool-down | exercise | female | 27s | | `HPL_07_E01` | `HPL_07` Lower Body Builder | One Leg Balance (Right) | warm-up | exercise | female | 33s | | `HPL_07_E02` | `HPL_07` Lower Body Builder | One Leg Balance (Left) | warm-up | exercise | female | 35s | | `HPL_07_E03` | `HPL_07` Lower Body Builder | Standing Side Leg Raise (Right) | circuit | exercise | female | 28s | | `HPL_07_E04` | `HPL_07` Lower Body Builder | Standing Side Leg Raise (Left) | circuit | exercise | female | 28s | | `HPL_07_E05` | `HPL_07` Lower Body Builder | Standing Back Leg Raise (Right) | circuit | exercise | female | 27s | | `HPL_07_E06` | `HPL_07` Lower Body Builder | Standing Back Leg Raise (Left) | circuit | exercise | female | 31s | | `HPL_07_E07` | `HPL_07` Lower Body Builder | Glute Bridge with Leg Extensions (Right) | circuit | exercise | female | 29s | | `HPL_07_E08` | `HPL_07` Lower Body Builder | Glute Bridge with Leg Extensions (Left) | circuit | exercise | female | 29s | | `HPL_08_E01` | `HPL_08` Arm Activation Sesh | Semi Plie with Chest Mobility (Right) | circuit | exercise | female | 33s | | `HPL_08_E02` | `HPL_08` Arm Activation Sesh | Semi Plie with Chest Mobility (Left) | circuit | exercise | female | 30s | | `HPL_08_E03` | `HPL_08` Arm Activation Sesh | Elbow Plank with Knee Touches | circuit | exercise | female | 30s | | `HPL_09_E01` | `HPL_09` Toned Legs and Glutes | Split Stance Heel Raises (Right) | warm-up | exercise | female | 29s | | `HPL_09_E02` | `HPL_09` Toned Legs and Glutes | Split Stance Heel Raises (Left) | warm-up | exercise | female | 30s | | `HPL_09_E03` | `HPL_09` Toned Legs and Glutes | Diagonal Leg Raises to the Back (Right) | circuit | exercise | female | 33s | | `HPL_09_E04` | `HPL_09` Toned Legs and Glutes | Diagonal Leg Raises to the Back (Left) | circuit | exercise | female | 29s | | `HPL_09_E05` | `HPL_09` Toned Legs and Glutes | Criss Cross | circuit | exercise | female | 31s | | `HPL_09_E06` | `HPL_09` Toned Legs and Glutes | Lying Legs Pushes | circuit | exercise | female | 34s | | `HPL_09_E07` | `HPL_09` Toned Legs and Glutes | Supine Knee Circles (Left) | circuit | exercise | female | 28s | | `HPL_09_E08` | `HPL_09` Toned Legs and Glutes | Supine Knee Circles (Right) | circuit | exercise | female | 27s | | `HPL_10_E01` | `HPL_10` Hourglass Abs Set | Chest Rotations with Hands Behind Head | warm-up | exercise | female | 30s | | `HPL_10_E02` | `HPL_10` Hourglass Abs Set | Side Plank Twist with Leg Raise (Right) | circuit | exercise | female | 33s | | `HPL_10_E03` | `HPL_10` Hourglass Abs Set | Side Plank Twist with Leg Raise (Left) | circuit | exercise | female | 31s | | `HPL_11_E01` | `HPL_11` Flat Abs Workout | Assisted Roll-up with Openers | circuit | exercise | female | 28s | | `HPL_11_E02` | `HPL_11` Flat Abs Workout | Knee Lifts with Torso Rotation | circuit | exercise | female | 31s | | `HPL_11_E03` | `HPL_11` Flat Abs Workout | Front Leg Extensions (Right) | circuit | exercise | female | 30s | | `HPL_11_E04` | `HPL_11` Flat Abs Workout | Front Leg Raises (Right) | circuit | exercise | female | 32s | | `HPL_11_E05` | `HPL_11` Flat Abs Workout | Front Leg Extensions (Left) | circuit | exercise | female | 31s | | `HPL_11_E06` | `HPL_11` Flat Abs Workout | Front Leg Raises (Left) | circuit | exercise | female | 30s | | `HPL_11_E07` | `HPL_11` Flat Abs Workout | Floor Toe Touches | circuit | exercise | female | 32s | | `HPL_12_E01` | `HPL_12` Ease Into Pilates | Bird Dog Hold (Left) | warm-up | exercise | female | 21s | | `HPL_12_E02` | `HPL_12` Ease Into Pilates | Bird Dog Hold (Right) | warm-up | exercise | female | 21s | | `HPL_12_E03` | `HPL_12` Ease Into Pilates | Glute Bridge with Calf Raises | circuit | exercise | female | 29s | | `HPL_12_E04` | `HPL_12` Ease Into Pilates | Dead Bug | circuit | exercise | female | 29s | | `HPL_12_E05` | `HPL_12` Ease Into Pilates | Active Reverse Plank Bridge | circuit | exercise | female | 28s | | `HPL_12_E06` | `HPL_12` Ease Into Pilates | Reverse Plank Tricep Dips | circuit | exercise | female | 26s | | `HPL_12_E07` | `HPL_12` Ease Into Pilates | Handcuff Stretch to Upper Back Stretch | cool-down | exercise | female | 34s | | `HPL_13_E01` | `HPL_13` Pain-Free Back Routine | Side-lying Leg Raises (Right) | circuit | exercise | female | 27s | | `HPL_13_E02` | `HPL_13` Pain-Free Back Routine | Side-lying Clams (Right) | circuit | exercise | female | 32s | | `HPL_13_E03` | `HPL_13` Pain-Free Back Routine | Side-lying Leg Raises (Left) | circuit | exercise | female | 31s | | `HPL_13_E04` | `HPL_13` Pain-Free Back Routine | Side-lying Clams (Left) | circuit | exercise | female | 30s | | `HPL_13_E05` | `HPL_13` Pain-Free Back Routine | Seated Back Stretch | cool-down | exercise | female | 32s | | `HPL_14_E01` | `HPL_14` No-Fuss Booty & Legs | Donkey Kicks (Right) | circuit | exercise | female | 26s | | `HPL_14_E02` | `HPL_14` No-Fuss Booty & Legs | Fire Hydrant (Right) | circuit | exercise | female | 31s | | `HPL_14_E03` | `HPL_14` No-Fuss Booty & Legs | Side Leg Extensions to the Back (Right) | circuit | exercise | female | 31s | | `HPL_14_E04` | `HPL_14` No-Fuss Booty & Legs | Donkey Kicks (Left) | circuit | exercise | female | 29s | | `HPL_14_E05` | `HPL_14` No-Fuss Booty & Legs | Fire Hydrant (Left) | circuit | exercise | female | 30s | | `HPL_14_E06` | `HPL_14` No-Fuss Booty & Legs | Side Leg Extensions to the Back (Left) | circuit | exercise | female | 35s | | `HPL_14_E07` | `HPL_14` No-Fuss Booty & Legs | Side Leg Develop on the Back (Right) | cool-down | exercise | female | 31s | | `HPL_14_E08` | `HPL_14` No-Fuss Booty & Legs | Side Leg Develop on the Back (Left) | cool-down | exercise | female | 44s | | `HPL_15_E01` | `HPL_15` Head-To-Toe Toning | Leg Develop on the Back (Left) | circuit | exercise | female | 32s | | `HPL_15_E02` | `HPL_15` Head-To-Toe Toning | Leg Develop on the Back (Right) | circuit | exercise | female | 53s | | `HPL_15_E03` | `HPL_15` Head-To-Toe Toning | Prone Single Leg Kick | circuit | exercise | female | 27s | | `HPL_15_E04` | `HPL_15` Head-To-Toe Toning | Prone Double Leg Kick | circuit | exercise | female | 27s | | `HPL_16_E01` | `HPL_16` Ultimate Booty Shaping | Bridging Arms Circles | circuit | exercise | female | 31s | | `HPL_16_E02` | `HPL_16` Ultimate Booty Shaping | Hamstring Pull | circuit | exercise | female | 30s | | `HPL_16_E03` | `HPL_16` Ultimate Booty Shaping | Side Kick (Right) | circuit | exercise | female | 30s | | `HPL_16_E04` | `HPL_16` Ultimate Booty Shaping | Side Kick (Left) | circuit | exercise | female | 26s | | `HPL_17_E01` | `HPL_17` Lean Arms Session | Dynamic Side Stretches | warm-up | exercise | female | 28s | | `HPL_17_E02` | `HPL_17` Lean Arms Session | Plie Squat with Arm Circles | circuit | exercise | female | 32s | | `HPL_18_E01` | `HPL_18` Strong, Sexy Back | Shoulder Mobility | warm-up | exercise | female | 31s | | `HPL_18_E02` | `HPL_18` Strong, Sexy Back | Kneeling Leg Circles (Right) | circuit | exercise | female | 29s | | `HPL_18_E03` | `HPL_18` Strong, Sexy Back | Kneeling Leg Circles (Left) | circuit | exercise | female | 29s | | `HPL_18_E04` | `HPL_18` Strong, Sexy Back | Spinal Rolls | cool-down | exercise | female | 28s | | `HPL_18_E05` | `HPL_18` Strong, Sexy Back | Supine Butterfly Stretch | cool-down | exercise | female | 26s | | `HPL_19_E01` | `HPL_19` Weightless Arms Workout | Bent Knee Sit Up | circuit | exercise | female | 30s | | `HPL_20_E01` | `HPL_20` Core Control Circuit | Hundred | circuit | exercise | female | 28s | | `HPL_20_E02` | `HPL_20` Core Control Circuit | Single Leg Double Crunch (Right) | circuit | exercise | female | 31s | | `HPL_20_E03` | `HPL_20` Core Control Circuit | Single Leg Double Crunch (Left) | circuit | exercise | female | 29s | | `HPL_21_E01` | `HPL_21` Feel-Good Back Release | Saw | circuit | exercise | female | 30s | | `HPL_24_E01` | `HPL_24` No More Hunchback Set | Leg Pull | circuit | exercise | female | 29s | | `HPL_24_E02` | `HPL_24` No More Hunchback Set | Roll-up | circuit | exercise | female | 30s | | `HPL_25_E01` | `HPL_25` The Ultimate Sculpt Flow | Frog Crunches | warm-up | exercise | female | 28s | | `HPL_25_E02` | `HPL_25` The Ultimate Sculpt Flow | Frog Floor Taps | warm-up | exercise | female | 31s | | `HPL_25_E03` | `HPL_25` The Ultimate Sculpt Flow | Rollover with Legs Spread | warm-up | exercise | female | 35s | | `HPL_25_E04` | `HPL_25` The Ultimate Sculpt Flow | Jackknife | circuit | exercise | female | 31s | | `HPL_25_E05` | `HPL_25` The Ultimate Sculpt Flow | Corkscrew | circuit | exercise | female | 32s | | `HPL_25_E06` | `HPL_25` The Ultimate Sculpt Flow | Leg Pull Front | circuit | exercise | female | 30s | | `HPL_25_E07` | `HPL_25` The Ultimate Sculpt Flow | Kneeling Hip Mobility | circuit | exercise | female | 29s | | `HPL_26_E01` | `HPL_26` Extreme Glute & Leg Lift | Supine Knee Circles | warm-up | exercise | female | 29s | | `HPL_26_E02` | `HPL_26` Extreme Glute & Leg Lift | Glute Kick + Fire Hydrant (Left) | circuit | exercise | female | 28s | | `HPL_26_E03` | `HPL_26` Extreme Glute & Leg Lift | Glute Kick + Fire Hydrant (Right) | circuit | exercise | female | 30s | | `HPL_27_E01` | `HPL_27` Power Precision Circuit | Lean Back | warm-up | exercise | female | 32s | | `HPL_27_E02` | `HPL_27` Power Precision Circuit | Seated Hip Twist | circuit | exercise | female | 29s | ### Wall Pilates | Code | Workout | Exercise | Phase | Kind | Model | Sec | |---|---|---|---|---|---|---| | `WPL_01_E01` | `WPL_01` Wall Pilates Basics | Kneeling Cat and Cow | warm-up | exercise | male | 23s | | `WPL_01_E02` | `WPL_01` Wall Pilates Basics | 90/90 Flip: Hip Mobility | warm-up | exercise | male | 19s | | `WPL_01_E03` | `WPL_01` Wall Pilates Basics | Kneeling Windshield Wipers | warm-up | exercise | male | 29s | | `WPL_01_E04` | `WPL_01` Wall Pilates Basics | Wall Slides | warm-up | exercise | male | 23s | | `WPL_01_E05` | `WPL_01` Wall Pilates Basics | Push Through Crunches | circuit | exercise | male | 26s | | `WPL_01_E06` | `WPL_01` Wall Pilates Basics | Knee Crunch | circuit | exercise | male | 24s | | `WPL_01_E07` | `WPL_01` Wall Pilates Basics | Wall Supported Alternating Crunches | circuit | exercise | male | 30s | | `WPL_01_E08` | `WPL_01` Wall Pilates Basics | Tabletop Oblique Twist | circuit | exercise | male | 26s | | `WPL_01_E09` | `WPL_01` Wall Pilates Basics | Heel Taps | circuit | exercise | male | 20s | | `WPL_01_E10` | `WPL_01` Wall Pilates Basics | Active Bird Dog (Right) | circuit | exercise | male | 21s | | `WPL_01_E11` | `WPL_01` Wall Pilates Basics | Active Bird Dog (Left) | circuit | exercise | male | 18s | | `WPL_01_E12` | `WPL_01` Wall Pilates Basics | Bear Crawl Raises | circuit | exercise | male | 23s | | `WPL_01_E13` | `WPL_01` Wall Pilates Basics | Wall Supported Cat and Cow | cool-down | exercise | male | 22s | | `WPL_01_E14` | `WPL_01` Wall Pilates Basics | Seated Posterior Chain Stretch (Right) | cool-down | exercise | male | 24s | | `WPL_01_E15` | `WPL_01` Wall Pilates Basics | Seated Posterior Chain Stretch (Left) | cool-down | exercise | male | 25s | | `WPL_01_E16` | `WPL_01` Wall Pilates Basics | Wall Assisted Hip Flexor Stretch (Right) | cool-down | exercise | male | 23s | | `WPL_01_E17` | `WPL_01` Wall Pilates Basics | Wall Assisted Hip Flexor Stretch (Left) | cool-down | exercise | male | 21s | | `WPL_02_E01` | `WPL_02` Lower Body Strength | Wall Assisted 90/90 Flip | warm-up | exercise | male | 24s | | `WPL_02_E02` | `WPL_02` Lower Body Strength | Hip Opening (Right) | warm-up | exercise | male | 21s | | `WPL_02_E03` | `WPL_02` Lower Body Strength | Hip Opening (Left) | warm-up | exercise | male | 20s | | `WPL_02_E04` | `WPL_02` Lower Body Strength | Elevated Glute Bridge | circuit | exercise | male | 27s | | `WPL_02_E05` | `WPL_02` Lower Body Strength | Abductor Raises (Right) | circuit | exercise | male | 23s | | `WPL_02_E06` | `WPL_02` Lower Body Strength | Leg Lifts Backwards (Right) | circuit | exercise | male | 23s | | `WPL_02_E07` | `WPL_02` Lower Body Strength | Abductor Raises (Left) | circuit | exercise | male | 21s | | `WPL_02_E08` | `WPL_02` Lower Body Strength | Leg Lifts Backwards (Left) | circuit | exercise | male | 21s | | `WPL_02_E09` | `WPL_02` Lower Body Strength | Fire Hydrant (Right) | circuit | exercise | male | 17s | | `WPL_02_E10` | `WPL_02` Lower Body Strength | Fire Hydrant (Left) | circuit | exercise | male | 17s | | `WPL_02_E11` | `WPL_02` Lower Body Strength | Adductor to Hamstring Stretch (Right) | cool-down | exercise | male | 34s | | `WPL_02_E12` | `WPL_02` Lower Body Strength | Adductor to Hamstring Stretch (Left) | cool-down | exercise | male | 39s | | `WPL_02_E13` | `WPL_02` Lower Body Strength | Calf Rise with Glute Stretch (Right) | cool-down | exercise | male | 21s | | `WPL_02_E14` | `WPL_02` Lower Body Strength | Calf Rise with Glute Stretch (Left) | cool-down | exercise | male | 22s | | `WPL_03_E01` | `WPL_03` Upper Body and Flexibility | Wall Angels | warm-up | exercise | male | 18s | | `WPL_03_E02` | `WPL_03` Upper Body and Flexibility | Shoulder Stretch with Knees Raises | warm-up | exercise | male | 24s | | `WPL_03_E03` | `WPL_03` Upper Body and Flexibility | Marching | warm-up | exercise | male | 17s | | `WPL_03_E04` | `WPL_03` Upper Body and Flexibility | Standing Cat and Cow | warm-up | exercise | male | 23s | | `WPL_03_E05` | `WPL_03` Upper Body and Flexibility | Wall Assisted Scapular Push Ups | circuit | exercise | male | 18s | | `WPL_03_E06` | `WPL_03` Upper Body and Flexibility | Chest Wall Push-Ups | circuit | exercise | male | 20s | | `WPL_03_E07` | `WPL_03` Upper Body and Flexibility | Wall Assisted T-Raises | circuit | exercise | male | 22s | | `WPL_03_E08` | `WPL_03` Upper Body and Flexibility | Single Arm Reverse Fly (Right) | circuit | exercise | male | 23s | | `WPL_03_E09` | `WPL_03` Upper Body and Flexibility | Single Arm Reverse Fly (Left) | circuit | exercise | male | 22s | | `WPL_03_E10` | `WPL_03` Upper Body and Flexibility | Thread The Needle | circuit | exercise | male | 29s | | `WPL_03_E11` | `WPL_03` Upper Body and Flexibility | Wall Assisted Pec Stretch | cool-down | exercise | male | 21s | | `WPL_03_E12` | `WPL_03` Upper Body and Flexibility | Kneeling Chest Stretch | cool-down | exercise | male | 19s | | `WPL_03_E13` | `WPL_03` Upper Body and Flexibility | Active Frog Stretch | cool-down | exercise | male | 27s | | `WPL_04_E01` | `WPL_04` Core and Stability Routine | Roll to Downward Dog | warm-up | exercise | male | 35s | | `WPL_04_E02` | `WPL_04` Core and Stability Routine | Wall Chest Openers (Right) | warm-up | exercise | male | 18s | | `WPL_04_E03` | `WPL_04` Core and Stability Routine | Wall Chest Openers (Left) | warm-up | exercise | male | 19s | | `WPL_04_E04` | `WPL_04` Core and Stability Routine | Wall Supported Knee Raise | warm-up | exercise | male | 25s | | `WPL_04_E05` | `WPL_04` Core and Stability Routine | Wall Assisted Knee Raises (Right) | circuit | exercise | male | 18s | | `WPL_04_E06` | `WPL_04` Core and Stability Routine | Wall Assisted Knee Raises (Left) | circuit | exercise | male | 20s | | `WPL_04_E07` | `WPL_04` Core and Stability Routine | Standing Superman (Right) | circuit | exercise | male | 23s | | `WPL_04_E08` | `WPL_04` Core and Stability Routine | Standing Superman (Left) | circuit | exercise | male | 23s | | `WPL_04_E09` | `WPL_04` Core and Stability Routine | Standing Side Kick (Right) | circuit | exercise | male | 18s | | `WPL_04_E10` | `WPL_04` Core and Stability Routine | Standing Side Kick (Left) | circuit | exercise | male | 16s | | `WPL_04_E11` | `WPL_04` Core and Stability Routine | Spinal Rolls | circuit | exercise | male | 17s | | `WPL_04_E12` | `WPL_04` Core and Stability Routine | Abdominal Twist | circuit | exercise | male | 25s | | `WPL_05_E01` | `WPL_05` Full Body Flow | Hip Circles (Right) | warm-up | exercise | male | 20s | | `WPL_05_E02` | `WPL_05` Full Body Flow | Hip Circles (Left) | warm-up | exercise | male | 19s | | `WPL_05_E03` | `WPL_05` Full Body Flow | Dynamic Calf Raises | circuit | exercise | male | 22s | | `WPL_05_E04` | `WPL_05` Full Body Flow | Wall Supported Bicycle Crunch | circuit | exercise | male | 20s | | `WPL_05_E05` | `WPL_05` Full Body Flow | Bridging Knee Tucks | circuit | exercise | male | 28s | | `WPL_05_E06` | `WPL_05` Full Body Flow | Seated Active Forward Fold | circuit | exercise | male | 26s | | `WPL_05_E07` | `WPL_05` Full Body Flow | Spine Twist with Pulses | circuit | exercise | male | 23s | | `WPL_05_E08` | `WPL_05` Full Body Flow | Spine Extension | circuit | exercise | male | 22s | | `WPL_06_E01` | `WPL_06` Lower Body and Flexibility | Supported Roll Down | warm-up | exercise | male | 22s | | `WPL_06_E02` | `WPL_06` Lower Body and Flexibility | Circle Taps (Right) | circuit | exercise | male | 25s | | `WPL_06_E03` | `WPL_06` Lower Body and Flexibility | Circle Taps (Left) | circuit | exercise | male | 25s | | `WPL_06_E04` | `WPL_06` Lower Body and Flexibility | Standing Clamshells | circuit | exercise | male | 19s | | `WPL_06_E05` | `WPL_06` Lower Body and Flexibility | Inner Thigh Lifts (Right) | circuit | exercise | male | 22s | | `WPL_06_E06` | `WPL_06` Lower Body and Flexibility | Inner Thigh Lifts (Left) | circuit | exercise | male | 19s | | `WPL_06_E07` | `WPL_06` Lower Body and Flexibility | Single Leg Quad Stretch (Right) | cool-down | exercise | male | 15s | | `WPL_06_E08` | `WPL_06` Lower Body and Flexibility | Single Leg Quad Stretch (Left) | cool-down | exercise | male | 16s | | `WPL_06_E09` | `WPL_06` Lower Body and Flexibility | Single Leg Glute Stretch | cool-down | exercise | male | 25s | | `WPL_06_E10` | `WPL_06` Lower Body and Flexibility | Standing Wall Hamstring Stretch | cool-down | exercise | male | 21s | | `WPL_07_E01` | `WPL_07` Upper Body Strength | Shoulder Circles (Right) | warm-up | exercise | male | 17s | | `WPL_07_E02` | `WPL_07` Upper Body Strength | Shoulder Circles (Left) | warm-up | exercise | male | 22s | | `WPL_07_E03` | `WPL_07` Upper Body Strength | Kneeling Tricep Push Up | circuit | exercise | male | 25s | | `WPL_07_E04` | `WPL_07` Upper Body Strength | Half Kneeling T-Spine Rotation (Right) | circuit | exercise | male | 20s | | `WPL_07_E05` | `WPL_07` Upper Body Strength | Half Kneeling T-Spine Rotation (Left) | circuit | exercise | male | 22s | | `WPL_07_E06` | `WPL_07` Upper Body Strength | Kneeling Wall Planks | circuit | exercise | male | 22s | | `WPL_07_E07` | `WPL_07` Upper Body Strength | Wall Supported Thoracic Rotations | circuit | exercise | male | 23s | | `WPL_08_E01` | `WPL_08` Flexibility and Mobility | Calf Raises on the Wall | circuit | exercise | male | 20s | | `WPL_08_E02` | `WPL_08` Flexibility and Mobility | Set of Crunches | circuit | exercise | male | 25s | | `WPL_08_E03` | `WPL_08` Flexibility and Mobility | Shoulder and T-Spine Mobility (Right) | circuit | exercise | male | 24s | | `WPL_08_E04` | `WPL_08` Flexibility and Mobility | Shoulder and T-Spine Mobility (Left) | circuit | exercise | male | 21s | | `WPL_09_E01` | `WPL_09` Core Activation Workout | Wall Chest Lift with Rotation | circuit | exercise | male | 28s | | `WPL_09_E02` | `WPL_09` Core Activation Workout | Wall Hundred | circuit | exercise | male | 21s | | `WPL_09_E03` | `WPL_09` Core Activation Workout | Wall Assisted Pike Ups (Right) | circuit | exercise | male | 24s | | `WPL_09_E04` | `WPL_09` Core Activation Workout | Wall Assisted Pike Ups (Left) | circuit | exercise | male | 21s | | `WPL_09_E05` | `WPL_09` Core Activation Workout | Kneeling Push-Ups | circuit | exercise | male | 20s | | `WPL_09_E06` | `WPL_09` Core Activation Workout | Wall Assisted Side Kick (Right) | circuit | exercise | male | 20s | | `WPL_09_E07` | `WPL_09` Core Activation Workout | Wall Assisted Side Kick (Left) | circuit | exercise | male | 20s | | `WPL_09_E08` | `WPL_09` Core Activation Workout | Leg Scissors | circuit | exercise | male | 17s | | `WPL_09_E09` | `WPL_09` Core Activation Workout | Spine Twist | circuit | exercise | male | 25s | | `WPL_09_E10` | `WPL_09` Core Activation Workout | Half Kneeling Adductor Stretch (Right) | cool-down | exercise | male | 25s | | `WPL_09_E11` | `WPL_09` Core Activation Workout | Half Kneeling Adductor Stretch (Left) | cool-down | exercise | male | 26s | | `WPL_10_E01` | `WPL_10` Amazing Abs Flow | Standing Extension-Flexion (Right) | circuit | exercise | male | 23s | | `WPL_10_E02` | `WPL_10` Amazing Abs Flow | Standing Extension-Flexion (Left) | circuit | exercise | male | 21s | | `WPL_10_E03` | `WPL_10` Amazing Abs Flow | Wall Sit Hip Hinge | circuit | exercise | male | 21s | | `WPL_10_E04` | `WPL_10` Amazing Abs Flow | Wall Assisted Roll Up | circuit | exercise | male | 27s | | `WPL_10_E05` | `WPL_10` Amazing Abs Flow | Seated Side Bends | cool-down | exercise | male | 25s | | `WPL_11_E01` | `WPL_11` Wall Pilates Routine | Peter Pan with Struddle Stretch | warm-up | exercise | male | 23s | | `WPL_11_E02` | `WPL_11` Wall Pilates Routine | Side to Side Crunch | circuit | exercise | male | 25s | | `WPL_11_E03` | `WPL_11` Wall Pilates Routine | Single Leg Forward Bend (Left) | circuit | exercise | male | 21s | | `WPL_11_E04` | `WPL_11` Wall Pilates Routine | Single Leg Forward Bend (Right) | circuit | exercise | male | 22s | | `WPL_11_E05` | `WPL_11` Wall Pilates Routine | Wall Push-Up Plank | circuit | exercise | male | 19s | | `WPL_11_E06` | `WPL_11` Wall Pilates Routine | Wall Shoulder Taps | circuit | exercise | male | 18s | | `WPL_11_E07` | `WPL_11` Wall Pilates Routine | Forward Wall Squats | circuit | exercise | male | 19s | | `WPL_11_E08` | `WPL_11` Wall Pilates Routine | Leg Circles (Right) | circuit | exercise | male | 20s | | `WPL_11_E09` | `WPL_11` Wall Pilates Routine | Leg Circles (Left) | circuit | exercise | male | 21s | | `WPL_11_E10` | `WPL_11` Wall Pilates Routine | Alternating Donkey Kickbacks | circuit | exercise | male | 20s | | `WPL_11_E11` | `WPL_11` Wall Pilates Routine | Wall Side Bends (Right) | circuit | exercise | male | 19s | | `WPL_11_E12` | `WPL_11` Wall Pilates Routine | Wall Side Bends (Left) | circuit | exercise | male | 18s | | `WPL_11_E13` | `WPL_11` Wall Pilates Routine | Alternating Chest Stretch | cool-down | exercise | male | 20s | | `WPL_11_E14` | `WPL_11` Wall Pilates Routine | Wall Supported Calf Stretch (Right) | cool-down | exercise | male | 18s | | `WPL_11_E15` | `WPL_11` Wall Pilates Routine | Wall Supported Calf Stretch (Left) | cool-down | exercise | male | 18s | | `WPL_12_E01` | `WPL_12` Core and Glute Activation | Hip Mobility | warm-up | exercise | male | 27s | | `WPL_12_E02` | `WPL_12` Core and Glute Activation | Thighs Warm-Up (Left) | warm-up | exercise | male | 25s | | `WPL_12_E03` | `WPL_12` Core and Glute Activation | Thighs Warm-Up (Right) | warm-up | exercise | male | 23s | | `WPL_12_E04` | `WPL_12` Core and Glute Activation | Bridging Leg Kicks | circuit | exercise | male | 24s | | `WPL_12_E05` | `WPL_12` Core and Glute Activation | Modified Hundred with Leg Lifts | circuit | exercise | male | 26s | | `WPL_12_E06` | `WPL_12` Core and Glute Activation | Butterfly Stretch | cool-down | exercise | male | 22s | | `WPL_13_E01` | `WPL_13` Pilates for Posture | Wall Assisted Push Up with Openers | circuit | exercise | male | 23s | | `WPL_13_E02` | `WPL_13` Pilates for Posture | Wall Assisted Row and Press | circuit | exercise | male | 22s | | `WPL_13_E03` | `WPL_13` Pilates for Posture | Wall Sit Arm Slides | circuit | exercise | male | 19s | | `WPL_13_E04` | `WPL_13` Pilates for Posture | Wall Downward Dog | circuit | exercise | male | 25s | | `WPL_13_E05` | `WPL_13` Pilates for Posture | Reach-Through Crunch | circuit | exercise | male | 27s | | `WPL_14_E01` | `WPL_14` Stretch and Relax | IT band Stretch (Right) | circuit | exercise | male | 25s | | `WPL_14_E02` | `WPL_14` Stretch and Relax | IT band Stretch (Left) | circuit | exercise | male | 25s | | `WPL_15_E01` | `WPL_15` Lower Body Flow | Prances | circuit | exercise | male | 17s | | `WPL_15_E02` | `WPL_15` Lower Body Flow | Wall Supported Lateral Squats | circuit | exercise | male | 21s | | `WPL_15_E03` | `WPL_15` Lower Body Flow | Wall Kickback and Curls (Right) | circuit | exercise | male | 20s | | `WPL_15_E04` | `WPL_15` Lower Body Flow | Wall Kickback and Curls (Left) | circuit | exercise | male | 24s | | `WPL_15_E05` | `WPL_15` Lower Body Flow | Wall Squats | circuit | exercise | male | 20s | | `WPL_16_E01` | `WPL_16` Lower Back Care | Seated Thoracic Rotations | circuit | exercise | male | 25s | | `WPL_17_E01` | `WPL_17` Beginner Balance and Core | Alternative Wall Sit Calf Raises | circuit | exercise | male | 23s | | `WPL_17_E02` | `WPL_17` Beginner Balance and Core | Wall Sit with Chest Openers | circuit | exercise | male | 21s | | `WPL_17_E03` | `WPL_17` Beginner Balance and Core | Dynamic Hip Flexor Stretch (Right) | cool-down | exercise | male | 20s | | `WPL_17_E04` | `WPL_17` Beginner Balance and Core | Dynamic Hip Flexor Stretch (Left) | cool-down | exercise | male | 18s | | `WPL_17_E05` | `WPL_17` Beginner Balance and Core | Pendulum Hamstring Stretch | cool-down | exercise | male | 25s | | `WPL_17_E06` | `WPL_17` Beginner Balance and Core | Wall Spine Stretch | cool-down | exercise | male | 22s | | `WPL_20_E01` | `WPL_20` Upper Body Wake Up Call | Wall Pulldown | circuit | exercise | male | 23s | | `WPL_20_E02` | `WPL_20` Upper Body Wake Up Call | Wall Push Offs | circuit | exercise | male | 21s | | `WPL_22_E01` | `WPL_22` Spine Mobility | Standing Thoracic Rotations | circuit | exercise | male | 22s | | `WPL_22_E02` | `WPL_22` Spine Mobility | Alternative Arms Slides | circuit | exercise | male | 23s | | `WPL_22_E03` | `WPL_22` Spine Mobility | Standing Shoulders Stretch | cool-down | exercise | male | 23s | | `WPL_22_E04` | `WPL_22` Spine Mobility | Standing Upper Back Stretch (Right) | cool-down | exercise | male | 23s | | `WPL_22_E05` | `WPL_22` Spine Mobility | Standing Upper Back Stretch (Left) | cool-down | exercise | male | 25s | | `WPL_23_E01` | `WPL_23` Gentle Wind Down Pilates | Sideways Reach | circuit | exercise | male | 16s | | `WPL_24_E01` | `WPL_24` Pilates for Flexibility | Alternating Toe Touches | circuit | exercise | male | 17s | | `WPL_25_E01` | `WPL_25` Wellness Flow | Wall Sit Side Bends | warm-up | exercise | male | 25s | | `WPL_25_E02` | `WPL_25` Wellness Flow | Calf Raised Squat | circuit | exercise | male | 22s | | `WPL_25_E03` | `WPL_25` Wellness Flow | Forward Wall Squat with Sidekick | circuit | exercise | male | 21s | | `WPL_26_E01` | `WPL_26` Lower Body Pilates Strength | Side-to-Side Lunge | circuit | exercise | male | 22s | | `WPL_27_E01` | `WPL_27` Upper Body Power Flow | Across the Body | circuit | exercise | male | 19s | | `WPL_27_E02` | `WPL_27` Upper Body Power Flow | Wall Sit Robot Arms | circuit | exercise | male | 22s | | `WPL_27_E03` | `WPL_27` Upper Body Power Flow | Alternating Shoulder Rotations | circuit | exercise | male | 25s | | `WPL_27_E04` | `WPL_27` Upper Body Power Flow | Standing Child’s Pose | cool-down | exercise | male | 19s | | `WPL_28_E01` | `WPL_28` Total Body Release | Lying Left Hip Circles (Clockwise) | circuit | exercise | male | 23s | | `WPL_28_E02` | `WPL_28` Total Body Release | Lying Left Hip Circles (Counter-Clockwise) | circuit | exercise | male | 23s | | `WPL_28_E03` | `WPL_28` Total Body Release | Lying Right Hip Circles (Clockwise) | circuit | exercise | male | 20s | | `WPL_28_E04` | `WPL_28` Total Body Release | Lying Right Hip Circles (Counter-Clockwise) | circuit | exercise | male | 21s | | `WPL_29_E01` | `WPL_29` Your Best Booty & Legs | Standing Cat & Cow | warm-up | exercise | female | 22s | | `WPL_29_E02` | `WPL_29` Your Best Booty & Legs | Hip Circles (Right) | warm-up | exercise | female | 19s | | `WPL_29_E03` | `WPL_29` Your Best Booty & Legs | Hip Circles (Left) | warm-up | exercise | female | 20s | | `WPL_29_E04` | `WPL_29` Your Best Booty & Legs | Wall Supported Kickboxing | warm-up | exercise | female | 19s | | `WPL_29_E05` | `WPL_29` Your Best Booty & Legs | Forward Wall Squat with Sidekick | circuit | exercise | female | 23s | | `WPL_29_E06` | `WPL_29` Your Best Booty & Legs | Leg Circles (Right) | circuit | exercise | female | 19s | | `WPL_29_E07` | `WPL_29` Your Best Booty & Legs | Leg Circles (Left) | circuit | exercise | female | 19s | | `WPL_29_E08` | `WPL_29` Your Best Booty & Legs | Side to Side Lunge | circuit | exercise | female | 20s | | `WPL_29_E09` | `WPL_29` Your Best Booty & Legs | Wall Assisted Donkey Kickbacks (Right) | circuit | exercise | female | 22s | | `WPL_29_E10` | `WPL_29` Your Best Booty & Legs | Wall Assisted Donkey Kickbacks (Left) | circuit | exercise | female | 21s | | `WPL_29_E11` | `WPL_29` Your Best Booty & Legs | Bridging Leg Kicks | circuit | exercise | female | 18s | | `WPL_29_E12` | `WPL_29` Your Best Booty & Legs | Bridging Knee Tucks | circuit | exercise | female | 19s | | `WPL_29_E13` | `WPL_29` Your Best Booty & Legs | Half Kneeling Adductor Stretch (Right) | cool-down | exercise | female | 21s | | `WPL_29_E14` | `WPL_29` Your Best Booty & Legs | Half Kneeling Adductor Stretch (Left) | cool-down | exercise | female | 20s | | `WPL_29_E15` | `WPL_29` Your Best Booty & Legs | Wall Assisted Hip Flexor Stretch (Right) | cool-down | exercise | female | 18s | | `WPL_29_E16` | `WPL_29` Your Best Booty & Legs | Wall Assisted Hip Flexor Stretch (Left) | cool-down | exercise | female | 18s | | `WPL_29_E17` | `WPL_29` Your Best Booty & Legs | Single Leg Glute Stretch | cool-down | exercise | female | 23s | | `WPL_29_E18` | `WPL_29` Your Best Booty & Legs | Standing Wall Hamstring Stretch | cool-down | exercise | female | 21s | | `WPL_30_E01` | `WPL_30` Mindful Stretching | Active Bird Dog (Right) | warm-up | exercise | female | 21s | | `WPL_30_E02` | `WPL_30` Mindful Stretching | Active Bird Dog (Left) | warm-up | exercise | female | 21s | | `WPL_30_E03` | `WPL_30` Mindful Stretching | Wall Assisted T-Raises | warm-up | exercise | female | 20s | | `WPL_30_E04` | `WPL_30` Mindful Stretching | Kneeling Chest Stretch | warm-up | exercise | female | 19s | | `WPL_30_E05` | `WPL_30` Mindful Stretching | Kneeling Cat and Cow | warm-up | exercise | female | 19s | | `WPL_30_E06` | `WPL_30` Mindful Stretching | Wall Assisted Side Stretch (Right) | circuit | exercise | female | 19s | | `WPL_30_E07` | `WPL_30` Mindful Stretching | Wall Assisted Side Stretch (Left) | circuit | exercise | female | 19s | | `WPL_30_E08` | `WPL_30` Mindful Stretching | Adductor to Hamstring Stretch (Right) | circuit | exercise | female | 22s | | `WPL_30_E09` | `WPL_30` Mindful Stretching | Adductor to Hamstring Stretch (Left) | circuit | exercise | female | 23s | | `WPL_30_E10` | `WPL_30` Mindful Stretching | Leg Curls (Right) | circuit | exercise | female | 21s | | `WPL_30_E11` | `WPL_30` Mindful Stretching | Leg Curls (Left) | circuit | exercise | female | 21s | | `WPL_30_E12` | `WPL_30` Mindful Stretching | Alternating Pike Leg Lift | circuit | exercise | female | 20s | | `WPL_30_E13` | `WPL_30` Mindful Stretching | Seated Active Forward Fold | circuit | exercise | female | 21s | | `WPL_30_E14` | `WPL_30` Mindful Stretching | Seated Side Bends | cool-down | exercise | female | 22s | | `WPL_30_E15` | `WPL_30` Mindful Stretching | 90/90 Flip: Hip Mobility | cool-down | exercise | female | 20s | | `WPL_30_E16` | `WPL_30` Mindful Stretching | Seated Posterior Chain Stretch (Right) | cool-down | exercise | female | 21s | | `WPL_30_E17` | `WPL_30` Mindful Stretching | Seated Posterior Chain Stretch (Left) | cool-down | exercise | female | 25s | | `WPL_31_E01` | `WPL_31` Total Body Toning | Half Kneeling T-Spine Rotation (Right) | warm-up | exercise | female | 25s | | `WPL_31_E02` | `WPL_31` Total Body Toning | Half Kneeling T-Spine Rotation (Left) | warm-up | exercise | female | 25s | | `WPL_31_E03` | `WPL_31` Total Body Toning | Wall Assisted 90/90 Flip | warm-up | exercise | female | 18s | | `WPL_31_E04` | `WPL_31` Total Body Toning | Wall Slides | warm-up | exercise | female | 22s | | `WPL_31_E05` | `WPL_31` Total Body Toning | Elevated Glute Bridge | warm-up | exercise | female | 21s | | `WPL_31_E06` | `WPL_31` Total Body Toning | Modified Hundred with Leg Lifts | circuit | exercise | female | 23s | | `WPL_31_E07` | `WPL_31` Total Body Toning | Calf Raises on the Wall | circuit | exercise | female | 18s | | `WPL_31_E08` | `WPL_31` Total Body Toning | Wall Supported Bicycle Crunch | circuit | exercise | female | 21s | | `WPL_31_E09` | `WPL_31` Total Body Toning | Leg Scissors | circuit | exercise | female | 19s | | `WPL_31_E10` | `WPL_31` Total Body Toning | Kneeling Side Kick (Left) | circuit | exercise | female | 23s | | `WPL_31_E11` | `WPL_31` Total Body Toning | Kneeling Side Kick (Right) | circuit | exercise | female | 26s | | `WPL_31_E12` | `WPL_31` Total Body Toning | Leg Lifts Backwards (Left) | circuit | exercise | female | 24s | | `WPL_31_E13` | `WPL_31` Total Body Toning | Leg Lifts Backwards (Right) | circuit | exercise | female | 21s | | `WPL_31_E14` | `WPL_31` Total Body Toning | Sideways Reach | cool-down | exercise | female | 23s | | `WPL_31_E15` | `WPL_31` Total Body Toning | Pendulum Hamstring Stretch | cool-down | exercise | female | 25s | | `WPL_31_E16` | `WPL_31` Total Body Toning | Roll to Downward Dog | cool-down | exercise | female | 30s | | `WPL_31_E17` | `WPL_31` Total Body Toning | Thread The Needle | cool-down | exercise | female | 19s | | `WPL_32_E01` | `WPL_32` Core & Back Support | Supported Roll Down | warm-up | exercise | female | 22s | | `WPL_32_E02` | `WPL_32` Core & Back Support | Side Bends | warm-up | exercise | female | 21s | | `WPL_32_E03` | `WPL_32` Core & Back Support | Wall Chest Openers (Right) | warm-up | exercise | female | 19s | | `WPL_32_E04` | `WPL_32` Core & Back Support | Wall Chest Openers (Left) | warm-up | exercise | female | 19s | | `WPL_32_E05` | `WPL_32` Core & Back Support | Walking Glute Bridge | circuit | exercise | female | 19s | | `WPL_32_E06` | `WPL_32` Core & Back Support | Set of Crunches | circuit | exercise | female | 23s | | `WPL_32_E07` | `WPL_32` Core & Back Support | Tabletop Oblique Twist | circuit | exercise | female | 20s | | `WPL_32_E08` | `WPL_32` Core & Back Support | Wall Assisted Knee Tucks (Right) | circuit | exercise | female | 17s | | `WPL_32_E09` | `WPL_32` Core & Back Support | Wall Assisted Knee Tucks (Left) | circuit | exercise | female | 18s | | `WPL_32_E10` | `WPL_32` Core & Back Support | Wall Supported Alternating Crunches | circuit | exercise | female | 22s | | `WPL_33_E01` | `WPL_33` Waist-Trimming Pilates | Alternating Toe Touches | warm-up | exercise | female | 21s | | `WPL_33_E02` | `WPL_33` Waist-Trimming Pilates | Crunches with Toe Touches | warm-up | exercise | female | 24s | | `WPL_33_E03` | `WPL_33` Waist-Trimming Pilates | Straddle Wall Crunch | circuit | exercise | female | 22s | | `WPL_33_E04` | `WPL_33` Waist-Trimming Pilates | Reach Through Crunch | circuit | exercise | female | 21s | | `WPL_33_E05` | `WPL_33` Waist-Trimming Pilates | Side-Lying Scissors (Right) | circuit | exercise | female | 20s | | `WPL_33_E06` | `WPL_33` Waist-Trimming Pilates | Lying Hip Circles | circuit | exercise | female | 23s | | `WPL_33_E07` | `WPL_33` Waist-Trimming Pilates | Side-Lying Scissors (Left) | circuit | exercise | female | 18s | | `WPL_33_E08` | `WPL_33` Waist-Trimming Pilates | Wall Assisted Pike Ups (Right) | circuit | exercise | female | 19s | | `WPL_33_E09` | `WPL_33` Waist-Trimming Pilates | Wall Assisted Pike Ups (Left) | circuit | exercise | female | 19s | | `WPL_33_E10` | `WPL_33` Waist-Trimming Pilates | Bear Crawl Raises | circuit | exercise | female | 19s | | `WPL_33_E11` | `WPL_33` Waist-Trimming Pilates | Wall Downward Dog | circuit | exercise | female | 21s | | `WPL_34_E01` | `WPL_34` Lower Body Shaper | Wall Sit Side Bends | warm-up | exercise | female | 23s | | `WPL_34_E02` | `WPL_34` Lower Body Shaper | Wall Sit Calf Raises | warm-up | exercise | female | 23s | | `WPL_34_E03` | `WPL_34` Lower Body Shaper | Dynamic Calf Raises | warm-up | exercise | female | 21s | | `WPL_34_E04` | `WPL_34` Lower Body Shaper | Marching | warm-up | exercise | female | 16s | | `WPL_34_E05` | `WPL_34` Lower Body Shaper | Alternating Donkey Kickbacks | circuit | exercise | female | 24s | | `WPL_34_E06` | `WPL_34` Lower Body Shaper | Forward Wall Squats | circuit | exercise | female | 24s | | `WPL_34_E07` | `WPL_34` Lower Body Shaper | Standing Side Kick (Right) | circuit | exercise | female | 20s | | `WPL_34_E08` | `WPL_34` Lower Body Shaper | Standing Side Kick (Left) | circuit | exercise | female | 20s | | `WPL_34_E09` | `WPL_34` Lower Body Shaper | Single Leg Forward Bend (Left) | circuit | exercise | female | 21s | | `WPL_34_E10` | `WPL_34` Lower Body Shaper | Single Leg Forward Bend (Right) | circuit | exercise | female | 22s | | `WPL_34_E11` | `WPL_34` Lower Body Shaper | Single Leg Quad Stretch (Right) | cool-down | exercise | female | 18s | | `WPL_34_E12` | `WPL_34` Lower Body Shaper | Single Leg Quad Stretch (Left) | cool-down | exercise | female | 19s | | `WPL_35_E01` | `WPL_35` Core & Alignment Flow | Push Ups to Hip Thrust | warm-up | exercise | female | 18s | | `WPL_35_E02` | `WPL_35` Core & Alignment Flow | Figure 4 Glute Bridge (Left) | warm-up | exercise | female | 20s | | `WPL_35_E03` | `WPL_35` Core & Alignment Flow | Figure 4 Glute Bridge (Right) | warm-up | exercise | female | 20s | | `WPL_35_E04` | `WPL_35` Core & Alignment Flow | Kneeling Windshield Wipers | warm-up | exercise | female | 23s | | `WPL_35_E05` | `WPL_35` Core & Alignment Flow | Side to Side Crunch | circuit | exercise | female | 21s | | `WPL_35_E06` | `WPL_35` Core & Alignment Flow | Seated Thoracic Rotations | circuit | exercise | female | 19s | | `WPL_35_E07` | `WPL_35` Core & Alignment Flow | Seated Torso Rotations | circuit | exercise | female | 20s | | `WPL_35_E08` | `WPL_35` Core & Alignment Flow | Abductor Raises (Left) | circuit | exercise | female | 17s | | `WPL_35_E09` | `WPL_35` Core & Alignment Flow | Adductor Raises (Right) | circuit | exercise | female | 17s | | `WPL_35_E10` | `WPL_35` Core & Alignment Flow | Abductor Raises (Right) | circuit | exercise | female | 17s | | `WPL_35_E11` | `WPL_35` Core & Alignment Flow | Adductor Raises (Left) | circuit | exercise | female | 17s | | `WPL_35_E12` | `WPL_35` Core & Alignment Flow | Wall Spine Stretch | cool-down | exercise | female | 20s | | `WPL_35_E13` | `WPL_35` Core & Alignment Flow | Standing Child’s Pose | cool-down | exercise | female | 20s | | `WPL_36_E01` | `WPL_36` Wellness Flow | Shoulder Stretch with Knees Raise | warm-up | exercise | female | 19s | | `WPL_36_E02` | `WPL_36` Wellness Flow | Wall Angels | warm-up | exercise | female | 20s | | `WPL_36_E03` | `WPL_36` Wellness Flow | Standing Bicycle Crunch | circuit | exercise | female | 20s | | `WPL_36_E04` | `WPL_36` Wellness Flow | Standing Sideways Crunch (Right) | circuit | exercise | female | 19s | | `WPL_36_E05` | `WPL_36` Wellness Flow | Standing Sideways Crunch (Left) | circuit | exercise | female | 17s | | `WPL_36_E06` | `WPL_36` Wellness Flow | Chest Wall Push Up | circuit | exercise | female | 21s | | `WPL_36_E07` | `WPL_36` Wellness Flow | Wall Push-Up Plank | circuit | exercise | female | 20s | | `WPL_36_E08` | `WPL_36` Wellness Flow | Wall Shoulder Taps | circuit | exercise | female | 20s | | `WPL_36_E09` | `WPL_36` Wellness Flow | Wall Taps | circuit | exercise | female | 23s | | `WPL_36_E10` | `WPL_36` Wellness Flow | Shoulder and T-Spine Mobility (Right) | cool-down | exercise | female | 22s | | `WPL_36_E11` | `WPL_36` Wellness Flow | Shoulder and T-Spine Mobility (Left) | cool-down | exercise | female | 20s | | `WPL_37_E01` | `WPL_37` Thighs & Abs Sculpt | Bridging Left Hip Circles (Clockwise) | circuit | exercise | female | 21s | | `WPL_37_E02` | `WPL_37` Thighs & Abs Sculpt | Bridging Left Hip Circles (Counter-Clockwise) | circuit | exercise | female | 20s | | `WPL_37_E03` | `WPL_37` Thighs & Abs Sculpt | Bridging Right Hip Circles (Clockwise) | circuit | exercise | female | 18s | | `WPL_37_E04` | `WPL_37` Thighs & Abs Sculpt | Bridging Right Hip Circles (Counter-Clockwise) | circuit | exercise | female | 18s | | `WPL_37_E05` | `WPL_37` Thighs & Abs Sculpt | Active Frog Stretch | cool-down | exercise | female | 20s | | `WPL_38_E01` | `WPL_38` Flexibility & Balance Flow | Wall Supported Knee Raise | warm-up | exercise | female | 21s | | `WPL_38_E02` | `WPL_38` Flexibility & Balance Flow | Wall Squats | circuit | exercise | female | 23s | | `WPL_38_E03` | `WPL_38` Flexibility & Balance Flow | Alternative Wall Sit Calf Raises | circuit | exercise | female | 24s | | `WPL_38_E04` | `WPL_38` Flexibility & Balance Flow | Wall Kickbacks & Curls (Right) | circuit | exercise | female | 24s | | `WPL_38_E05` | `WPL_38` Flexibility & Balance Flow | Wall Kickbacks & Curls (Left) | circuit | exercise | female | 24s | | `WPL_38_E06` | `WPL_38` Flexibility & Balance Flow | Wall Supported Calf Stretch (Right) | circuit | exercise | female | 20s | | `WPL_38_E07` | `WPL_38` Flexibility & Balance Flow | Wall Supported Calf Stretch (Left) | circuit | exercise | female | 20s | | `WPL_38_E08` | `WPL_38` Flexibility & Balance Flow | Dynamic Hip Flexor Stretch (Right) | cool-down | exercise | female | 20s | | `WPL_38_E09` | `WPL_38` Flexibility & Balance Flow | Dynamic Hip Flexor Stretch (Left) | cool-down | exercise | female | 21s | | `WPL_39_E01` | `WPL_39` Lower Body Focus | Straight Legs Glute Bridge | circuit | exercise | female | 21s | | `WPL_39_E02` | `WPL_39` Lower Body Focus | Adductor Raise to Knee Tuck (Right) | circuit | exercise | female | 18s | | `WPL_39_E03` | `WPL_39` Lower Body Focus | Adductor Raise to Knee Tuck (Left) | circuit | exercise | female | 18s | | `WPL_39_E04` | `WPL_39` Lower Body Focus | Bird Dog + Donkey Kick | circuit | exercise | female | 17s | | `WPL_39_E05` | `WPL_39` Lower Body Focus | Fire Hydrant (Left) | circuit | exercise | female | 20s | | `WPL_39_E06` | `WPL_39` Lower Body Focus | Fire Hydrant (Right) | circuit | exercise | female | 18s | | `WPL_40_E01` | `WPL_40` Power Core Workout | Wall Supported Knee Tucks | warm-up | exercise | female | 22s | | `WPL_40_E02` | `WPL_40` Power Core Workout | Inverted Side Steps | warm-up | exercise | female | 17s | | `WPL_40_E03` | `WPL_40` Power Core Workout | Inverted Kickbacks | circuit | exercise | female | 20s | | `WPL_40_E04` | `WPL_40` Power Core Workout | Side to Side Knee Tucks | circuit | exercise | female | 18s | | `WPL_40_E05` | `WPL_40` Power Core Workout | Hips Raise with Leg Extension | circuit | exercise | female | 25s | | `WPL_40_E06` | `WPL_40` Power Core Workout | Wall Assisted Oblique Twists | circuit | exercise | female | 20s | | `WPL_40_E07` | `WPL_40` Power Core Workout | Push Through Crunches | circuit | exercise | female | 20s | | `WPL_40_E08` | `WPL_40` Power Core Workout | Spine Twist with Pulses | circuit | exercise | female | 23s | | `WPL_40_E09` | `WPL_40` Power Core Workout | Wall Side Bends (Left) | cool-down | exercise | female | 19s | | `WPL_40_E10` | `WPL_40` Power Core Workout | Wall Side Bends (Right) | cool-down | exercise | female | 20s | | `WPL_41_E01` | `WPL_41` Perfect Posture With Pilates | Standing Thoracic Rotations | warm-up | exercise | female | 24s | | `WPL_41_E02` | `WPL_41` Perfect Posture With Pilates | Standing Clamshells | warm-up | exercise | female | 20s | | `WPL_41_E03` | `WPL_41` Perfect Posture With Pilates | Wall Assisted Push Up with Openers | circuit | exercise | female | 28s | | `WPL_41_E04` | `WPL_41` Perfect Posture With Pilates | Wall Pulldown | circuit | exercise | female | 23s | | `WPL_41_E05` | `WPL_41` Perfect Posture With Pilates | Alternating Shoulder Rotations | circuit | exercise | female | 22s | | `WPL_41_E06` | `WPL_41` Perfect Posture With Pilates | Curtsey Lunge + Kick Up (Right) | circuit | exercise | female | 23s | | `WPL_41_E07` | `WPL_41` Perfect Posture With Pilates | Curtsey Lunge + Kick Up (Left) | circuit | exercise | female | 20s | | `WPL_41_E08` | `WPL_41` Perfect Posture With Pilates | Wall Assisted Row and Press | circuit | exercise | female | 20s | | `WPL_41_E09` | `WPL_41` Perfect Posture With Pilates | Wall Sit Hip Hinge | circuit | exercise | female | 24s | | `WPL_41_E10` | `WPL_41` Perfect Posture With Pilates | Across the body | cool-down | exercise | female | 23s | | `WPL_41_E11` | `WPL_41` Perfect Posture With Pilates | Wall Assisted Pec Stretch | cool-down | exercise | female | 18s | | `WPL_42_E01` | `WPL_42` Lower Back Care | Wall Assisted Side Kick (Right) | circuit | exercise | female | 21s | | `WPL_42_E02` | `WPL_42` Lower Back Care | Wall Assisted Side Kick (Left) | circuit | exercise | female | 18s | | `WPL_42_E03` | `WPL_42` Lower Back Care | C-Shape Leg Extensions | circuit | exercise | female | 33s | | `WPL_43_E01` | `WPL_43` Long, Lean Legs | Wall Assisted Knee Raises (Right) | warm-up | exercise | female | 18s | | `WPL_43_E02` | `WPL_43` Long, Lean Legs | Wall Assisted Knee Raises (Left) | warm-up | exercise | female | 20s | | `WPL_43_E03` | `WPL_43` Long, Lean Legs | Wall Sit Clamshells | circuit | exercise | female | 20s | | `WPL_43_E04` | `WPL_43` Long, Lean Legs | Wall Supported Squat + Kickback | circuit | exercise | female | 22s | | `WPL_43_E05` | `WPL_43` Long, Lean Legs | Wall Supported Lateral Squats | circuit | exercise | female | 19s | | `WPL_44_E01` | `WPL_44` Abs Attack | Corkscrew | circuit | exercise | female | 19s | | `WPL_44_E02` | `WPL_44` Abs Attack | Abdominal Twist | circuit | exercise | female | 21s | | `WPL_44_E03` | `WPL_44` Abs Attack | Wall Assisted Roll Up | circuit | exercise | female | 22s | | `WPL_44_E04` | `WPL_44` Abs Attack | Wall Assisted L-Crunch (Right) | circuit | exercise | female | 20s | | `WPL_44_E05` | `WPL_44` Abs Attack | Wall Assisted L-Crunch (Left) | circuit | exercise | female | 20s | | `WPL_44_E06` | `WPL_44` Abs Attack | Wall Assisted Alternative Rows | circuit | exercise | female | 22s | | `WPL_45_E01` | `WPL_45` Stand Tall Flow | Wall Assisted Fast Marching | circuit | exercise | female | 18s | | `WPL_45_E02` | `WPL_45` Stand Tall Flow | Wall Assisted Curtsey (Left) | circuit | exercise | female | 18s | | `WPL_45_E03` | `WPL_45` Stand Tall Flow | Wall Assisted Curtsey (Right) | circuit | exercise | female | 19s | | `WPL_45_E04` | `WPL_45` Stand Tall Flow | Alternating Chest Stretch | cool-down | exercise | female | 20s | | `WPL_46_E01` | `WPL_46` Confident Posture Sesh | Thoracic Rotations | warm-up | exercise | female | 20s | | `WPL_46_E02` | `WPL_46` Confident Posture Sesh | Wall Sit with Chest Openers | circuit | exercise | female | 24s | | `WPL_46_E03` | `WPL_46` Confident Posture Sesh | Wall Supported Thoracic Rotations | cool-down | exercise | female | 20s | | `WPL_47_E01` | `WPL_47` Thighs Toning | Spine Twist | warm-up | exercise | female | 27s | | `WPL_47_E02` | `WPL_47` Thighs Toning | Wall Assisted Thoracic Rotations | warm-up | exercise | female | 23s | | `WPL_48_E01` | `WPL_48` Strength & Stretching Combo | Wall Supported Split Squat (Left) | warm-up | exercise | female | 19s | | `WPL_48_E02` | `WPL_48` Strength & Stretching Combo | Wall Supported Split Squat (Right) | warm-up | exercise | female | 19s | | `WPL_48_E03` | `WPL_48` Strength & Stretching Combo | Wall Sit with Leg Extension | warm-up | exercise | female | 19s | | `WPL_48_E04` | `WPL_48` Strength & Stretching Combo | Wall Assisted Squat + Push Up | circuit | exercise | female | 23s | | `WPL_48_E05` | `WPL_48` Strength & Stretching Combo | Wall Assisted Scapular Push Ups | circuit | exercise | female | 19s | | `WPL_49_E01` | `WPL_49` Belly Burner | Wall Supported Reverse Crunch | circuit | exercise | female | 17s | | `WPL_49_E02` | `WPL_49` Belly Burner | Wall Supported Windshield Wipers | circuit | exercise | female | 23s | | `WPL_49_E03` | `WPL_49` Belly Burner | Wall Assisted Scissors | circuit | exercise | female | 18s | | `WPL_50_E01` | `WPL_50` Lean and Resiliant Body | Wall Supported Cat & Cow | cool-down | exercise | female | 25s | | `WPL_51_E01` | `WPL_51` Legs Power Up | Wall Sit Robot Arms | circuit | exercise | female | 20s | | `WPL_51_E02` | `WPL_51` Legs Power Up | Lunge with Chest Opener (Right) | circuit | exercise | female | 20s | | `WPL_51_E03` | `WPL_51` Legs Power Up | Lunge with Chest Opener (Left) | circuit | exercise | female | 19s | | `WPL_51_E04` | `WPL_51` Legs Power Up | Dynamic Backwards Lunge (Right) | circuit | exercise | female | 21s | | `WPL_51_E05` | `WPL_51` Legs Power Up | Dynamic Backwards Lunge (Left) | circuit | exercise | female | 20s | | `WPL_53_E01` | `WPL_53` Next-Level Leg Day | Calf Raised Squat | circuit | exercise | female | 20s | | `WPL_53_E02` | `WPL_53` Next-Level Leg Day | Stance Changing Squat | circuit | exercise | female | 22s | | `WPL_54_E01` | `WPL_54` Upper Body Set | Wall Sit Arm Slides | circuit | exercise | female | 21s | | `WPL_54_E02` | `WPL_54` Upper Body Set | Triceps Wall Push-Ups | circuit | exercise | female | 22s | | `WPL_54_E03` | `WPL_54` Upper Body Set | Shoulder Circles (Left) | cool-down | exercise | female | 22s | | `WPL_54_E04` | `WPL_54` Upper Body Set | Shoulder Circles (Right) | cool-down | exercise | female | 19s | ### Wall Pilates with Power Kit | Code | Workout | Exercise | Phase | Kind | Model | Sec | |---|---|---|---|---|---|---| | `WPK_06_E01_S01` | `WPK_06` Butt & Core With Control | Butt & Core With Control | circuit | segment | female | 20s | | `WPK_09_E01_S01` | `WPK_09` Crunch & Press Your Core | Crunch & Press Your Core | circuit | segment | female | 20s | | `WPK_15_E01_S01` | `WPK_15` Core Toner | Core Toner | circuit | segment | female | 20s | | `WPK_15_E01_S03` | `WPK_15` Core Toner | Core Toner | circuit | segment | female | 25s | | `WPK_16_E01_S01` | `WPK_16` Full Body Power Flow | Full Body Power Flow | circuit | segment | female | 20s | | `WPK_24_E01_S01` | `WPK_24` Core & Posture Work | Core & Posture Work | circuit | segment | female | 20s | | `WPK_24_E01_S03` | `WPK_24` Core & Posture Work | Core & Posture Work | circuit | segment | female | 25s | | `WPK_26_E01_S01` | `WPK_26` Arms in Focus | Arms in Focus | circuit | segment | female | 20s | | `WPK_27_E01_S01` | `WPK_27` Abs in Action | Abs in Action | circuit | segment | female | 20s | ## Related - [Your own video space](https://docs.wandura.ai/developers/concepts/own-space) - [Open video](https://docs.wandura.ai/developers/concepts/open-video) - [Catalog](https://docs.wandura.ai/developers/concepts/catalog) --- # Errors > **TL;DR** — Branch on `error_code` (creatives: the numeric `code`), never on the message. Keep a default branch: an unknown code is handled by its HTTP status class (`429` and `5xx` retry, other `4xx` do not). This page lists every status and code each endpoint returns, with what your app shows and what your backend does. When to retry, and how: the [retry policy](https://docs.wandura.ai/developers/reference/behaviour#retries). ## Error formats ### Flat format Catalog, playback, configuration and open video use a flat object: ```json { "error": "Episode not found or not ready to stream", "error_code": "not_ready" } ``` | Field | Type | Description | |---|---|---| | `error` | string | A message for your logs. Do not show it to viewers and do not parse it, except where a row below says the code is in `error`. | | `error_code` | string | The machine-readable code. Branch on it. Absent on a few errors (shown as **none** below). | | `reason` | string | With `not_entitled`, and with `429` `prefetch_shed`: the detail. | | `fields` | array of strings | With `invalid_device_info`: the device values that were rejected. | | `protection` | string | With `sdk_required`: the protection level of the episode. | | `supported_versions`, `latest_version`, `upgrade_to` | | With `unsupported_version`: what you can send instead. | A few `4xx` answers carry no `error_code` and put a stable code in `error` instead: `org_suspended`, `app_not_registered`, `collection_not_found` and `video_not_found`. Compare the whole string. ### Creatives envelope The creatives endpoints wrap errors in an envelope with a numeric `code`. Errors have **no `data`** field: ```json { "code": 4011, "message": "Invalid or revoked API key", "server_time": 1790679032 } ``` `code` is four digits: the first three are the HTTP status. Two creatives answers use the **flat** format instead: `429` `rate_limited` and `400` `unsupported_version`. ### Request id Every response carries a `Wandura-Request-Id` header (for example `req_01J9Z3W2N8V4K7D5QX6T0B1C2M`), and every JSON error body, flat or envelope, a `request_id` field with the same value. Log it, and quote it when you contact support: it finds the exact request in Wandura's logs. ## Handle errors by code | You received | Do | |---|---| | A code listed on this page | Follow its row. | | An unknown `error_code` with `429` | Wait `Retry-After`, then retry. | | An unknown `error_code` with another `4xx` | Do not retry. Show a generic error and alert your engineers. | | An unknown `error_code` with a `5xx` | Retry with backoff, like `503`. | | No body, or a body that is not JSON | Decide by status class, the same way. | New codes can appear within `v1` at any time; an app without a default branch shows a blank screen when one does. Never show `error` or `message` to viewers: map codes to your own text. ### `Retry-After` Sent with every `429`, and with the `503`s marked "after `Retry-After`" below. Never retry sooner. `503` `not_ready`, creatives `503`s, `502` and `500` carry none: use backoff. ## Messages for viewers The "Your app shows" column below uses these four messages. Use your own wording. | Message | When | |---|---| | **Unavailable** — "This title is no longer available" | The licence is not active. | | **Not yet** — "Not available yet" | The episode is not playable right now. | | **Busy** — "Busy, try again in a moment" | Retried and still failing temporarily. | | **Broken** — "Couldn't load this episode" | A problem in your integration. Alert your engineers. | ## Every endpoint ### Every path | Status | Code | When | Retry? | Do | |---|---|---|---|---| | 404 | `not_found` | Unknown path under `/api/delivery/v1/`, any method. No `Wandura-Version` header. | No | Fix the path. | | 405 | none (empty body) | A real path with the wrong method, for example `GET /playback`. The `Allow` header lists the right one. | No | Fix the method. | ### Catalog `GET /api/delivery/v1/catalog` | Status | Code | When | Retry? | Your app shows | Your backend does | |---|---|---|---|---|---| | 400 | `invalid_request` | `limit` is not 1–200, or `cursor` was changed. | No | — | Fix the request. Restart the walk from page one. | | 400 | `unsupported_version` | The `Wandura-Version` header, or your key's pin, is unknown or retired. | No | — | Send a supported version; see [Migrating versions](https://docs.wandura.ai/developers/guides/migrating-versions). | | 401 | none | Header missing, or key unknown or revoked. | No | — | Check the key. Keep your previous catalog. | | 403 | none | The key lacks `metadata:read`. | No | — | Use a key with that scope. | | 403 | `org_suspended` (in `error`) | Your organisation is suspended. | No | — | Keep your copy, stop selling, contact Wandura. | | 429 | `rate_limited` | Catalog limit reached. | After `Retry-After` | — | Wait, then find the loop. | | 503 | `service_unavailable` | Wandura could not check the key in time. The key is fine. | After `Retry-After` | — | Retry. Never rotate the key for this. | | 503 | `service_unavailable` | Wandura could not read the catalog in time (`Could not read the catalog in time — retry`). | After `Retry-After` | — | Retry. **Never** treat it as an empty catalog. | ### List series `GET /api/delivery/v1/series` | Status | Code | When | Retry? | Your backend does | |---|---|---|---|---| | 400 | `unsupported_version` (flat) | Unknown or retired dated version. | No | Send a supported version. | | 401 | `4010` | No `Authorization: Bearer` header. | No | Fix the request. | | 401 | `4011` | Key unknown or revoked. | No | Check the key. | | 403 | `4030` | The key lacks `metadata:read`. | No | Use a key with that scope. | | 403 | `4031` | Your organisation is suspended. | No | Contact Wandura. | | 422 | `4220` | `limit` is not 1–100, `updated_since` is not epoch seconds, or `cursor` is not a value this endpoint returned. | No | Fix the request; restart from your last checkpoint. | | 429 | `rate_limited` (flat) | Catalog limit reached (shared with the catalog). | After `Retry-After` | Wait; sync less often. | | 503 | `5030` | The list is temporarily unavailable. | Backoff | Retry; keep your checkpoint. | | 503 | `5031` | Wandura could not check the key in time. | Backoff | Retry. Do not rotate the key. | ### Get series metadata `GET /api/delivery/v1/series/{code}` | Status | Code | When | Retry? | Your backend does | |---|---|---|---|---| | 400 | `unsupported_version` (flat) | Unknown or retired dated version. | No | Send a supported version. | | 401 | `4010` | No `Authorization: Bearer` header. | No | Fix the request. | | 401 | `4011` | Key unknown or revoked. | No | Check the key. | | 403 | `4030` | The key lacks `metadata:read`. | No | Use a key with that scope. | | 403 | `4031` | Your organisation is suspended. | No | Contact Wandura. | | 404 | `4040` | No such series, or your organisation may not stream it (the same answer on purpose). | No | Stop showing it; check the list. | | 429 | `rate_limited` (flat) | Catalog limit reached (shared with the catalog). | After `Retry-After` | Wait. | | 503 | `5030` | The series is temporarily unavailable. | Backoff | Retry. | | 503 | `5031` | Wandura could not check the key in time. | Backoff | Retry. | ### List playlists `GET /api/delivery/v1/playlists` | Status | Code | When | Retry? | Your backend does | |---|---|---|---|---| | 400 | `unsupported_version` (flat) | Unknown or retired dated version. | No | Send a supported version. | | 401 | `4010` | No `Authorization: Bearer` header. | No | Fix the request. | | 401 | `4011` | Key unknown or revoked. | No | Check the key. | | 403 | `4030` | The key lacks `metadata:read`. | No | Use a key with that scope. | | 403 | `4031` | Your organisation is suspended. | No | Contact Wandura. | | 403 | `4032` | Your organisation licenses films, not video. | No | Use [List series](https://docs.wandura.ai/developers/reference/series-list). | | 404 | `4040` | The `category` is not in the library. | No | Check the Category slug. | | 422 | `4220` | `limit` is not 1–100, `updated_since` is not epoch seconds, `category` is not a slug, or `cursor` is not a value this endpoint returned. | No | Fix the request; restart from your last checkpoint. | | 429 | `rate_limited` (flat) | Catalog limit reached (shared with the catalog). | After `Retry-After` | Wait; sync less often. | | 503 | `5030` | The list is temporarily unavailable. | Backoff | Retry; keep your checkpoint. | | 503 | `5031` | Wandura could not check the key in time. | Backoff | Retry. Do not rotate the key. | ### Get playlist metadata `GET /api/delivery/v1/playlists/{code}` | Status | Code | When | Retry? | Your backend does | |---|---|---|---|---| | 400 | `unsupported_version` (flat) | Unknown or retired dated version. | No | Send a supported version. | | 401 | `4010` | No `Authorization: Bearer` header. | No | Fix the request. | | 401 | `4011` | Key unknown or revoked. | No | Check the key. | | 403 | `4030` | The key lacks `metadata:read`. | No | Use a key with that scope. | | 403 | `4031` | Your organisation is suspended. | No | Contact Wandura. | | 403 | `4032` | Your organisation licenses films, not video. | No | Use [Get series metadata](https://docs.wandura.ai/developers/reference/series-get). | | 404 | `4040` | No such playlist, or it is no longer in the library (the same answer on purpose). | No | Stop showing it; check the list. | | 429 | `rate_limited` (flat) | Catalog limit reached (shared with the catalog). | After `Retry-After` | Wait. | | 503 | `5030` | The playlist is temporarily unavailable. | Backoff | Retry. | | 503 | `5031` | Wandura could not check the key in time. | Backoff | Retry. | ### Playback `POST /api/delivery/v1/playback`. In a batch, the request-level rows answer the whole request; the per-ticket rows come back inside `items[]`, each with its own `status` (and `retry_after` instead of the header). **Whole request** | Status | Code | When | Retry? | Your app shows | Your backend does | |---|---|---|---|---|---| | 400 | none | The body is not JSON, or has neither `episode_id` nor `film_ref` with a numeric `episode_no`. | No | Broken | Fix the request. | | 400 | `invalid_request` | Only one of `union_info` and `drm_kek`, or a malformed batch. | No | Broken | Fix the request. | | 400 | `invalid_device_info` | A device value is empty-looking, for example `"(null)"`, or under 8 characters. `fields` names it. | No | Broken | Fix how the app reads the Player SDK values. Alert. | | 400 | `unsupported_version` | Unknown or retired dated version. | No | Broken | See [Migrating versions](https://docs.wandura.ai/developers/guides/migrating-versions). | | 401 | none | Header missing, or key unknown or revoked. | No | Broken | Check the key. Alert. | | 403 | none | The key lacks `playback`. | No | Broken | Use a playback key. | | 429 | `rate_limited` | Playback limit reached for every item. With `"reason": "prefetch_shed"`: prefetch is paused near the limit. | After `Retry-After` | Busy (play); nothing (prefetch) | Retry plays; drop prefetches. See [Rate limits](https://docs.wandura.ai/developers/concepts/rate-limits). | | 503 | `service_unavailable` | Wandura could not check the key in time. | After `Retry-After` | Busy | Retry. Do not rotate the key. | | 500 | none (rare) | An unexpected error. The JSON body carries `request_id`. | Backoff | Busy | Retry once; report it with the request id. | **Per ticket** (top level for a single episode, or one item of a batch) | Status | Code | When | Retry? | Your app shows | Your backend does | |---|---|---|---|---|---| | 403 | `not_entitled` | Your organisation may not stream this film right now. `reason` says why (table below). | No | Unavailable | Log `reason`. Stop selling the film once your next catalog sync confirms it is gone. | | 404 | `not_ready` | The episode or film is unknown, not published or not ready. | No | Not yet | Refresh your catalog. | | 409 | `sdk_required` | Encrypted episode and no device values. | No | Broken | Send `union_info` and `drm_kek`. Alert. | | 429 | `rate_limited` | This item could not be admitted (batch only). `reason` `prefetch_shed` for a paused prefetch. | After `retry_after` | Nothing for a prefetch | Retry this item only. | | 502 | none | The stream could not be prepared, or the play token could not be signed. | Backoff | Busy | Retry, then report. | | 503 | `not_ready` | No playable version of the episode right now. No `Retry-After`. | Not now | Not yet | Try again later (next play or sync). | | 503 | `service_unavailable` | The video provider did not answer in time (`The video provider did not answer in time — retry`). | After `Retry-After` (2 s) | Busy | Retry. The episode is not missing. | | 503 | `service_unavailable` | The ticket could not be issued right now (`Could not issue this grant right now — retry`). | After `Retry-After` | Busy | Retry. | > **Do not take irreversible steps on one answer.** Before you stop selling a film or refund viewers because of `not_entitled` or `not_ready`, confirm it with your next catalog sync: a withdrawn film disappears from the catalog. If Wandura cannot check your licence or the episode in time while issuing a ticket, it answers `503` `service_unavailable` (`Could not check the licence or episode right now — retry`) with `Retry-After`, never `404` or `403`. Keep selling, and retry. #### `not_entitled` reasons Log `reason` and quote it to support, but show the same screen for all of them: new reasons may be added. | `reason` | Meaning | |---|---| | `org_suspended` | Your organisation's access is suspended. | | `entitlement_not_found` | Your organisation has no licence for this film. | | `entitlement_suspended` | Your licence for this film is suspended. | | `streaming_disabled` | Your licence for this film does not include streaming. | | `outside_window` | Today (UTC) is outside your licence window. | ### Configuration `GET /api/delivery/v1/config` | Status | Code | When | Retry? | Your backend does | |---|---|---|---|---| | 400 | `unsupported_version` | Unknown or retired dated version. | No | Send a supported version. | | 401 | none | Header missing, or key unknown or revoked. | No | Check the key. | | 403 | `org_suspended` (in `error`) | Your organisation is suspended. | No | Contact Wandura. | | 429 | `rate_limited` | Configuration limit reached. | After `Retry-After` | Read it less often: at start-up or every few hours. | | 503 | `service_unavailable` | Wandura could not check the key in time. | After `Retry-After` | Retry; keep the configuration you had. | | 503 | `service_unavailable` | Wandura could not read your configuration in time (`Could not read your configuration in time — retry`). | After `Retry-After` | Retry; keep the configuration you had. | ### List creatives `GET /api/delivery/v1/creatives` | Status | Code | When | Retry? | Your backend does | |---|---|---|---|---| | 400 | `unsupported_version` (flat) | Unknown or retired dated version. | No | Send a supported version. | | 401 | `4010` | No `Authorization: Bearer` header. | No | Fix the request. | | 401 | `4011` | Key unknown or revoked. | No | Check the key. | | 403 | `4030` | The key lacks `creatives:export`. | No | Use a key with that scope. | | 403 | `4031` | Your organisation is suspended. | No | Contact Wandura. | | 422 | `4220` | `limit` is not 1–100 (an empty `limit=` counts as 0). | No | Fix the request. | | 422 | `4221` | `updated_since` is not epoch seconds. | No | Fix the request. | | 422 | `4222` | `cursor` is not valid. | No | Restart from your last checkpoint. | | 429 | `rate_limited` (flat) | Creatives limit reached. | After `Retry-After` | Wait; sync less often. | | 503 | `5030` | The feed is temporarily unavailable. | Backoff | Retry; keep your checkpoint. | | 503 | `5031` | Wandura could not check the key in time. | Backoff | Retry. Do not rotate the key. | ### Get a creative `GET /api/delivery/v1/creatives/{id}` | Status | Code | When | Retry? | Your backend does | |---|---|---|---|---| | 400 | `unsupported_version` (flat) | Unknown or retired dated version. | No | Send a supported version. | | 401 | `4010` | No `Authorization: Bearer` header. | No | Fix the request. | | 401 | `4011` | Key unknown or revoked. | No | Check the key. | | 403 | `4030` | The key lacks `creatives:export`. | No | Use a key with that scope. | | 403 | `4031` | Your organisation is suspended. | No | Contact Wandura. | | 404 | `4040` | No approved creative with this ID for your organisation (also: the ID is not a UUID). | No | Remove it from your active set. | | 429 | `rate_limited` (flat) | Creatives limit reached (shared with the list). | After `Retry-After` | Wait. | | 503 | `5030` | The feed is temporarily unavailable. | Backoff | Retry. | | 503 | `5031` | Wandura could not check the key in time. | Backoff | Retry. | ### Download a creative's final file `GET /api/delivery/v1/creatives/{id}/file` | Status | Code | When | Retry? | Your backend does | |---|---|---|---|---| | 400 | `unsupported_version` (flat) | Unknown or retired dated version. | No | Send a supported version. | | 401 | `4010` | No `Authorization: Bearer` header. | No | Fix the request. | | 401 | `4011` | Key unknown or revoked. | No | Check the key. | | 403 | `4030` | The key lacks `creatives:export`. | No | Use a key with that scope. | | 403 | `4031` | Your organisation is suspended. | No | Contact Wandura. | | 403 | `4032` | `rights_ended`: your export rights for the film have ended. | No | Stop using the creative. | | 404 | `4040` | No approved creative with this ID for your organisation (also: the ID is not a UUID). | No | Remove it from your active set. | | 409 | `4090` | `final_not_ready`: the final file is not ready yet. | Later | Retry when the record's `final.ready` is `true`. | | 429 | `rate_limited` (flat) | Creatives limit reached (shared with the other creatives endpoints). | After `Retry-After` | Wait. | | 503 | `5030` | Creative data is temporarily unavailable. | Backoff | Retry. | | 503 | `5031` | Wandura could not check the key in time. | Backoff | Retry. | | 503 | `5032` | The download link could not be prepared. | Backoff | Retry. | ### List open videos `GET /api/delivery/v1/videos` | Status | Code | When | Retry? | Your backend does | |---|---|---|---|---| | 400 | none | `cursor` is not a token this endpoint issued, or `limit` is not 1–200. | No | Fix the request; restart the sweep. | | 400 | `unsupported_version` | Unknown or retired dated version. | No | Send a supported version. | | 401 | none | Header missing, or key unknown or revoked. | No | Check the key. | | 403 | none | The key lacks `videos:read`. | No | Use the app's open video key. | | 403 | `app_not_registered` (in `error`) | The key is not bound to an app. | No | Register the app; use that app's key. | | 403 | `org_suspended` (in `error`) | Your organisation is suspended. | No | Contact Wandura. | | 404 | `collection_not_found` (in `error`) | Unknown, unpublished or not granted to you. | No | Check the collection code. | | 429 | `rate_limited` | List limit reached. | After `Retry-After` | Wait; cache the list. | | 500 | none | The list could not be read. | Backoff | Retry; keep serving your previous list. | | 503 | `service_unavailable` | Wandura could not check the key in time. | After `Retry-After` | Retry. | ### Get one open video `GET /api/delivery/v1/videos/{id}` | Status | Code | When | Retry? | Your backend does | |---|---|---|---|---| | 400 | none | `id` is not a UUID. | No | Use the `id` from the list. | | 400 | `unsupported_version` | Unknown or retired dated version. | No | Send a supported version. | | 401 | none | Header missing, or key unknown or revoked. | No | Check the key. | | 403 | none | The key lacks `videos:read`. | No | Use the app's open video key. | | 403 | `app_not_registered` (in `error`) | The key is not bound to an app. | No | Register the app. | | 403 | `org_suspended` (in `error`) | Your organisation is suspended. | No | Contact Wandura. | | 404 | `video_not_found` (in `error`) | Unknown, not granted, unpublished, archived or not playable yet. | No | Drop it from your list. | | 429 | `rate_limited` | Single-video limit reached (its own counter). | After `Retry-After` | Wait; prefer the cached list. | | 500 | none | The video could not be read. | Backoff | Retry. | | 503 | `service_unavailable` | Wandura could not check the key in time. | After `Retry-After` | Retry. | ## Related - [Canonical API behaviour](https://docs.wandura.ai/developers/reference/behaviour): retry policy, rate limits, freshness. - [Troubleshooting](https://docs.wandura.ai/developers/production/troubleshooting): from a symptom to a fix. - [Support](https://docs.wandura.ai/developers/help/support): what to send when an error persists. --- # Rate limits > **TL;DR** — Each organisation has an abuse ceiling per endpoint counter, far above normal traffic. Playback counts **tickets**, not requests, and refills every second. Near the ceiling Wandura slows down instead of failing: prefetches are refused first, a `play` request may wait half a second, and repeat requests get the ticket already issued. On a `429`, wait `Retry-After`. The numbers: [Canonical API behaviour · Rate limits](https://docs.wandura.ai/developers/reference/behaviour#rate-limits). ## How it is counted - **Per organisation**, not per key: more keys do not raise the ceiling. - **Per counter**: playback, catalog, creatives, open video list, single open video and configuration each have their own, so a runaway job on one cannot block another. - **In the counter's unit**: playback counts tickets (a batch of 3 counts 3; a reused ticket counts 0; a refused ticket counts 0); the others count requests. - **Only valid keys** are counted: nobody without your key can use up your ceiling. Anyone who can drive **your** ticket endpoint can, though: limit tickets per viewer on your side ([Security](https://docs.wandura.ai/developers/concepts/security#trust-boundary)). The limit values per counter, units included, are in one table: [Canonical API behaviour · Rate limits](https://docs.wandura.ai/developers/reference/behaviour#rate-limits). `GET /config` returns the limits that apply to your organisation. ## Refill | Counters | How the allowance comes back | |---|---| | `playback`, `catalog` | **Continuously**: one sixtieth of the limit every second. From idle you can spend a full minute's worth at once; after that, room comes back second by second, so `Retry-After` is usually **1–2 seconds**. | | `creatives`, `videos`, `video`, `config` | **Per clock minute (UTC)**: the count starts again at every whole minute; `Retry-After` is the rest of the minute. | Counting is approximate on the high side: a burst can get up to about 2.5 % past a limit before the `429` starts. ## Graceful overload Close to the playback ceiling, Wandura protects the episode a viewer has just tapped: | Situation | What happens | |---|---| | Less than about 20 % of your playback allowance left | Requests with `"intent": "prefetch"` get `429` `rate_limited` with `"reason": "prefetch_shed"`. `play` requests are still issued. | | A batch with more items than there is room for | Prefetch items are refused first, each with its own `429` and `retry_after`; the others get tickets. The request is `429` as a whole only when no item can be issued. | | A `play` request arrives a few hundred milliseconds before there is room | Wandura holds it up to about **0.5 seconds**, then issues it. Allow at least 5 seconds of client timeout. Prefetches are never held. | | The same viewer asks again for the same episode on the same device | The ticket already issued comes back, not counted (needs `viewer_ref`; see [Playback](https://docs.wandura.ai/developers/concepts/playback#viewer-ref)). | A paused prefetch answers: ```json { "error": "Prefetch requests are paused while your playback traffic is close to its ceiling — tickets for viewers who pressed play are still issued. Retry the prefetch after Retry-After, or request it when the viewer plays.", "error_code": "rate_limited", "reason": "prefetch_shed" } ``` It is not an error for the viewer: request the episode with `"intent": "play"` when the viewer taps it. ## When you reach the ceiling Every endpoint answers `429` with a flat body, the creatives endpoints included: ```json { "error": "Too many catalog requests for this account. This is an abuse ceiling, not a quota — if a normal integration reaches it, contact us and it will be raised.", "error_code": "rate_limited" } ``` | Header (on `429` only) | Meaning | |---|---| | `Retry-After` | Seconds until there is room again. | | `X-RateLimit-Limit` | The limit of this counter for your organisation, per window (playback: tickets). | | `X-RateLimit-Window` | The window, in seconds (60). | ## How to recover 1. Stop sending to that counter, **from every call in your process**, until `Retry-After` has passed, plus a random 0–1 s. Earlier retries only earn more `429`s. 2. Find the cause. The usual ones: catalog calls on every app open or screen instead of once ([Call the catalog once](https://docs.wandura.ai/developers/guides/smooth-playback#catalog-once)); one ticket request per episode instead of a batch of up to 3 ([Request tickets early](https://docs.wandura.ai/developers/guides/smooth-playback#request-early)); a retry loop without backoff ([no retry storm](https://docs.wandura.ai/developers/guides/smooth-playback#no-storm)); a job that requests tickets for a whole catalog. One app open should cost one catalog call and one ticket call. 3. If your **normal** traffic reaches a ceiling, ask in your team's Wandura Discord channel to raise it for your organisation. A raised limit takes effect within about a minute. Wandura monitors organisations that reach their playback ceiling. Still tell Wandura in your channel when your normal traffic does: that is how a limit gets raised. Retry rules for every answer: [the retry policy](https://docs.wandura.ai/developers/reference/behaviour#retries). ## Related - [Smooth playback under load](https://docs.wandura.ai/developers/guides/smooth-playback) - [Go-live checklist](https://docs.wandura.ai/developers/production/go-live): the limit review before launch. --- # Versioning and API evolution > **TL;DR** — The major version is in the path (`/v1`). Inside it, Wandura only **adds**; any change of shape ships as a new **dated version**, and your key stays pinned to the one it was created with. Read responses tolerantly (ignore unknown fields, unknown values = default case, unknown error codes = by status class) and your integration keeps working without code changes. Breaking changes get **12 months** of overlap, or **30 days'** notice during the beta. Dated versions, ready-made links, `GET /config` and deprecation headers are all live. ## How versions work | Layer | Example | How you choose | |---|---|---| | Major version | `/api/delivery/v1/…` | The path you call. | | Dated version | `2026-10-02` | Your key is pinned to the version current when it was created. Override per request with the `Wandura-Version` header. | Every response says which dated version produced it in the `Wandura-Version` header, and carries `Wandura-API-Status: beta` while the API is in beta. ## Read responses tolerantly | You | In return, Wandura | |---|---| | **Ignore fields you do not recognise.** Never validate responses against a closed schema. | Never removes, renames or retypes a field inside a dated version. | | **Treat an unknown value as the generic case** (for `protection`, `status`…). | Announces new values in the changelog before returning them. | | **Handle an unknown `error_code` by its status class**: `429` wait `Retry-After`; other `4xx` do not retry; `5xx` retry with backoff. | Never changes the code or status of a case that already has one. | ## Changes that are not breaking They can appear at any time, without notice: a new endpoint; a new optional parameter; a new response field; a new error code or enum value; a higher rate limit. ## Changes that are breaking Never silent: removing or renaming an endpoint, parameter or field; a new required parameter; changing a field's type or meaning; changing authentication or the scope an endpoint needs; a different error code for an existing case; a lower rate limit. They ship as a new dated version, or a new major version, or during the beta under the [beta rule](https://docs.wandura.ai/developers/concepts/versioning#beta). ## Docs for an earlier version When Wandura publishes a new major documentation version, the previous one is **kept, not deleted**: read it at `/v1/developers/…` (Vietnamese at `/vi/v1/developers/…`), with an "older version" banner at the top of each page. A frozen version is not edited again, except for security fixes. If your integration runs against the older contract, that is still the right documentation for you. **The documentation version is not the number in the API path.** The current documentation version is **v2** because the integration model changed (your organisation's own space), but the REST endpoints stay at `/api/delivery/v1/…`. Do not go looking for `/api/delivery/v2`. ## Dated versions - **Your key is pinned.** It receives the shape it was built against until that version's sunset date. Keys created before dated versions existed use `2026-10-02`. - **Try a newer version per request** with `Wandura-Version: `. When your code handles it, move your keys over: a **new** key is pinned to the latest version; **rotating** a key keeps its pin. - **An unknown or retired version** in the header (or as your key's pin) answers `400` `unsupported_version`, with `supported_versions`, `latest_version` and, for a retired pin, `upgrade_to`. This check happens before the key check, and uses the flat format on every endpoint. - How to move from one version to the next: [Migrating versions](https://docs.wandura.ai/developers/guides/migrating-versions). ### Version history #### 2026-10-02 The first dated version: the `v1` shapes as of 2 October 2026. Supported; no sunset date. ## Follow links instead of building URLs Responses carry the URLs you need next, absolute, in `links`: | Endpoint | Links | |---|---| | [List licensed catalog](https://docs.wandura.ai/developers/reference/catalog) | `self`, `next` (`null` on the last page or when not paging), `playback`, `config` | | [List creatives](https://docs.wandura.ai/developers/reference/creatives-list) | `self`, `next`; and `self` on each creative | | [List open videos](https://docs.wandura.ai/developers/reference/videos-list) | `self`, `next` | | [Get configuration](https://docs.wandura.ai/developers/reference/config) | every endpoint, the docs, the changelog feed | Cursors are opaque: copy them, never decode or build them. ## Read your configuration [`GET /api/delivery/v1/config`](https://docs.wandura.ai/developers/reference/config) tells your backend, for your key: the limits that apply to you, your playback settings and ticket lifetimes, batch limits, subtitle languages, the API versions (pinned, latest, supported) and every announced deprecation. Read it at start-up or every few hours instead of hard-coding these values. ## Deprecations and sunset dates When an endpoint or a dated version is going away, Wandura announces it in four places at once: 1. **Response headers**, on every response served by it: `Deprecation: @` ([RFC 9745](https://www.rfc-editor.org/rfc/rfc9745)), `Sunset: ` ([RFC 8594](https://www.rfc-editor.org/rfc/rfc8594)), and `Link: ; rel="deprecation"`. 2. The `deprecations` list in `GET /config`. 3. The machine-readable feed `https://docs.wandura.ai/changes.json` (`api_versions`, `deprecations`). 4. The changelog, and an email to the Admin of every organisation that uses the API. A single deprecated field gets no header; it is listed in the other three places. Log these headers in your monitoring ([Observability](https://docs.wandura.ai/developers/production/observability)). There are no deprecations today. ## Support window When a new major version (for example `/v2`) is released, Wandura announces it in the changelog and by email to your Admins, keeps the previous version working unchanged for **12 months**, keeps its docs online as an older version, and then retires it: calls return an error naming the version to move to. ## During the beta A breaking change inside `/v1` is announced at least **30 days** before it takes effect, in the changelog and by email to your Admins. An urgent security fix may take effect at once; it is announced as soon as it is live. ## Where to follow changes - **Changelog**: in the menu; every page changed, by day. - **Change history**: each page links to its own history. - **`changes.json`**: for your monitoring. - **Send feedback** at the top of any page if a change surprised you. ## Related - [Migrating versions](https://docs.wandura.ai/developers/guides/migrating-versions) - [Canonical API behaviour · Versioning](https://docs.wandura.ai/developers/reference/behaviour#versioning) --- # Security > **TL;DR** — Your API keys live on your servers only. The viewer's device is untrusted: it only ever holds a ticket for one episode on that device, for 30 minutes. Revoke a key the moment you think it leaked, then tell Wandura. Never put keys, tickets or signed links in apps, front-end code, logs, analytics, crash reports or URLs. `viewer_ref` is an opaque, hashed id, kept by Wandura for 90 days. ## Trust boundary ```mermaid flowchart LR D["Viewer device
untrusted
Player SDK, one ticket"] -->|"your session + device values"| B["Your backend
trusted
API keys, paywall, per-viewer limits"] B -->|"Bearer API key, TLS 1.2+"| W["Wandura Delivery API
checks key, licence
signs the ticket"] W -->|"ticket for one episode, one device"| B B -->|"ticket"| D D -->|"ticket"| S["Wandura streaming
encrypted stream + keys"] ``` | Zone | Holds | Must never hold | |---|---|---| | Viewer device | One ticket per episode, in memory; the Player SDK licence file | API keys | | Your backend | API keys, your paywall, your viewers | — | | Wandura | Your licences, the films, the ticket ledger | Your viewers' identities | **Your ticket endpoint is the gate.** Wandura checks your licence, not your viewers. Device values come from a client you do not control. So your endpoint must: - require a signed-in viewer session (or your own device attestation) before it asks Wandura for a ticket; - apply your paywall before every ticket request; - limit tickets per viewer and per device (for example 10 per minute) and alert on viewers who open many films in a short time; - treat `union_info` and `drm_kek` as untrusted input: pass them through, never use them for anything else. Wandura's rate limit is per **organisation**: one abusive client of your app can use up the allowance of all your viewers. See [Rate limits](https://docs.wandura.ai/developers/concepts/rate-limits). ## Keys ### Scopes and least privilege One key per system and per environment, with only the scopes that system needs. The scope of each endpoint is on [Authentication](https://docs.wandura.ai/developers/authentication#scopes). A catalog sync job never needs `playback`; a marketing job needs only `creatives:export`. ### Production and testing There is no separate staging host: every key calls `https://www.wandura.ai`. What keeps test traffic apart is the **organisation**. Each partner gets a **test organisation** next to its real one. Its keys call the same production URL exactly like real keys, against sample films only, and its plays are never counted as views, usage or revenue. It also accepts the `Wandura-Simulate` header to reproduce errors on demand; production keys ignore that header completely. See [Testing](https://docs.wandura.ai/developers/guides/testing). Never use a production key in a test environment, or the other way round. ### Storage - Keep keys in a secrets manager, exposed to the one service that needs them as `WANDURA_API_KEY`. - Never commit a key. Add the pattern `wnd_live_[A-Za-z0-9_-]{32}` to your secret scanner and to pre-commit hooks. - Search every app build for `wnd_live_` before release: there must be no match. ### Key lifecycle | Action | Who | What happens | |---|---|---| | Create | Admin or Developer, on **Developers** | The full key is shown once. A new key is pinned to the **latest** dated API version. | | Create a playback key | Wandura, when you ask in your team's Discord channel | **Developers** no longer creates playback keys. Wandura issues the key and gives it to you once. It then appears in your list like any other key, pinned to the **latest** dated version. | | Rotate | Admin or Developer, playback keys included | Replaces the secret, keeps label, scopes and **version pin**. The old secret is refused within about **1 second** on every Wandura server (always within 30 seconds) — there is no overlap. | | Revoke | Admin or Developer, playback keys included | Final. New requests with the key are refused within about **1 second** (always within 30 seconds). | | Already-issued tickets | — | Keep playing until they expire (≤ 30 minutes). They cannot be recalled. | **Rotate without downtime:** create a second key with the same scopes (for a playback key, ask Wandura to issue it first), deploy it, check traffic has moved (**Last used** on the old key stops changing), then revoke the old one. A new key is pinned to the latest dated version: if your key is pinned to an older one, send `Wandura-Version: ` with the new key, or read `api.pinned_version` from `GET /config` with both keys before you switch. See [Migrating versions](https://docs.wandura.ai/developers/guides/migrating-versions). Wandura monitors new and rotated playback keys and organisations that reach their playback limit. You still own your keys: watch **Last used** and **API usage**, and tell Wandura at once if you suspect a leak. Every key creation, rotation and revocation is recorded in Wandura's audit log with your organisation, the member who did it and the key prefix. ## If a key leaks 1. **Revoke it** on **Developers** (any Admin or Developer). New requests stop within about a second. For a playback key you can **Rotate** it instead: the old secret stops just as fast and you get a new one at once, so your apps play again as soon as you deploy it. 2. **Deploy a replacement** with the same scopes. Mind the version pin (above). If you revoked a playback key, ask Wandura for a new one in your team's Discord channel: send the revoked key's prefix and the label you want. Until it is deployed, your apps cannot start new plays. 3. **Tell Wandura** in your team's Wandura Discord channel: the key prefix, when and where it was exposed. Wandura can list the tickets issued with it (kept 90 days) and, if tickets already issued must stop before they expire, suspend the affected films for your organisation. 4. **Check** **Developers → API usage** for calls you did not make. 5. **Close the leak path**: repository, app binary, logs, crash reports, CI output. Add the secret-scanner pattern. Calling `http://` instead of `https://` sends the key unencrypted before the redirect: treat that key as leaked. ## Tickets and signed links | Value | Rule | |---|---| | `play_auth_token` | A bearer secret for one episode on one device, valid ≤ 30 minutes. Keep it in memory for the current play. Never write it to disk, logs, analytics or crash reports. | | `manifest_url` | A bearer link: anyone holding it can download the stream until `expires_at` (≤ 15 minutes). Same rules as the token. | | Open video links | Anyone holding one can play or download the file until it expires (1 hour). Do not publish them, do not store them in the app. | | Subtitle URLs | Public and long-lived. Fine to cache; do not publish lists of them. | A leaked token or link expires on its own; stop the path that leaked it. ## Viewer and device data - **`viewer_ref`** is optional, opaque, at most 256 characters. Wandura stores it with each ticket for **90 days**, for support lookups, then keeps only monthly counts. Never put an email address, phone number or name in it. Use a keyed hash: `HMAC(secret, user_id)` plus a hash of your install id, so it means nothing outside your systems and stays stable per viewer and device. The [examples](https://docs.wandura.ai/developers/guides/playback-flow#code) do exactly this. - **`union_info`** is a persistent device identifier generated by the Player SDK: personal data on your side. Wandura uses the device values only to bind the ticket and does not store them. Do not log them raw; hash them if you need them for debugging. ## Never put secrets here | Value | App / front-end JS | Server logs, APM, proxies | Analytics | Crash reports | URLs | Support chats | |---|---|---|---|---|---|---| | API key | **never** | **never** (redact `Authorization`) | **never** | **never** | **never** | prefix only | | `play_auth_token`, `manifest_url` | memory only, current play | **never** | **never** | **never** | **never** | **never** | | `union_info`, `drm_kek` | generated there | hashed only | **never** | avoid | **never** | if asked | | `viewer_ref` | — | yes | pseudonymous only | yes | avoid | yes | The safe-logging helper in the examples drops these fields for you: [Observability](https://docs.wandura.ai/developers/production/observability#never-log). ## Transport - Always `https://www.wandura.ai`. TLS 1.2 or 1.3 only. - Not `wandura.ai` without `www`: it redirects, and some clients drop the body of a `POST` on a redirect. - The API does not use cookies for authentication and sends no CORS headers: browser calls fail by design. - Never put a key in a query string. The API only reads the `Authorization` header. ## Related - [Authentication](https://docs.wandura.ai/developers/authentication): sending the key, scopes. - [Go-live checklist](https://docs.wandura.ai/developers/production/go-live): the security items to tick before release. - [Canonical API behaviour](https://docs.wandura.ai/developers/reference/behaviour#freshness): every timing on one page. --- # Playback and tickets > **This path is frozen.** It keeps working and apps already on it need change nothing, but Wandura is no longer adding to it. New integrations should use [your own video space](https://docs.wandura.ai/developers/concepts/own-space), where your app reads straight from the video platform in your organisation's space. > **TL;DR** — To play an episode, your backend asks `POST /playback` for a **ticket**: a token for one episode on one device, valid 30 minutes. Send the two device values from the Player SDK, your own stable `viewer_ref`, and `"intent": "play"` when a viewer starts an episode. One call can return up to 3 tickets (the episode and the next two). Reusing a ticket for the same viewer, device and episode is fine until 5 minutes before it expires. ## When to request a ticket - **When a viewer starts an episode**: always a request with `"intent": "play"` for it. That request is what counts the view. - **Ahead of time** for the next one or two episodes, with `"intent": "prefetch"`, in the same request (`next` or `episodes`). Prefetches are not views. - **Once more** when the Player SDK reports an error, an expired ticket included. Never request tickets for a whole film, and never for an episode your paywall has not unlocked: Wandura checks your **licence**, not your viewers. The lifetime, reuse and batch rules are in one place: [Canonical API behaviour · Playback tickets](https://docs.wandura.ai/developers/reference/behaviour#tickets). ## Identify the episode | Option | Fields | Example | |---|---|---| | By episode ID | `episode_id` | `"episode_id": "b2a4d6e8-1c3f-4a5b-8d7e-9f0a1b2c3d4e"` | | By film and number | `film_ref` (film ID or slug) and `episode_no` (a JSON number from 1) | `"film_ref": "the-heiress-returns", "episode_no": 3` | If you send both, `episode_id` wins. Use the same form each time for the same episode: ticket reuse matches the episode as you sent it. ## Send the device values Licensed episodes are encrypted, and only the Player SDK can decrypt them. Before each request, your app reads two values from the SDK and sends them to your backend: | Field | What it is | |---|---| | `union_info` | The device ID generated by the Player SDK. | | `drm_kek` | The device public key generated by the Player SDK. Its private key never leaves the device. | - Send both or neither. Only one: `400` `invalid_request`. - Send the real SDK output. A value is rejected with `400` `invalid_device_info` when, after trimming, it is shorter than 8 characters or is `(null)`, `null`, `nil`, `undefined`, `nan`, `` or `none` (any case). `fields` names it. - Neither, for an encrypted episode: `409` `sdk_required`. How to read them in the app: [Player SDK](https://docs.wandura.ai/developers/player-sdk). ## What the ticket contains | Field | Description | |---|---| | `vid` | The video ID to load in the Player SDK. | | `play_auth_token` | The token for the Player SDK. A secret: see [Security](https://docs.wandura.ai/developers/concepts/security#tickets-and-links). | | `expires_at` | When it expires (ISO 8601, UTC). | | `protection` | `private-encrypted` for licensed episodes. | | `subtitles` | WebVTT files, one per language; can be empty. See [Subtitles](https://docs.wandura.ai/developers/guides/subtitles). | **Check `protection`** on every ticket. Sell paid episodes only when it is `private-encrypted`. Any other value: do not play it, and tell Wandura. A batch answers `{ "items": [...] }` in request order, each item with its own `status`. Every field: [Request playback](https://docs.wandura.ai/developers/reference/playback). ## `intent` | Value | Meaning | Counted as a view | |---|---|---| | `play` | The viewer just started the episode. | Yes | | `prefetch` | Your app loads it ahead of time. | No | | missing or anything else | Recorded as unknown, never rejected. | Yes | Near your rate limit, `prefetch` tickets are refused first (`429` with `"reason": "prefetch_shed"`) so that `play` tickets keep flowing. A refused prefetch is not an error for the viewer: request the episode again with `"intent": "play"` when the viewer gets there. See [Rate limits](https://docs.wandura.ai/developers/concepts/rate-limits#graceful-overload). ## `viewer_ref` An optional opaque string of yours, at most 256 characters, stored with the ticket for support lookups. Make it **stable per viewer and device** and free of personal data, for example an HMAC of your user ID plus a hash of your install ID. With it, Wandura can return the same ticket to a repeat request instead of issuing (and counting) a new one. Privacy and retention: [Security](https://docs.wandura.ai/developers/concepts/security#viewer-data). ## Expiry and recovery A ticket lives 30 minutes (`expires_at`). When the Player SDK reports an error during playback, an expired ticket included: 1. Request **one** fresh ticket and reload the player at the current position. 2. If that fails, map its `error_code` to a viewer message ([Errors](https://docs.wandura.ai/developers/concepts/errors#viewer-messages)). Do not branch on the Player SDK's own error codes (they change between versions) and never retry in a loop. When the app comes back from the background with less than a minute left, replace the ticket before resuming. ## Related - [Playback flow and paywall](https://docs.wandura.ai/developers/guides/playback-flow): the backend endpoint, with code. - [Smooth playback under load](https://docs.wandura.ai/developers/guides/smooth-playback) - [Request playback](https://docs.wandura.ai/developers/reference/playback) --- # Open video > **This path is frozen.** It keeps working and apps already on it need change nothing, but Wandura is no longer adding to it. New integrations should use [your own video space](https://docs.wandura.ai/developers/concepts/own-space), where your app reads straight from the video platform in your organisation's space. > **TL;DR** — For videos with no rights to protect, such as short fitness clips, Wandura offers a lighter path: your server lists videos with an app's key, and your app plays plain MP4 links with any standard player. No tickets, no Player SDK licence, no encryption, and no app code to identify the app. Links live **1 hour**; refresh your list every **45 minutes**. > **Available once your organisation's space is set up.** Larger fitness partners can get their own space instead, with HLS for clips of 30 seconds or more: [Your own video space](https://docs.wandura.ai/developers/concepts/own-space). > **Warning:** Do not use this path for drama films or anything with rights to protect. Anyone holding an open video link can play or download it until it expires. ## When to use it | Open video | [Your own video space](https://docs.wandura.ai/developers/concepts/own-space) | |---|---| | Workout, how-to or demo clips with no rights to protect | Drama films and series | | Content you are happy to see shared | Anything sold, licensed per film or behind a paywall | How apps play films today: [Architecture](https://docs.wandura.ai/developers/architecture#compare-the-two-models). ## How it works ```mermaid sequenceDiagram participant App as Your app participant Srv as Your server participant W as Wandura API participant CDN as Video CDN Srv->>W: GET /api/delivery/v1/videos (app key, videos:read) W-->>Srv: a page of videos with signed MP4 links Srv-->>App: links from your server's cache App->>CDN: play the MP4 link directly CDN-->>App: video ``` 1. **Register each app and create its key.** On partner.wandura.ai → **Developers** → **Apps**, add each app (name, iOS bundle ID, Android package name), then create a key with **Stream open video (fitness…)** bound to that app. One key per app: the app's identity is inside the signature of every link, and data usage is attributed by it. 2. **List** with `GET /api/delivery/v1/videos`, walking every page, on your server. 3. **Play** each link exactly as received, with AVPlayer, ExoPlayer or an HTML `