GET

/v1/schemas/fal/video/luma/agent/ray/v3.2/video-to-video

kind inputactivity videohash b143c3d5…extracted Nov 10, 2026version currentsource upstream spec ↗
fieldrecorded source
schemaSource linked above.

upstream-spec

Source trace
91de93df667efe11e9fa2793165a62f5f4e6db88c7bade38ef913827a40aa5f5
{
  "fetchedAt": 1794286801,
  "extractorVersion": "2",
  "verifiedAt": null
}

Request body

14 properties · 2 required · 6 $defs
propertytypedescriptionconstraints
video_url*stringURL of the source video to edit.length ≥ 1
prompt*stringText prompt describing how to edit the source video.length ≥ 1 · length ≤ 6000
start_image_urlstringOptional 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.nullable
keyframesstring[]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).items ≥ 1 · items ≤ 64 · nullable
enable_safety_checkerbooleanAuthorized callers may set false to request relaxed screening.default: true
edit_strengthenumHow 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.adhere_1 | adhere_2 | adhere_3 | flex_1 | flex_2 | flex_3 · +3 more · nullable
durationenumDuration of the edited video.5s | 10s · default: "5s"
controlsRayEditControlsPer-signal conditioning controls for ray-3.2 video editing.nullable
hdrbooleanGenerate an HDR-encoded MP4. Requires HDR access on the account and a resolution of 720p or 1080p.default: false
userstringOptional opaque identifier for the end user making the request. Used only for abuse attribution; never interpreted by fal.nullable
exr_exportbooleanAlso export an EXR file alongside the MP4. Requires hdr=true and HDR access.default: false
auto_controlsbooleanLet the model derive the edit conditioning schedule from the source video. Cannot be combined with edit_strength.default: false
keyframe_indexesinteger[]Source-video frame positions where each keyframes[i] is anchored. Non-negative, unique, and the same length as keyframes.items ≥ 1 · items ≤ 64 · nullable
resolutionenumResolution of the edited video. Higher resolutions cost more.540p | 720p | 1080p · default: "540p"

Types

6 $defs

RayEditControlsobject

Per-signal conditioning controls for ray-3.2 video editing.

depthRayEditDepthControlDepth / scene-geometry conditioning.nullable
faceRayEditFaceControlFace-identity conditioning.nullable
trajectoryRayEditTrajectoryControlMotion-trajectory conditioning.nullable
poseRayEditPoseControlPose / skeleton conditioning.nullable
normalsRayEditNormalsControlSurface-normals conditioning.nullable

RayEditDepthControlobject

enabledbooleanEnable depth / scene-geometry conditioning for the edit.default: true
blurnumberDepth blur. Higher values allow more geometric freedom. Leave unset for the default.0 ≤ n ≤ 1 · nullable

RayEditFaceControlobject

enabledbooleanEnable face-identity conditioning for the edit.default: true

RayEditNormalsControlobject

enabledbooleanEnable surface-normals conditioning for the edit.default: true
augmentationnumberSurface-normals augmentation. Higher values allow more reinterpretation of surface geometry. Leave unset for the default.0 ≤ n ≤ 1 · nullable

RayEditPoseControlobject

enabledbooleanEnable pose / skeleton conditioning for the edit.default: true
strengthenumPose conditioning precision. 'precise' follows the source pose tightly; 'coarse' allows more freedom. Leave unset for the default.precise | coarse · nullable

RayEditTrajectoryControlobject

enabledbooleanEnable motion-trajectory conditioning for the edit.default: true
sparsitynumberMotion-trajectory sparsity. Higher values use fewer motion anchors. Leave unset for the default.0 ≤ n ≤ 1 · nullable

Validate a payload

before you spend tokens
shell
$ curl -X POST https://modelschemas.com/v1/validate \
    -d '{"provider":"fal","endpointId":"luma/agent/ray/v3.2/video-to-video","payload":{…}}'
→ {"valid": false, "errors": [{"path": "#", "keyword": "required", …}]}