# Luma Ray 3.2 video to video agent

Needs prompt and video url. Served by fal.ai.

Luma Ray 3.2 Video to Video, served by fal.ai. The OpenAPI schema for the luma/agent/ray/v3.2/video-to-video queue. Price: For 5s video your request will cost $0.72 for 540p, $1.08 for 720p and $2.16 for 1080p. For 10s, $1.44 at 540p, $2.16 at 720p and $4.32 at 1080p. HDR (720p/1080p only) costs $2.16/$4.32 at 5s and $4.32/$8.64 at 10s; HDR + EXR costs $3.24/$6.48 at 5s and $6.48/$12.96 at 10s (540p not available in HDR). For $1 you can run this model approximately 1 time (540p/5s). Queued execution; final USD charge comes from the unique billing event matching this exact endpoint and request_id. A missing receipt retains the reservation; no guessed final fee. Asynchronous: returns a request_id; poll fal/status and fetch fal/result with model "luma/agent" and that request_id. Billed once, when the result is ready; a generation that fails is refunded.

- Tool ID: `fal/luma-agent-ray-v3-2-video-to-video`
- Name in the catalog: Luma Ray 3.2 Video to Video
- Provider: [fal.ai](/providers/fal.md)
- Capability: [AI video generation](/tools/video-generation.md)
- Price: usage based, the maximum is shown before a run
- Authentication: an authorised Agentik workspace is required for execution, including zero-price tools.

## Pricing contract

The provider’s price, with no markup. Billed for measured usage.


```json
{
  "model": "per_call",
  "amountUsd": 12.96,
  "multipliers": [
    {
      "all": [
        {
          "field": "resolution",
          "equals": "540p"
        },
        {
          "field": "duration",
          "equals": "5s"
        },
        {
          "field": "hdr",
          "equals": false
        },
        {
          "field": "exr_export",
          "equals": false
        }
      ],
      "setUsd": 0.72
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "540p"
        },
        {
          "field": "duration",
          "equals": "10s"
        },
        {
          "field": "hdr",
          "equals": false
        },
        {
          "field": "exr_export",
          "equals": false
        }
      ],
      "setUsd": 1.44
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "720p"
        },
        {
          "field": "duration",
          "equals": "5s"
        },
        {
          "field": "hdr",
          "equals": false
        },
        {
          "field": "exr_export",
          "equals": false
        }
      ],
      "setUsd": 1.08
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "720p"
        },
        {
          "field": "duration",
          "equals": "5s"
        },
        {
          "field": "hdr",
          "equals": true
        },
        {
          "field": "exr_export",
          "equals": false
        }
      ],
      "setUsd": 2.16
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "720p"
        },
        {
          "field": "duration",
          "equals": "5s"
        },
        {
          "field": "hdr",
          "equals": true
        },
        {
          "field": "exr_export",
          "equals": true
        }
      ],
      "setUsd": 3.24
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "720p"
        },
        {
          "field": "duration",
          "equals": "10s"
        },
        {
          "field": "hdr",
          "equals": false
        },
        {
          "field": "exr_export",
          "equals": false
        }
      ],
      "setUsd": 2.16
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "720p"
        },
        {
          "field": "duration",
          "equals": "10s"
        },
        {
          "field": "hdr",
          "equals": true
        },
        {
          "field": "exr_export",
          "equals": false
        }
      ],
      "setUsd": 4.32
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "720p"
        },
        {
          "field": "duration",
          "equals": "10s"
        },
        {
          "field": "hdr",
          "equals": true
        },
        {
          "field": "exr_export",
          "equals": true
        }
      ],
      "setUsd": 6.48
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "1080p"
        },
        {
          "field": "duration",
          "equals": "5s"
        },
        {
          "field": "hdr",
          "equals": false
        },
        {
          "field": "exr_export",
          "equals": false
        }
      ],
      "setUsd": 2.16
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "1080p"
        },
        {
          "field": "duration",
          "equals": "5s"
        },
        {
          "field": "hdr",
          "equals": true
        },
        {
          "field": "exr_export",
          "equals": false
        }
      ],
      "setUsd": 4.32
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "1080p"
        },
        {
          "field": "duration",
          "equals": "5s"
        },
        {
          "field": "hdr",
          "equals": true
        },
        {
          "field": "exr_export",
          "equals": true
        }
      ],
      "setUsd": 6.48
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "1080p"
        },
        {
          "field": "duration",
          "equals": "10s"
        },
        {
          "field": "hdr",
          "equals": false
        },
        {
          "field": "exr_export",
          "equals": false
        }
      ],
      "setUsd": 4.32
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "1080p"
        },
        {
          "field": "duration",
          "equals": "10s"
        },
        {
          "field": "hdr",
          "equals": true
        },
        {
          "field": "exr_export",
          "equals": false
        }
      ],
      "setUsd": 8.64
    },
    {
      "all": [
        {
          "field": "resolution",
          "equals": "1080p"
        },
        {
          "field": "duration",
          "equals": "10s"
        },
        {
          "field": "hdr",
          "equals": true
        },
        {
          "field": "exr_export",
          "equals": true
        }
      ],
      "setUsd": 12.96
    }
  ]
}
```

