GET

/v1/schemas/reactor/video/x2

kind inputactivity videohash 70f117c2…extracted Sep 5, 2026version currentsource upstream spec ↗
fieldrecorded source
schemaSource linked above.

upstream-spec

Source trace
0b9bfc6b62e13f0cfda52b409ef93c09c5b5858c54626ba3fd1a74afc0812691
{
  "fetchedAt": 1788585060,
  "extractorVersion": "1",
  "verifiedAt": null
}

Request body

0 properties · 0 required · 0 $defs

This schema isn’t a plain object with properties — showing the raw JSON instead.

application/json
{
  "provider": "reactor",
  "activity": "video",
  "endpointId": "x2",
  "kind": "input",
  "contentHash": "70f117c284caa91142f3c491b4a3e172b60f4073c363894a59454a4056888521",
  "specRevision": null,
  "provenance": {
    "sourceUrl": "https://reactor.inc/models/x2/api#x2",
    "sourceHash": "0b9bfc6b62e13f0cfda52b409ef93c09c5b5858c54626ba3fd1a74afc0812691",
    "fetchedAt": 1788585060,
    "extractorVersion": "1",
    "derivation": "upstream-spec",
    "verifiedAt": null
  },
  "createdAt": 1788585060,
  "supersededAt": null,
  "schema": {
    "oneOf": [
      {
        "type": "object",
        "required": [
          "command",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "command": {
            "type": "string",
            "const": "reset"
          },
          "data": {
            "type": "object",
            "properties": {}
          }
        }
      },
      {
        "type": "object",
        "required": [
          "command",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "command": {
            "type": "string",
            "const": "set_prompt"
          },
          "data": {
            "type": "object",
            "properties": {
              "prompt": {
                "type": "string",
                "default": "",
                "maxLength": 1000,
                "description": "The editing instruction, e.g. \"replace the person with the character from the reference image\". Up to 1000 characters. Applies from the next generated block.",
                "x-reactor-moderate": true
              }
            }
          }
        }
      },
      {
        "type": "object",
        "required": [
          "command",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "command": {
            "type": "string",
            "const": "set_pointer"
          },
          "data": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number",
                "default": 0.5,
                "maximum": 1,
                "minimum": 0,
                "description": "Horizontal pointer position, normalized to the output frame (0 = left, 1 = right).",
                "x-reactor-moderate": false
              },
              "y": {
                "type": "number",
                "default": 0.5,
                "maximum": 1,
                "minimum": 0,
                "description": "Vertical pointer position, normalized to the output frame (0 = top, 1 = bottom).",
                "x-reactor-moderate": false
              },
              "active": {
                "type": "boolean",
                "default": false,
                "description": "Whether a drag gesture is in progress. While true, the pointer steers motion; while false, it is ignored.",
                "x-reactor-moderate": false
              }
            }
          }
        }
      },
      {
        "type": "object",
        "required": [
          "command",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "command": {
            "type": "string",
            "const": "set_pointer_x"
          },
          "data": {
            "type": "object",
            "properties": {
              "pointer_x": {
                "type": "number",
                "default": 0.5,
                "maximum": 1,
                "minimum": 0,
                "description": "Horizontal drag-pointer position, normalized to the output frame (0 = left edge, 1 = right edge). Sampled once per generated block and only steers motion while `pointer_active` is true.",
                "x-reactor-moderate": false
              }
            }
          }
        }
      },
      {
        "type": "object",
        "required": [
          "command",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "command": {
            "type": "string",
            "const": "set_pointer_y"
          },
          "data": {
            "type": "object",
            "properties": {
              "pointer_y": {
                "type": "number",
                "default": 0.5,
                "maximum": 1,
                "minimum": 0,
                "description": "Vertical drag-pointer position, normalized to the output frame (0 = top edge, 1 = bottom edge). Sampled once per generated block and only steers motion while `pointer_active` is true.",
                "x-reactor-moderate": false
              }
            }
          }
        }
      },
      {
        "type": "object",
        "required": [
          "command",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "command": {
            "type": "string",
            "const": "set_keep_backlog"
          },
          "data": {
            "type": "object",
            "properties": {
              "keep_backlog": {
                "type": "boolean",
                "default": false,
                "description": "Source-frame consumption policy, applied from the next block. False (default): always read the newest frames and drop backlog, keeping latency bounded when inference is slower than the source. True: consume every frame in order for smoother motion (e.g. drag mode) at the cost of growing delay.",
                "x-reactor-moderate": false
              }
            }
          }
        }
      },
      {
        "type": "object",
        "required": [
          "command",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "command": {
            "type": "string",
            "const": "set_pointer_active"
          },
          "data": {
            "type": "object",
            "properties": {
              "pointer_active": {
                "type": "boolean",
                "default": false,
                "description": "Whether a drag gesture is in progress. While true, the current `pointer_x`/`pointer_y` position steers the motion of the edited subject; while false, the pointer is ignored. Sampled once per generated block.",
                "x-reactor-moderate": false
              }
            }
          }
        }
      },
      {
        "type": "object",
        "required": [
          "command",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "command": {
            "type": "string",
            "const": "set_reference_image"
          },
          "data": {
            "type": "object",
            "required": [
              "reference_image"
            ],
            "properties": {
              "reference_image": {
                "$ref": "#/$defs/ReactorUploadReference",
                "description": "Reference image uploaded via the Reactor presigned-URL protocol. Any resolution or aspect ratio; it is scaled to fit the session's output resolution and padded, never cropped, so the whole subject is preserved.",
                "x-reactor-moderate": false
              }
            }
          }
        }
      }
    ],
    "$defs": {
      "ReactorUploadReference": {
        "type": "object",
        "format": "reactor-upload-reference",
        "required": [
          "upload_id",
          "name",
          "mime_type",
          "size"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "size": {
            "type": "integer"
          },
          "mime_type": {
            "type": "string"
          },
          "upload_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "description": "Reference to a file uploaded via the Reactor upload protocol."
      }
    }
  }
}

Validate a payload

before you spend tokens
shell
$ curl -X POST https://modelschemas.com/v1/validate \
    -d '{"provider":"reactor","endpointId":"x2","payload":{…}}'
→ {"valid": false, "errors": [{"path": "#", "keyword": "required", …}]}