Tools
Motion Control
Steer the camera and the subject frame by frame.
animate a still image by following the camera movement and subject motion of a reference video. Use when the user wants to copy a camera move, transfer motion from a reference clip, or control exactly how the camera and subject move.
Overview
| Item | Value |
|---|---|
| Command | tufty motion-control |
| Type | Video |
| Required inputs | --still still image, exactly 1 |
| Optional inputs | --motion-video reference video for camera and subject motion |
| Output | Video: 5 or 10 seconds |
Parameters
| Flag | Description | Choices | Default |
|---|---|---|---|
--still <file|url...> | Still images for the video: local path, data: URL or http(s) URL | exactly 1 | — |
--duration <seconds> | Video length in seconds | 5, 10 | 5 |
--ratio <id> | Aspect ratio | 9:16, 1:1, 16:9 | 9:16 |
--resolution <id> | Output resolution; see pricing below | 720P | 720P |
--motion-video <file|url> | Reference video whose camera and subject motion to follow; uploaded as-is, no cutout | local path or http(s) URL | — |
--notes <text> | Extra instructions for this run, free text up to 2000 characters | — | — |
--no-cutout | Skip the automatic cutout of input images (saves 1 credit per image) | Switch | cutout on |
--dry-run | Validate and print the payload and credit estimate; no upload, no charge | Switch | — |
--no-wait | Return the runId right after submitting | Switch | wait |
--timeout <seconds> | Maximum seconds to wait for the run | positive number | 900 |
--save <dir> | Download the outputs into this directory | — | — |
--format <mode> | Stdout format: full envelope, or one URL per line | json, url | json |
Pricing
| Resolution | Credits per second | 5 s | 10 s |
|---|---|---|---|
720P | 19.05 | 95 | 191 |
Total = round(price per second × --duration), plus 1 credit per still for the automatic cutout.
Prices as of September 15, 2026; they may change. tufty tools describe motion-control always shows the current ones, and --dry-run prints the exact estimate. See Credits.
Examples
Follow a dolly-in reference clip, 5 seconds, vertical
tufty motion-control --still ./model.jpg --motion-video ./dolly-in.mp4 --duration 5 --ratio 9:16Reference video from a URL, 10 seconds, saved locally
tufty motion-control --still ./corgi.jpg --motion-video https://example.com/walk-cycle.mp4 --duration 10 --save ./outOutput example
{
"ok": true,
"result": {
"tool": "motion-control",
"runId": "3f6c2a1e-8b4d-4e7a-9c55-0d2b7e1f4a90",
"status": "completed",
"outputs": [
{
"type": "video",
"url": "https://static.tufty.ai/.../result.mp4"
}
]
}
}With --save <dir> each output also has path; with --no-wait, status is running and outputs is empty. See Output modes.
Tips
- The reference video is uploaded as-is (no cutout). Keep it short and close to the chosen duration.
- Pick a still whose subject and framing resemble the reference clip.
