> ## Documentation Index
> Fetch the complete documentation index at: https://docs.summerengine.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Hunyuan Motion

> Hunyuan Motion on the Summer API: $0.08 per animation, FBX, GLB saved to your Summer library. Model id motion/hunyuan-motion.

Custom skeletal animation for a rigged character from a text description.

| | |
| - | - |
| Model id | `motion/hunyuan-motion` |
| Price | \$0.08 per animation |
| Does | [Text to motion](https://docs.summerengine.com/api/models.md#text-to-motion) |
| Output | FBX, GLB |
| Made by | Tencent |
| Try it | [Examples and playground on summerengine.com](https://www.summerengine.com/models/hunyuan-motion) |
| Commercial use | Yes |

## Best for

* One-off moves such as a victory dance, a stumble, or a specific attack.
* Idle variations that give a character personality.
* Cutscene performances described in plain language.

## Price

**\$0.08 per animation**. Exact list price: `0.08 USD`.

No markup: this is the provider's list price, checked 2026-09-24. A failed job costs nothing. Get the exact price of one request, free and without a key, from [`POST /v1/estimate`](https://docs.summerengine.com/api/jobs#know-the-price-first).

## Example call

Sign in once with `summer login`; over HTTP, send `Authorization: Bearer $SUMMER_TOKEN` after `export SUMMER_TOKEN=$(summer token)` ([sign-in](https://docs.summerengine.com/api/sign-in.md)). This job takes minutes. The CLI follows it and saves the file. Over HTTP the call answers `running` with a job id: check `GET /v1/jobs/{id}` until `state` is `done` ([jobs](https://docs.summerengine.com/api/jobs.md)); the [quickstart](https://docs.summerengine.com/api/quickstart.md) has the full loop.

```bash CLI theme={null}
npx -y summer-engine@latest api run motion/hunyuan-motion \
  --input '{"rigAssetId":"<assetId of your rigged model>","prompt":"jumps over a fence and lands in a crouch","durationSeconds":4}' \
  --download .
```

```bash curl theme={null}
curl https://www.summerengine.com/v1/jobs \
  -H "Authorization: Bearer $SUMMER_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Prefer: wait=60" \
  -d '{"model":"motion/hunyuan-motion","input":{"rigAssetId":"<assetId of your rigged model>","prompt":"jumps over a fence and lands in a crouch","durationSeconds":4}}'
```

```ts TypeScript theme={null}
const res = await fetch("https://www.summerengine.com/v1/jobs", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SUMMER_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
    Prefer: "wait=60",
  },
  body: JSON.stringify({
    "model": "motion/hunyuan-motion",
    "input": {
      "rigAssetId": "<assetId of your rigged model>",
      "prompt": "jumps over a fence and lands in a crouch",
      "durationSeconds": 4
    }
  }),
});
const { job } = await res.json();
console.log(job.state, job.id);
```

```python Python theme={null}
import os, uuid, requests

res = requests.post(
    "https://www.summerengine.com/v1/jobs",
    headers={
        "Authorization": f"Bearer {os.environ['SUMMER_TOKEN']}",
        "Idempotency-Key": str(uuid.uuid4()),
        "Prefer": "wait=60",
    },
    json={"model": "motion/hunyuan-motion", "input": {"rigAssetId": "<assetId of your rigged model>", "prompt": "jumps over a fence and lands in a crouch", "durationSeconds": 4}},
)
job = res.json()["job"]
print(job["state"], job["id"])
```

```js MCP theme={null}
// Summer's MCP server: npx -y summer-engine@latest setup <agent> --yes
summer_api_run({
  model: "motion/hunyuan-motion",
  input: {
    rigAssetId: "<assetId of your rigged model>",
    prompt: "jumps over a fence and lands in a crouch",
    durationSeconds: 4
  },
  out: "assets",
})
// It answers `next` while the job runs: follow it to the end.
summer_api_job({ jobId: "<jobId>", wait: true, out: "assets" })
```

The finished job has `state` `"done"` and `result.assets`: one entry per file, each with `assetId`, `fileUrl` (a Summer URL) and `thumbnailUrl`. Download the file into your project, or import it in Summer Engine by its asset id.

## Input

Send these fields in `input`. The full JSON Schema is `inputSchema` in [`GET /v1/models/motion/hunyuan-motion`](https://docs.summerengine.com/api/reference/get-models-model).

| Field | Type | About |
| - | - | - |
| `rigAssetId` (required) | string | A rigged 3D model of the person (a 3D job with `rig: true`). up to 128 characters |
| `prompt` | string | The motion in words, e.g. "jumps over a fence". up to 500 characters |
| `durationSeconds` | number | Seconds, 1 to 10 (default 4). 1 to 10 |

## Related models

> **[Meshy animation library](https://docs.summerengine.com/api/models/motion/library.md)**
>
> `motion/library`: \$0.12 per animation (default)

> **[Hunyuan Motion Fast](https://docs.summerengine.com/api/models/motion/hunyuan-motion-fast.md)**
>
> `motion/hunyuan-motion-fast`: \$0.06 per animation

## For agents

This page as Markdown: [https://docs.summerengine.com/api/models/motion/hunyuan-motion.md](https://docs.summerengine.com/api/models/motion/hunyuan-motion.md). The live record with the JSON Schema: `GET https://www.summerengine.com/v1/models/motion/hunyuan-motion`, public, no sign-in.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.