Skip to main content
Glama

Transfer motion onto sprite

transferMotion

Transfer motion from a reference video or a named animation preset onto a static sprite image, producing an animated spritesheet that mimics the reference movement. Provide the sprite as image (URL or base64) plus either a video URL or a preset_id together with perspective and direction (all three from listAnimationPresets; if both video and preset_id are sent the video wins). The job result is the same sprite result as animateSprite: spritesheet_url, video_url, grid fields, optional GIF / frame / with-background URLs, and audio_url when the model is hydra. duration defaults to 1.5s where the chosen model offers it, otherwise to that model's shortest (hydra, the default, starts at 3s) - and a longer reference clip or preset is compressed to fit, so pass the preset's own duration (returned by listAnimationPresets) to keep its timing. It returns HTTP 400 if neither a video nor a complete preset_id/perspective/direction triple is supplied, if the named preset, perspective, or direction cannot be resolved, or if the model/duration combination is invalid. Credits are held for the duration you requested when the job is accepted; the final charge is rate × seconds of video generated (which follows the reference clip or preset; legacy models keep their minimum charge), never more than for the duration you requested, and the difference (or everything, if the job fails or is cancelled) is refunded. The returned sheet is then trimmed to its best loop and can run slightly shorter than the video; that trim is not deducted. Use this when you have an existing motion clip or preset to copy; prefer animateSprite to generate animation purely from a text prompt. Omit model to run on hydra (the default - most capable, and returns audio); pick forge for a cheaper run on simple motion, presets and matching poses; the model field lists rates. Pass an optional request_id to tag the result so you can retrieve it later via listGenerations (type spritesheet). Async generation job: returns {id, status} - poll getApiJob (job and credit contract: see the server instructions).

Credits: credits/s × seconds, per model: Hydra 3/s, Forge 2/s, Forge Pixel 2/s, Tango 4/s (min charge 4 credits) [LEGACY]; [LEGACY] models are scheduled for removal - do not use them for new work; see this endpoint's full pricing table in the API docs.

Input Schema

