You have a game with 200 NPCs and each one needs a unique idle animation. You have an ad campaign where a parrot mascot performs the same dance across 40 localized spots, and every one needs to loop cleanly. You have a robotics lab where a humanoid needs to express "I'm listening" through body language alone, and you need a thousand variations to train on.

These are all the same problem. You need motion, lots of it, and you need it programmatically.

The Cartwheel API is how you get there.

What the API does

The API exposes Cartwheel's motion generation models as composable building blocks. You send text prompts and get back production-ready 3D animation — rigged, loopable, and exportable to Maya, Unreal, or Blender. A single call can produce hundreds of motion variations in one batch. Here's the core loop:

generate → poll → retrieve → loop → edit → retarget.

Each step is its own endpoint, and they chain together. You describe the motion you want in plain language, Cartwheel generates it, you loop it for seamless playback, edit it with direct character manipulation, and retarget it onto whatever embodiment you need — human, dinosaur, brand mascot.

Generate

One API call, multiple prompts, one batch.

payload = { "batchName": "orcish-warriors-sprint-set", "prompts": [ "An orc warrior running into battle", "An orcish warrior charging forward aggressively", "An orcish warrior galloping forward" ], "requestedModel": "swing", "loop": False, "swingProperties": {"cfgScale": 7.5, "duration": 5}, "exportSettings": { "characterID": "char-upload-Axel", "exportType": "fbx-blender", "frameRate": 24, "ikFeet": True, "moveInPlace": True } } # POST /motion/fromText response = client.create_motion_batch(payload) batch_id = response["batchID"]

Three prompts generate three distinct motions in parallel. You get back a batchID and an estimated wait time. The swing model handles text-to-motion generation; comic handles video-to-motion when you're working from reference footage instead of prompts.

Want 300 crowd animations instead of three? Same call, more prompts.

Poll and retrieve

Batch processing is asynchronous. Poll the batch status, then pull individual motions when they're ready.

# GET /batch/{batchID} batch = client.get_batch(batch_id) # batch["status"] -> "IN_PROGRESS" | "COMPLETED" # GET /motions/{batchID} motions = client.get_motions(batch_id) # Each motion includes a bvhURL for download

Every completed motion comes with a downloadable BVH or FBX file. You can set up email notifications through the subscribers field so your pipeline gets pinged when a batch finishes, or you can poll — the status lifecycle is:

QUEUED → IN_PROGRESS → COMPLETED.

Loop

Most generated motion has a beginning and an end. Games and real-time applications need seamless loops. The loop endpoint takes any generated motion and produces a version with clean transitions.

# POST /motion/loop result = client.loop_motion(motion_id) looped_motion_id = result["motionID"]

One call. The output is a new motion that tiles seamlessly — ready for game idle cycles, looping background characters, or any context where the animation needs to repeat without a visible seam.

Edit with Hermes

Hermes lets you edit generated motion by directly manipulating the character's body. Instead of reprompting or tweaking keyframes in a DCC tool, you position the character where you want it and Hermes fills in the motion around your edits. Think of it as inpainting, but for movement.

Retarget with Cartographer

This is where the API gets interesting for non-humanoid use cases. Cartographer maps human motion onto any character rig — the T-Rex in your game, the parrot in your ad, the robot in your lab. The motion transfers with its timing and intent preserved. A human wave becomes a dinosaur wave becomes a robot greeting.

For robotics, this is the bridge between the millions of hours of human motion data that already exist and the robot embodiments that need it. You don't need a motion capture pipeline for every new form factor. You need a retargeting pipeline that works across embodiments.

Mascot: character consistency at scale

Advertising and entertainment have a specific version of the motion problem: a single character needs to move consistently across dozens or hundreds of assets. Mascot gives you a character workflow where you define a character once and generate motion that stays on-model across every output.

The parrot holds a can, dances on a beach, waves at the camera — and it reads as the same character every time. For a brand running localized campaigns, this turns weeks of animation work into API calls.

Where this goes

The obvious use cases are entertainment and advertising. A game studio batch-generating movement libraries. An agency producing animated content across platforms. These are real, and they're live today.

The less obvious ones are more interesting. Robotics companies need large-scale motion datasets for non-verbal behavior — the head tilts, the postural shifts, the ambient body language that makes a robot feel present instead of mechanical. World model researchers need diverse, physically grounded motion data for training. Simulation environments need believable character behavior that doesn't come from hand-authored animation trees.

All of these come down to the same need: lots of good motion, generated programmatically, retargetable to any body.

The API is live. and start building.