Skip to main content
POST
Animate a character with a reference video
Animates the character in character_image_url with the motion from motion_video_url. Runs through Generate with live pricing; check a model’s inputs with List models (?category=motion-control) and its price with Quote a generation. Models: kling-mc-3.0-pro (default), kling-mc-3.0-std, kling-mc-2.6-pro, wan-2.2-animate, dreamactor-v2. Poll Poll video status with generation.id.

Authorizations

Authorization
string
header
required

An Unsora API key (uns_…). A Clerk session token also works.

Headers

Idempotency-Key
string

API key requests only. Retrying with the same key within 24 hours replays the first response (with the Idempotent-Replayed: true header) instead of charging again. The body isn't compared; reusing the key on a different endpoint returns 409 IDEMPOTENCY_CONFLICT. Keys over 128 characters are ignored.

Maximum string length: 128

Body

application/json
model
enum<string>
default:kling-mc-3.0-pro
Available options:
kling-mc-3.0-pro,
kling-mc-3.0-std,
kling-mc-2.6-pro,
wan-2.2-animate,
dreamactor-v2
character_image_url
string<uri>

Image of the character. Aliases: characterImageUrl, image.

motion_video_url
string<uri>

Video whose motion the character copies. Aliases: motionVideoUrl, video.

prompt
string

Optional guidance, for models that take one.

keep_sound
boolean

Keep the reference video's audio, for models that offer it. Aliases: keepSound, keep_original_sound.

character_orientation
string

Which way the character faces, for models that offer it; values per model in GET /catalog. Alias: characterOrientation.

Response

Generation queued

success
boolean
required
generation
object
required
model
string
creditsDeducted
integer
creditsRemaining
integer