NameRequiredDescriptionDefault
requestBodyYesPayload for transferring motion from a video onto a static sprite image, producing an animated spritesheet.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s · Sharper detail, simpler motion. Best for simple body shapes and short actions; may need a few tries\n- \"forge-pixel\" (Forge Pixel): 2 credits/s · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new.\nforge is tuned for the motion presets (preset_id) and often fails to follow your own video - use hydra for custom footage. forge-pixel expects real pixel art - a perfect pixel grid at its natural resolution. Default: \"hydra\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s · Most reliable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s · Best for simple body shapes and short actions; may need a few tries\n- \"forge-pixel\" (Forge Pixel): 2 credits/s · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new.\nforge is tuned for the motion presets (preset_id) and often fails to follow your own video - use hydra for custom footage. forge-pixel expects real pixel art - a perfect pixel grid at its natural resolution. Default: \"hydra\"."
  2. Changed1 schema field changed
    • addedInput schema / properties / requestBody / properties / use_pixel_grid
      Added value: +{
      +  "description": "Use the animation's pixel grid if one is detected. Defaults to true. true: when Ludo detects a pixel grid with confidence, the sheet is packed on it (logical pixels, scaled up by whole blocks); when none is detected, this has no effect. false: always pack as ordinary art, for when the detected grid is wrong for your asset (for example a smooth sprite coming back as coarse blocks). Ignored for forge-pixel animations, which are always packed on their grid.",
      +  "type": "boolean"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, min charge 9 credits · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Sharper detail, simpler motion. Best for simple body shapes and short actions; may need a few tries\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new.\nforge is tuned for the motion presets (preset_id) and often fails to follow your own video - use hydra for custom footage. forge-pixel expects real pixel art - a perfect pixel grid at its natural resolution. Default: \"hydra\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s · Sharper detail, simpler motion. Best for simple body shapes and short actions; may need a few tries\n- \"forge-pixel\" (Forge Pixel): 2 credits/s · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new.\nforge is tuned for the motion presets (preset_id) and often fails to follow your own video - use hydra for custom footage. forge-pixel expects real pixel art - a perfect pixel grid at its natural resolution. Default: \"hydra\"."
  4. Changed3 schema fields changed
    • removedInput schema / properties / requestBody / properties / margin_ratio
      Removed value: -{
      -  "deprecated": true,
      -  "description": "Deprecated: prefer margin_ratio_horizontal / margin_ratio_vertical. Amount of padding around the sprite as a ratio (0.0 to 1.0). Sets both axes to this value. A per-axis value, when also given, overrides this for that axis. Defaults to 0.15 when no margin value is given at all.",
      -  "format": "float",
      -  "type": "number"
      -}
    • changedInput schema / properties / requestBody / properties / margin_ratio_horizontal / description
      Previous value: -"Horizontal padding around the sprite as a ratio (0.0 to 1.0). Every bit of margin is resolution taken from the sprite, so keep it as tight as the motion allows - about 0.15 - and go higher only for motion that extends sideways (sword slashes, punches) or if the sprite gets cut off. Overrides the legacy margin_ratio on this axis."New value: +"Horizontal padding around the sprite as a ratio (0.0 to 1.0). Every bit of margin is resolution taken from the sprite, so keep it as tight as the motion allows - about 0.15 - and go higher only for motion that extends sideways (sword slashes, punches) or if the sprite gets cut off."
    • changedInput schema / properties / requestBody / properties / margin_ratio_vertical / description
      Previous value: -"Vertical padding around the sprite as a ratio (0.0 to 1.0). Every bit of margin is resolution taken from the sprite, so keep it as tight as the motion allows - about 0.15 - and go higher only for motion that extends up or down (jumps) or if the sprite gets cut off. Overrides the legacy margin_ratio on this axis."New value: +"Vertical padding around the sprite as a ratio (0.0 to 1.0). Every bit of margin is resolution taken from the sprite, so keep it as tight as the motion allows - about 0.15 - and go higher only for motion that extends up or down (jumps) or if the sprite gets cut off."
  5. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is maximum resolution. Exporting larger than the input image adds no detail: do not pick a size above the input's own resolution, and 0 gains nothing on inputs under 512 px. True Size is not available here: the image is not the first frame of the result, so there is nothing to align to. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0. Default: 0."New value: +"Size of the sprite in pixels, not of the frame: it sets how big the character is drawn in the exported sheet, and each frame also holds the space around the sprite, so frames come out larger than this value. 0 is maximum resolution. Exporting larger than the input image adds no detail: do not pick a size above the input's own resolution, and 0 gains nothing on inputs under 512 px. True Size is not available here: the image is not the first frame of the result, so there is nothing to align to. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0. Default: 0."
  6. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / frames / description
      Previous value: -"Maximum number of frames in the output spritesheet. Allow about one second of duration per 12 frames - above that the model may not be able to produce them all (36 frames needs a duration of at least 3). The result can have fewer frames when the duration is short or bad frames were removed. Accepted values: 4, 9, 16, 25, 36, 49, 64. Default: 36."New value: +"Maximum number of frames in the output spritesheet. Allow about one second of duration per 16 frames - above that the model may not be able to produce them all (64 frames needs a duration of at least 4). The result can have fewer frames when the duration is short or bad frames were removed. Accepted values: 4, 9, 16, 25, 36, 49, 64. Default: 36."
  7. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / frames / description
      Previous value: -"Maximum number of frames in the output spritesheet. Allow about one second of duration per 12 frames - above that the model may not be able to produce them all (36 frames needs a duration of at least 3). 49 and 64 are more prone to looping issues and motion blur. The result can have fewer frames when the duration is short or bad frames were removed. Accepted values: 4, 9, 16, 25, 36, 49, 64. Default: 36."New value: +"Maximum number of frames in the output spritesheet. Allow about one second of duration per 12 frames - above that the model may not be able to produce them all (36 frames needs a duration of at least 3). The result can have fewer frames when the duration is short or bad frames were removed. Accepted values: 4, 9, 16, 25, 36, 49, 64. Default: 36."
  8. Changed7 schema fields changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0. Default: 0."New value: +"Size of each frame in pixels (width and height). 0 is maximum resolution. Exporting larger than the input image adds no detail: do not pick a size above the input's own resolution, and 0 gains nothing on inputs under 512 px. True Size is not available here: the image is not the first frame of the result, so there is nothing to align to. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0. Default: 0."
    • changedInput schema / properties / requestBody / properties / frames / description
      Previous value: -"Number of frames in the output spritesheet. Accepted values: 4, 9, 16, 25, 36, 49, 64. Default: 36."New value: +"Maximum number of frames in the output spritesheet. Allow about one second of duration per 12 frames - above that the model may not be able to produce them all (36 frames needs a duration of at least 3). 49 and 64 are more prone to looping issues and motion blur. The result can have fewer frames when the duration is short or bad frames were removed. Accepted values: 4, 9, 16, 25, 36, 49, 64. Default: 36."
    • changedInput schema / properties / requestBody / properties / margin_ratio_horizontal / description
      Previous value: -"Horizontal padding around the sprite as a ratio (0.0 to 1.0). Useful for animations that extend sideways (e.g., sword slashes, punches). Overrides the legacy margin_ratio on this axis."New value: +"Horizontal padding around the sprite as a ratio (0.0 to 1.0). Every bit of margin is resolution taken from the sprite, so keep it as tight as the motion allows - about 0.15 - and go higher only for motion that extends sideways (sword slashes, punches) or if the sprite gets cut off. Overrides the legacy margin_ratio on this axis."
    • changedInput schema / properties / requestBody / properties / margin_ratio_mode / description
      Previous value: -"Controls how margins are applied around the sprite. Defaults to \"manual\". Sending \"none\" explicitly together with a margin value fails with HTTP 400 (the value would be ignored). Default: \"manual\"."New value: +"How the sprite is framed for generation. Defaults to \"manual\" (0.15 on each axis when no margin value is given); transfer motion has no \"auto\". The model always generates on a canvas of the same size, so any margin is canvas the sprite does not fill: the more margin, the lower the resolution and detail of the sprite. Keep the margins tight - about 0.15 - and raise only the axis the motion needs. \"none\" animates the image exactly as framed, so it must already have suitable margins (not touching the edges, not mostly empty space); an off-center sprite can give unpredictable results. Sending \"none\" together with a margin value fails with HTTP 400 (the value would be ignored). Default: \"manual\"."
    • changedInput schema / properties / requestBody / properties / margin_ratio_vertical / description
      Previous value: -"Vertical padding around the sprite as a ratio (0.0 to 1.0). Useful for animations that extend up or down (e.g., jumps). Overrides the legacy margin_ratio on this axis."New value: +"Vertical padding around the sprite as a ratio (0.0 to 1.0). Every bit of margin is resolution taken from the sprite, so keep it as tight as the motion allows - about 0.15 - and go higher only for motion that extends up or down (jumps) or if the sprite gets cut off. Overrides the legacy margin_ratio on this axis."
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, min charge 9 credits · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Sharper detail, simpler motion. Best for simple body shapes and short actions; may need a few tries\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"hydra\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, min charge 9 credits · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Sharper detail, simpler motion. Best for simple body shapes and short actions; may need a few tries\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new.\nforge is tuned for the motion presets (preset_id) and often fails to follow your own video - use hydra for custom footage. forge-pixel expects real pixel art - a perfect pixel grid at its natural resolution. Default: \"hydra\"."
    • changedInput schema / properties / requestBody / properties / video / description
      Previous value: -"URL of the video to use as motion source - the `video_url` of a spritesheet from animateSprite, or your own clip. Videos up to 4 seconds work best. Either `video` or `preset_id` + `perspective` + `direction` must be provided; when both are sent the video is used."New value: +"URL of the video to use as motion source - the `video_url` of a spritesheet from animateSprite, or your own clip. Videos up to 4 seconds work best. Either `video` or `preset_id` + `perspective` + `direction` must be provided; when both are sent the video is used. A video more than twice as long as `duration` gets heavily compressed and the motion turns rushed - trim it to the part you want, or raise `duration`."
  9. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, shortest duration 3s, so 9 credits minimum · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Sharper detail, simpler motion. Best for simple body shapes and short actions; may need a few tries\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"hydra\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, min charge 9 credits · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Sharper detail, simpler motion. Best for simple body shapes and short actions; may need a few tries\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"hydra\"."
  10. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, shortest duration 3s, so 9 credits minimum · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Cost-effective for simple motion. Works best with Presets and matching poses\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"hydra\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, shortest duration 3s, so 9 credits minimum · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Sharper detail, simpler motion. Best for simple body shapes and short actions; may need a few tries\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"hydra\"."
  11. Changed2 schema fields changed
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, shortest duration 3s, so 9 credits minimum · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Cost-effective for simple motion. Works best with Presets and matching poses\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"forge\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, shortest duration 3s, so 9 credits minimum · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Cost-effective for simple motion. Works best with Presets and matching poses\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"hydra\"."
    • changedInput schema / properties / requestBody / properties / model / example
      Previous value: -"forge"New value: +"hydra"
  12. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, shortest duration 3s, so 9 credits minimum · Most capable model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Cost-effective for simple motion. Works best with Presets and matching poses\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"forge\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, shortest duration 3s, so 9 credits minimum · Most capable all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Cost-effective for simple motion. Works best with Presets and matching poses\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"forge\"."
  13. Changed11 schema fields changed
    • changedInput schema / properties / requestBody / properties / crop / description
      Previous value: -"Crop sprite frames to fit content. Results in smaller spritesheets but inconsistent frame sizes across different animations. Default: false."New value: +"Crop sprite frames to fit content. Results in smaller spritesheets but inconsistent frame sizes across different animations. Default: true."
    • changedInput schema / properties / requestBody / properties / crop / example
      Previous value: -falseNew value: +true
    • changedInput schema / properties / requestBody / properties / image / description
      Previous value: -"Payload for generating an animated spritesheet from a static image. Input images can either be provided in base64 or URL. If the image was generated using Ludo, ideally it should be generated using the \"sprite\", \"sprite-vfx\" or \"ui_asset\" type."New value: +"The static sprite to animate, as a URL or base64 image. Ideally an image generated with the \"sprite\", \"sprite-vfx\" or \"ui_asset\" image type."
    • changedInput schema / properties / requestBody / properties / image / example
      Previous value: -"data:image/png;base64,..."New value: +"<url> OR data:image/png;base64,..."
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"forge\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, shortest duration 3s, so 9 credits minimum · Most capable model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Cost-effective for simple motion. Works best with Presets and matching poses\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"forge\"."
    • changedInput schema / properties / requestBody / properties / perspective / description
      Previous value: -"Perspective ID to use with the animation preset. When using a preset, `perspective` is required."New value: +"Camera perspective of the preset clip, by id (the `perspectives` list of listAnimationPresets, the same set for every preset): high = tactical steep top-down, horizon = side view at eye level, isometric = diagonal top-down with depth, low = hero low angle, top = directly overhead. Required when using a preset. Unrelated to the `perspective` of createImage, which is a free-text art direction."
    • addedInput schema / properties / requestBody / properties / perspective / enum
      Added value: +[
      +  "high",
      +  "horizon",
      +  "isometric",
      +  "low",
      +  "top"
      +]
    • addedInput schema / properties / requestBody / properties / perspective / example
      Added value: +"high"
    • changedInput schema / properties / requestBody / properties / preset_id / description
      Previous value: -"ID of an animation preset to use instead of a video URL. Use the animation-presets endpoint to list available presets. When using a preset, `perspective` and `direction` are required."New value: +"ID of an animation preset to use instead of a video URL. Use listAnimationPresets to list available presets. When using a preset, `perspective` and `direction` are required."
    • changedInput schema / properties / requestBody / properties / request_id / description
      Previous value: -"Optional client-provided identifier, unique per request. Re-sending the same request_id returns the existing job instead of generating again. Also usable with the results endpoint."New value: +"Optional client-provided identifier, unique per request. Re-sending the same request_id returns the existing job instead of generating again. Also usable as the request_id filter of listGenerations."
    • changedInput schema / properties / requestBody / properties / video / description
      Previous value: -"URL of the video to use as motion source. You can use videos from the animateSprite endpoint or provide your own. Videos up to 4 seconds will produce better results. Either `video` or `preset_id` + `perspective` + `direction` must be provided."New value: +"URL of the video to use as motion source - the `video_url` of a spritesheet from animateSprite, or your own clip. Videos up to 4 seconds work best. Either `video` or `preset_id` + `perspective` + `direction` must be provided; when both are sent the video is used."
  14. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, min 4\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 Default: \"forge\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"forge\"."
  15. Changed6 schema fields changed
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4 Default: 1.5."New value: +"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- hydra: 3, 3.5, 4, 4.5, 5\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4 Default: 1.5."
    • changedInput schema / properties / requestBody / properties / frame_size / example
      Previous value: -32New value: +0
    • changedInput schema / properties / requestBody / properties / frames / example
      Previous value: -4New value: +36
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 Default: \"forge\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, min 4\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 Default: \"forge\"."
    • changedInput schema / properties / requestBody / properties / model / enum
      Previous value: -[
      -  "forge",
      -  "forge-pixel",
      -  "tango"
      -]New value: +[
      +  "hydra",
      +  "forge",
      +  "forge-pixel",
      +  "tango"
      +]
    • addedInput schema / properties / requestBody / properties / prompt
      Added value: +{
      +  "description": "Optional extra instructions for the motion transfer (e.g. \"keep the cape still\"), added to the model's own prompt.",
      +  "type": "string"
      +}
  16. Changed26 schema fields changed
    • removedInput schema / properties / requestBody / properties / crop / default
      Removed value: -false
    • changedInput schema / properties / requestBody / properties / crop / description
      Previous value: -"Crop sprite frames to fit content. Results in smaller spritesheets but inconsistent frame sizes across different animations."New value: +"Crop sprite frames to fit content. Results in smaller spritesheets but inconsistent frame sizes across different animations. Default: false."
    • removedInput schema / properties / requestBody / properties / duration / default
      Removed value: -1.5
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"New value: +"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4 Default: 1.5."
    • removedInput schema / properties / requestBody / properties / frame_size / default
      Removed value: -0
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0."New value: +"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0. Default: 0."
    • removedInput schema / properties / requestBody / properties / frames / default
      Removed value: -36
    • changedInput schema / properties / requestBody / properties / frames / description
      Previous value: -"Number of frames in the output spritesheet. Accepted values: 4, 9, 16, 25, 36, 49, 64."New value: +"Number of frames in the output spritesheet. Accepted values: 4, 9, 16, 25, 36, 49, 64. Default: 36."
    • removedInput schema / properties / requestBody / properties / gif / default
      Removed value: -false
    • changedInput schema / properties / requestBody / properties / gif / description
      Previous value: -"When true, generates an animated GIF from the spritesheet and returns it in gif_url. Disabled by default to reduce response time."New value: +"When true, generates an animated GIF from the spritesheet and returns it in gif_url. Disabled by default to reduce response time. Default: false."
    • removedInput schema / properties / requestBody / properties / individual_frames / default
      Removed value: -false
    • changedInput schema / properties / requestBody / properties / individual_frames / description
      Previous value: -"When true, extracts each frame from the spritesheet as an individual image and returns the URLs in individual_frame_urls."New value: +"When true, extracts each frame from the spritesheet as an individual image and returns the URLs in individual_frame_urls. Default: false."
    • removedInput schema / properties / requestBody / properties / loop / default
      Removed value: -true
    • changedInput schema / properties / requestBody / properties / loop / description
      Previous value: -"Trim the animation at the beginning or end to create a seamless loop."New value: +"Trim the animation at the beginning or end to create a seamless loop. Default: true."
    • removedInput schema / properties / requestBody / properties / margin_ratio / default
      Removed value: -0.15
    • addedInput schema / properties / requestBody / properties / margin_ratio / deprecated
      Added value: +true
    • changedInput schema / properties / requestBody / properties / margin_ratio / description
      Previous value: -"Deprecated - prefer margin_ratio_horizontal / margin_ratio_vertical. Amount of padding around the sprite as a ratio (0.0 to 1.0), applied to both axes (equivalent to setting both per-axis params to this value). Only used when margin_ratio_mode is \"manual\". Cannot be combined with the per-axis params: providing both fails with HTTP 400. Defaults to 0.15 when no margin param is provided."New value: +"Deprecated: prefer margin_ratio_horizontal / margin_ratio_vertical. Amount of padding around the sprite as a ratio (0.0 to 1.0). Sets both axes to this value. A per-axis value, when also given, overrides this for that axis. Defaults to 0.15 when no margin value is given at all."
    • removedInput schema / properties / requestBody / properties / margin_ratio / example
      Removed value: -0.15
    • changedInput schema / properties / requestBody / properties / margin_ratio_horizontal / description
      Previous value: -"Horizontal padding around the sprite as a ratio (0.0 to 1.0). Only used when margin_ratio_mode is \"manual\". Useful for animations that extend sideways (e.g., sword slashes, punches). Cannot be combined with the legacy margin_ratio param."New value: +"Horizontal padding around the sprite as a ratio (0.0 to 1.0). Useful for animations that extend sideways (e.g., sword slashes, punches). Overrides the legacy margin_ratio on this axis."
    • removedInput schema / properties / requestBody / properties / margin_ratio_mode / default
      Removed value: -"manual"
    • changedInput schema / properties / requestBody / properties / margin_ratio_mode / description
      Previous value: -"Controls how margins are applied around the sprite."New value: +"Controls how margins are applied around the sprite. Defaults to \"manual\". Sending \"none\" explicitly together with a margin value fails with HTTP 400 (the value would be ignored). Default: \"manual\"."
    • changedInput schema / properties / requestBody / properties / margin_ratio_vertical / description
      Previous value: -"Vertical padding around the sprite as a ratio (0.0 to 1.0). Only used when margin_ratio_mode is \"manual\". Useful for animations that extend up or down (e.g., jumps). Cannot be combined with the legacy margin_ratio param."New value: +"Vertical padding around the sprite as a ratio (0.0 to 1.0). Useful for animations that extend up or down (e.g., jumps). Overrides the legacy margin_ratio on this axis."
    • removedInput schema / properties / requestBody / properties / model / default
      Removed value: -"forge"
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4"New value: +"Model to use. Available models:\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 Default: \"forge\"."
    • removedInput schema / properties / requestBody / properties / spritesheet_with_background / default
      Removed value: -false
    • changedInput schema / properties / requestBody / properties / spritesheet_with_background / description
      Previous value: -"When true, also returns the spritesheet with background intact (before background removal). Useful for manually fixing background removal issues. The with-background spritesheet URL will be in spritesheet_with_background_url."New value: +"When true, also returns the spritesheet with background intact (before background removal). Useful for manually fixing background removal issues. The with-background spritesheet URL will be in spritesheet_with_background_url. Default: false."
  17. Changed5 schema fields changed
    • addedInput schema / properties / requestBody / properties / crop / default
      Added value: +false
    • addedInput schema / properties / requestBody / properties / crop / example
      Added value: +false
    • addedInput schema / properties / requestBody / properties / loop / default
      Added value: +true
    • addedInput schema / properties / requestBody / properties / loop / example
      Added value: +true
    • changedInput schema / properties / requestBody / properties / model / default
      Previous value: -"tango"New value: +"forge"
  18. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / margin_ratio / description
      Previous value: -"Deprecated — prefer margin_ratio_horizontal / margin_ratio_vertical. Amount of padding around the sprite as a ratio (0.0 to 1.0), applied to both axes (equivalent to setting both per-axis params to this value). Only used when margin_ratio_mode is \"manual\". Cannot be combined with the per-axis params: providing both fails with HTTP 400. Defaults to 0.15 when no margin param is provided."New value: +"Deprecated - prefer margin_ratio_horizontal / margin_ratio_vertical. Amount of padding around the sprite as a ratio (0.0 to 1.0), applied to both axes (equivalent to setting both per-axis params to this value). Only used when margin_ratio_mode is \"manual\". Cannot be combined with the per-axis params: providing both fails with HTTP 400. Defaults to 0.15 when no margin param is provided."
  19. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / request_id / description
      Previous value: -"Optional client-provided identifier for this request. Use this to retrieve results later via the results endpoint."New value: +"Optional client-provided identifier, unique per request. Re-sending the same request_id returns the existing job instead of generating again. Also usable with the results endpoint."
  20. Changed3 schema fields changed
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"New value: +"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4"New value: +"Model to use. Available models:\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4"
    • changedInput schema / properties / requestBody / properties / model / enum
      Previous value: -[
      -  "forge",
      -  "tango"
      -]New value: +[
      +  "forge",
      +  "forge-pixel",
      +  "tango"
      +]
  21. Changed7 schema fields changed
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"New value: +"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"
    • changedInput schema / properties / requestBody / properties / margin_ratio / description
      Previous value: -"Amount of padding around the sprite as a ratio (0.0 to 1.0). Only used when margin_ratio_mode is \"manual\"."New value: +"Deprecated — prefer margin_ratio_horizontal / margin_ratio_vertical. Amount of padding around the sprite as a ratio (0.0 to 1.0), applied to both axes (equivalent to setting both per-axis params to this value). Only used when margin_ratio_mode is \"manual\". Cannot be combined with the per-axis params: providing both fails with HTTP 400. Defaults to 0.15 when no margin param is provided."
    • addedInput schema / properties / requestBody / properties / margin_ratio_horizontal
      Added value: +{
      +  "description": "Horizontal padding around the sprite as a ratio (0.0 to 1.0). Only used when margin_ratio_mode is \"manual\". Useful for animations that extend sideways (e.g., sword slashes, punches). Cannot be combined with the legacy margin_ratio param.",
      +  "format": "float",
      +  "type": "number"
      +}
    • addedInput schema / properties / requestBody / properties / margin_ratio_vertical
      Added value: +{
      +  "description": "Vertical padding around the sprite as a ratio (0.0 to 1.0). Only used when margin_ratio_mode is \"manual\". Useful for animations that extend up or down (e.g., jumps). Cannot be combined with the legacy margin_ratio param.",
      +  "format": "float",
      +  "type": "number"
      +}
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"tango\" (Tango): 4 credits/s, min 4"New value: +"Model to use. Available models:\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4"
    • changedInput schema / properties / requestBody / properties / model / enum
      Previous value: -[
      -  "tango"
      -]New value: +[
      +  "forge",
      +  "tango"
      +]
    • changedInput schema / properties / requestBody / properties / model / example
      Previous value: -"tango"New value: +"forge"
  22. Changed3 schema fields changed
    • changedInput schema / properties / requestBody / properties / duration / default
      Previous value: -2New value: +1.5
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- tango: 1, 2, 3, 4"New value: +"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"
    • changedInput schema / properties / requestBody / properties / duration / example
      Previous value: -2New value: +1.5
  23. Changed5 schema fields changed
    • addedInput schema / properties / requestBody / properties / duration
      Added value: +{
      +  "default": 2,
      +  "description": "Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- tango: 1, 2, 3, 4",
      +  "example": 2,
      +  "format": "float",
      +  "type": "number"
      +}
    • changedInput schema / properties / requestBody / properties / model / default
      Previous value: -"transfer"New value: +"tango"
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"transfer\" (Transfer): 4 credits/s, min 4"New value: +"Model to use. Available models:\n- \"tango\" (Tango): 4 credits/s, min 4"
    • changedInput schema / properties / requestBody / properties / model / enum
      Previous value: -[
      -  "transfer"
      -]New value: +[
      +  "tango"
      +]
    • changedInput schema / properties / requestBody / properties / model / example
      Previous value: -"transfer"New value: +"tango"
  24. Changed1 schema field changed
    • addedInput schema / properties / requestBody / properties / model
      Added value: +{
      +  "default": "transfer",
      +  "description": "Model to use. Available models:\n- \"transfer\" (Transfer): 4 credits/s, min 4",
      +  "enum": [
      +    "transfer"
      +  ],
      +  "example": "transfer",
      +  "type": "string"
      +}
  25. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 128, 192, 256, 384, 0."New value: +"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0."
  26. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 128, 256, 384, 0."New value: +"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 128, 192, 256, 384, 0."
  27. Changed2 schema fields changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 64, 128, 256, 0."New value: +"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 128, 256, 384, 0."
    • changedInput schema / properties / requestBody / properties / frame_size / example
      Previous value: -64New value: +32
  28. Changed4 schema fields changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is for maximum resolution."New value: +"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 64, 128, 256, 0."
    • removedInput schema / properties / requestBody / properties / frame_size / enum
      Removed value: -[
      -  64,
      -  128,
      -  256,
      -  0
      -]
    • changedInput schema / properties / requestBody / properties / frames / description
      Previous value: -"Number of frames in the output spritesheet."New value: +"Number of frames in the output spritesheet. Accepted values: 4, 9, 16, 25, 36, 49, 64."
    • removedInput schema / properties / requestBody / properties / frames / enum
      Removed value: -[
      -  4,
      -  9,
      -  16,
      -  25,
      -  36,
      -  49,
      -  64
      -]
  29. Changed1 schema field changed
    • addedInput schema / properties / requestBody / properties / request_id
      Added value: +{
      +  "description": "Optional client-provided identifier for this request. Use this to retrieve results later via the results endpoint.",
      +  "type": "string"
      +}
  30. Changed1 schema field changed
    • removedInput schema / properties / requestBody / properties / pixel_art_filter
      Removed value: -{
      -  "description": "Apply a pixelation filter to make the output look like pixel art.",
      -  "enum": [
      -    "none",
      -    "small",
      -    "medium",
      -    "large"
      -  ],
      -  "example": "none",
      -  "type": "string"
      -}
  31. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / frame_size / default
      Previous value: -256New value: +0
  32. Changed1 schema field changed
    • addedInput schema / properties / requestBody / properties / spritesheet_with_background
      Added value: +{
      +  "default": false,
      +  "description": "When true, also returns the spritesheet with background intact (before background removal). Useful for manually fixing background removal issues. The with-background spritesheet URL will be in spritesheet_with_background_url.",
      +  "example": false,
      +  "type": "boolean"
      +}
  33. Changed6 schema fields changed
    • addedInput schema / properties / requestBody / properties / frame_size
      Added value: +{
      +  "default": 256,
      +  "description": "Size of each frame in pixels (width and height). 0 is for maximum resolution.",
      +  "enum": [
      +    64,
      +    128,
      +    256,
      +    0
      +  ],
      +  "example": 64,
      +  "format": "integer",
      +  "type": "number"
      +}
    • addedInput schema / properties / requestBody / properties / frames
      Added value: +{
      +  "default": 36,
      +  "description": "Number of frames in the output spritesheet.",
      +  "enum": [
      +    4,
      +    9,
      +    16,
      +    25,
      +    36,
      +    49,
      +    64
      +  ],
      +  "example": 4,
      +  "format": "integer",
      +  "type": "number"
      +}
    • addedInput schema / properties / requestBody / properties / margin_ratio / default
      Added value: +0.15
    • addedInput schema / properties / requestBody / properties / margin_ratio / example
      Added value: +0.15
    • removedInput schema / properties / requestBody / properties / num_frames
      Removed value: -{
      -  "description": "Number of frames in the output spritesheet.",
      -  "format": "integer",
      -  "type": "number"
      -}
    • removedInput schema / properties / requestBody / properties / target_frame_size
      Removed value: -{
      -  "description": "Size of each frame in pixels (width and height).",
      -  "format": "integer",
      -  "type": "number"
      -}
  34. Changed4 schema fields changed
    • changedInput schema / properties / requestBody / properties / direction / description
      Previous value: -"Direction for the animation preset."New value: +"Direction for the animation preset. When using a preset, `direction` is required."
    • changedInput schema / properties / requestBody / properties / perspective / description
      Previous value: -"Perspective ID to use with the animation preset. If not provided, the first available perspective is used."New value: +"Perspective ID to use with the animation preset. When using a preset, `perspective` is required."
    • changedInput schema / properties / requestBody / properties / preset_id / description
      Previous value: -"ID of an animation preset to use instead of a video URL. Use the animation-presets endpoint to list available presets. When using a preset, `direction` is required."New value: +"ID of an animation preset to use instead of a video URL. Use the animation-presets endpoint to list available presets. When using a preset, `perspective` and `direction` are required."
    • changedInput schema / properties / requestBody / properties / video / description
      Previous value: -"URL of the video to use as motion source. You can use videos from the animateSprite endpoint or provide your own. Videos up to 4 seconds will produce better results. Either `video` or `preset_id` + `direction` must be provided."New value: +"URL of the video to use as motion source. You can use videos from the animateSprite endpoint or provide your own. Videos up to 4 seconds will produce better results. Either `video` or `preset_id` + `perspective` + `direction` must be provided."
  35. Changed5 schema fields changed
    • addedInput schema / properties / requestBody / properties / direction
      Added value: +{
      +  "description": "Direction for the animation preset.",
      +  "enum": [
      +    "N",
      +    "NE",
      +    "E",
      +    "SE",
      +    "S",
      +    "SW",
      +    "W",
      +    "NW"
      +  ],
      +  "example": "N",
      +  "type": "string"
      +}
    • addedInput schema / properties / requestBody / properties / perspective
      Added value: +{
      +  "description": "Perspective ID to use with the animation preset. If not provided, the first available perspective is used.",
      +  "type": "string"
      +}
    • addedInput schema / properties / requestBody / properties / preset_id
      Added value: +{
      +  "description": "ID of an animation preset to use instead of a video URL. Use the animation-presets endpoint to list available presets. When using a preset, `direction` is required.",
      +  "type": "string"
      +}
    • changedInput schema / properties / requestBody / properties / video / description
      Previous value: -"URL of the video to use as motion source. You can use videos from the animateSprite endpoint or provide your own. Videos up to 4 seconds will produce better results."New value: +"URL of the video to use as motion source. You can use videos from the animateSprite endpoint or provide your own. Videos up to 4 seconds will produce better results. Either `video` or `preset_id` + `direction` must be provided."
    • changedInput schema / properties / requestBody / required
      Previous value: -[
      -  "image",
      -  "video"
      -]New value: +[
      +  "image"
      +]
  36. Added

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the generic annotations, it discloses the asynchronous job lifecycle, HTTP 400 conditions, video-over-preset precedence, reference compression, loop trimming, and model-dependent audio. The unusually detailed billing explanation covers credit holds, final charges, caps, refunds on failure or cancellation, and the fact that loop trimming is not deducted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and most sentences contain operationally useful information, but the definition is a dense, very long paragraph followed by a separate pricing block. It repeats model pricing and selection details already present in the fully documented schema, and separating validation, billing, model choice, and asynchronous behavior into shorter sections would improve scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is comprehensive for a complex, paid asynchronous generation tool with no output schema: it describes both immediate and eventual results, prerequisites, errors, timing behavior, charges, refunds, and polling. An agent has enough context to construct a valid request, choose an appropriate model, and handle the resulting job.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds important cross-parameter semantics, including the model-dependent duration default, the need to pass a preset's own duration to preserve timing, and validation of the video-or-preset triple and model/duration combination. Some other parameter guidance, particularly model rates and request_id usage, repeats the schema rather than adding new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening precisely states the operation, inputs, and output: transferring motion from a reference video or named preset onto a static sprite to produce an animated spritesheet. It also distinguishes the tool from animateSprite by identifying motion copying versus text-prompt-generated animation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use this tool when an existing motion clip or preset should be copied and to prefer animateSprite for animation generated purely from a text prompt. Additional guidance covers hydra versus forge, warns against legacy models for new work, and routes preset discovery, result retrieval, and polling to the appropriate sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.