Pricing source: [https://fal.ai/models/luma/agent/ray/v3.2/video-to-video](https://fal.ai/models/luma/agent/ray/v3.2/video-to-video). For 5s video your request will cost $0.72 for 540p, $1.08 for 720p and $2.16 for 1080p. For 10s, $1.44 at 540p, $2.16 at 720p and $4.32 at 1080p. HDR (720p/1080p only) costs $2.16/$4.32 at 5s and $4.32/$8.64 at 10s; HDR + EXR costs $3.24/$6.48 at 5s and $6.48/$12.96 at 10s (540p not available in HDR). For $1 you can run this model approximately 1 time (540p/5s). Queued execution; final USD charge comes from the unique billing event matching this exact endpoint and request_id. A missing receipt retains the reservation; no guessed final fee..

Price verification date: 2026-10-07.

## Complete input schema


```json
{
  "type": "object",
  "properties": {
    "video_url": {
      "minLength": 1,
      "title": "Video Url",
      "description": "URL of the source video to edit.",
      "type": "string"
    },
    "auto_controls": {
      "default": false,
      "description": "Let the model derive the edit conditioning schedule from the source video. Cannot be combined with edit_strength.",
      "title": "Auto Controls",
      "type": "boolean"
    },
    "duration": {
      "default": "5s",
      "description": "Duration of the edited video.",
      "enum": [
        "5s",
        "10s"
      ],
      "title": "Duration",
      "type": "string"
    },
    "resolution": {
      "default": "540p",
      "description": "Resolution of the edited video. Higher resolutions cost more.",
      "enum": [
        "540p",
        "720p",
        "1080p"
      ],
      "title": "Resolution",
      "type": "string"
    },
    "keyframes": {
      "anyOf": [
        {
          "minItems": 1,
          "items": {
            "type": "string"
          },
          "type": "array",
          "maxItems": 64
        },
        {
          "type": "null"
        }
      ],
      "description": "Multi-keyframe edit guide frames: up to 64 image URLs pinned at the source-frame positions given by keyframe_indexes. Mutually exclusive with start_image_url. Provide keyframes and keyframe_indexes together (same length).",
      "title": "Keyframes"
    },
    "exr_export": {
      "default": false,
      "description": "Also export an EXR file alongside the MP4. Requires hdr=true and HDR access.",
      "title": "Exr Export",
      "type": "boolean"
    },
    "controls": {
      "anyOf": [
        {
          "additionalProperties": false,
          "description": "Per-signal conditioning controls for ray-3.2 video editing.\n\nEach signal is optional; include only the signals you want to tune. Cannot\nbe combined with auto_controls. Mirrors the Luma Agents ``video.edit.controls``\nobject — see https://docs.agents.lumalabs.ai/api/resources/generations.",
          "title": "RayEditControls",
          "x-fal-order-properties": [
            "pose",
            "depth",
            "normals",
            "trajectory",
            "face"
          ],
          "properties": {
            "depth": {
              "anyOf": [
                {
                  "additionalProperties": false,
                  "x-fal-order-properties": [
                    "enabled",
                    "blur"
                  ],
                  "title": "RayEditDepthControl",
                  "properties": {
                    "blur": {
                      "anyOf": [
                        {
                          "minimum": 0,
                          "maximum": 1,
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Depth blur. Higher values allow more geometric freedom. Leave unset for the default.",
                      "title": "Blur"
                    },
                    "enabled": {
                      "default": true,
                      "description": "Enable depth / scene-geometry conditioning for the edit.",
                      "title": "Enabled",
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Depth / scene-geometry conditioning."
            },
            "normals": {
              "anyOf": [
                {
                  "additionalProperties": false,
                  "x-fal-order-properties": [
                    "enabled",
                    "augmentation"
                  ],
                  "title": "RayEditNormalsControl",
                  "properties": {
                    "enabled": {
                      "default": true,
                      "description": "Enable surface-normals conditioning for the edit.",
                      "title": "Enabled",
                      "type": "boolean"
                    },
                    "augmentation": {
                      "anyOf": [
                        {
                          "minimum": 0,
                          "maximum": 1,
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Surface-normals augmentation. Higher values allow more reinterpretation of surface geometry. Leave unset for the default.",
                      "title": "Augmentation"
                    }
                  },
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Surface-normals conditioning."
            },
            "face": {
              "anyOf": [
                {
                  "additionalProperties": false,
                  "x-fal-order-properties": [
                    "enabled"
                  ],
                  "title": "RayEditFaceControl",
                  "properties": {
                    "enabled": {
                      "default": true,
                      "description": "Enable face-identity conditioning for the edit.",
                      "title": "Enabled",
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Face-identity conditioning."
            },
            "pose": {
              "anyOf": [
                {
                  "additionalProperties": false,
                  "x-fal-order-properties": [
                    "enabled",
                    "strength"
                  ],
                  "title": "RayEditPoseControl",
                  "properties": {
                    "strength": {
                      "anyOf": [
                        {
                          "enum": [
                            "precise",
                            "coarse"
                          ],
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Pose conditioning precision. 'precise' follows the source pose tightly; 'coarse' allows more freedom. Leave unset for the default.",
                      "title": "Strength"
                    },
                    "enabled": {
                      "default": true,
                      "description": "Enable pose / skeleton conditioning for the edit.",
                      "title": "Enabled",
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pose / skeleton conditioning."
            },
            "trajectory": {
              "anyOf": [
                {
                  "additionalProperties": false,
                  "x-fal-order-properties": [
                    "enabled",
                    "sparsity"
                  ],
                  "title": "RayEditTrajectoryControl",
                  "properties": {
                    "enabled": {
                      "default": true,
                      "description": "Enable motion-trajectory conditioning for the edit.",
                      "title": "Enabled",
                      "type": "boolean"
                    },
                    "sparsity": {
                      "anyOf": [
                        {
                          "minimum": 0,
                          "maximum": 1,
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Motion-trajectory sparsity. Higher values use fewer motion anchors. Leave unset for the default.",
                      "title": "Sparsity"
                    }
                  },
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Motion-trajectory conditioning."
            }
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "description": "Per-signal conditioning controls (pose, depth, normals, trajectory, face) for finer control than edit_strength. Cannot be combined with auto_controls."
    },
    "keyframe_indexes": {
      "anyOf": [
        {
          "minItems": 1,
          "items": {
            "type": "integer"
          },
          "type": "array",
          "maxItems": 64
        },
        {
          "type": "null"
        }
      ],
      "description": "Source-video frame positions where each keyframes[i] is anchored. Non-negative, unique, and the same length as keyframes.",
      "title": "Keyframe Indexes"
    },
    "user": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Optional opaque identifier for the end user making the request. Used only for abuse attribution; never interpreted by fal.",
      "title": "User"
    },
    "start_image_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Optional URL of an image to use as the edited video's first frame — e.g. a restyled version of the source's opening frame to steer the look of the edit. Leave unset to let the model derive the first frame from the source video.",
      "title": "Start Image Url"
    },
    "hdr": {
      "default": false,
      "description": "Generate an HDR-encoded MP4. Requires HDR access on the account and a resolution of 720p or 1080p.",
      "title": "Hdr",
      "type": "boolean"
    },
    "prompt": {
      "minLength": 1,
      "title": "Prompt",
      "maxLength": 6000,
      "description": "Text prompt describing how to edit the source video.",
      "type": "string"
    },
    "edit_strength": {
      "anyOf": [
        {
          "enum": [
            "adhere_1",
            "adhere_2",
            "adhere_3",
            "flex_1",
            "flex_2",
            "flex_3",
            "reimagine_1",
            "reimagine_2",
            "reimagine_3"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "How closely the edit preserves the source video. 'adhere_*' stays closest to the source, 'flex_*' is balanced, and 'reimagine_*' diverges most. Leave unset to use Luma's default. Cannot be combined with auto_controls.",
      "title": "Edit Strength"
    }
  },
  "required": [
    "prompt",
    "video_url"
  ],
  "additionalProperties": false,
  "allOf": [
    {
      "if": {
        "properties": {
          "hdr": {
            "const": true
          }
        },
        "required": [
          "hdr"
        ]
      },
      "then": {
        "properties": {
          "resolution": {
            "enum": [
              "720p",
              "1080p"
            ]
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "exr_export": {
            "const": true
          }
        },
        "required": [
          "exr_export"
        ]
      },
      "then": {
        "properties": {
          "hdr": {
            "const": true
          }
        },
        "required": [
          "hdr"
        ]
      }
    }
  ]
}
```

## Published example

This is the provider tool’s published example. Replace example values with the user’s requested inputs, respecting the schema; do not execute an example merely to test a connection.


```json
{
  "tool_id": "fal/luma-agent-ray-v3-2-video-to-video",
  "input": {
    "prompt": "Restyle the footage as a hand-painted watercolor animation with soft pastel colors.",
    "video_url": "https://storage.googleapis.com/falserverless/example_inputs/birefnet-video-input.mp4"
  }
}
```

## Execute and retrieve

Inspect again before execution, explain the price and obtain the required authority. Use MCP run_tool or POST /v1/run with this tool ID, valid input and an idempotency key. Save the returned run ID and follow the actual state. If Agentik answers that the tool is temporarily unavailable, do not retry it blindly; use discovery to propose an alternative.

This tool uses deferred settlement. Follow its returned task/run instructions; preserve the existing reservation until the result is reconciled.

A partial or uncertain result can still have consumed provider resources. Consult [billing](/docs/billing.md), [idempotency](/docs/idempotency.md) and [asynchronous results](/docs/async.md).

[Provider documentation](https://fal.ai/models/luma/agent/ray/v3.2/video-to-video)

[REST inspection](https://api.agentik.cc/v1/tools/fal/luma-agent-ray-v3-2-video-to-video) · [OpenAPI](/openapi.json) · [Connection guide](/connect.md)

---

[HTML page](/providers/fal/luma-agent-ray-v3-2-video-to-video) · [Agent index](/llms.txt)
