Runway · JSON Structure

Runway Task Structure

Structure of an asynchronous generation task in the Runway API. All generation operations (video, image, character performance, lip sync, etc.) return a task that is polled for completion.

Type: Properties: 0
Video GenerationImage GenerationArtificial IntelligenceMachine LearningGenerative AIAvatarsCharactersWebRTCCreative Tools

Runway Generation Task is a JSON Structure definition published by Runway.

Meta-schema:

JSON Structure

Raw ↑
{
  "name": "Runway Generation Task",
  "description": "Structure of an asynchronous generation task in the Runway API. All generation operations (video, image, character performance, lip sync, etc.) return a task that is polled for completion.",
  "fields": [
    {
      "name": "id",
      "type": "string (UUID)",
      "required": true,
      "description": "Unique task identifier used for polling status"
    },
    {
      "name": "status",
      "type": "string enum",
      "required": true,
      "description": "Current task status",
      "enum": ["PENDING", "PROCESSING", "SUCCEEDED", "FAILED", "CANCELLED"]
    },
    {
      "name": "createdAt",
      "type": "string (ISO 8601 datetime)",
      "required": false,
      "description": "Timestamp when the task was created"
    },
    {
      "name": "output",
      "type": "array of string (URI)",
      "required": false,
      "description": "Output media URLs. Only present when status is SUCCEEDED."
    },
    {
      "name": "failure",
      "type": "string",
      "required": false,
      "description": "Failure reason description. Only present when status is FAILED."
    },
    {
      "name": "model",
      "type": "string",
      "required": false,
      "description": "The generative model used for this task"
    }
  ],
  "task_types": [
    {
      "name": "Text to Video",
      "endpoint": "POST /text_to_video",
      "models": ["gen4.5", "veo3.1", "veo3.1_fast"],
      "input_fields": ["model", "promptText", "duration", "ratio"]
    },
    {
      "name": "Image to Video",
      "endpoint": "POST /image_to_video",
      "models": ["gen4", "gen4_turbo", "gen4.5", "gen4_aleph"],
      "input_fields": ["model", "promptImage", "promptText", "duration", "ratio"]
    },
    {
      "name": "Video to Video",
      "endpoint": "POST /video_to_video",
      "models": ["gen4_aleph"],
      "input_fields": ["model", "promptVideo", "promptText", "ratio"]
    },
    {
      "name": "Text to Image",
      "endpoint": "POST /text_to_image",
      "models": ["gen4_image"],
      "input_fields": ["model", "promptText", "ratio"]
    },
    {
      "name": "Character Performance",
      "endpoint": "POST /character_performance",
      "models": ["act_two"],
      "input_fields": ["model", "character", "reference", "ratio"]
    },
    {
      "name": "Lip Sync",
      "endpoint": "POST /lip_sync",
      "models": ["gen4", "gen4_turbo"],
      "input_fields": ["model", "input", "audio"]
    },
    {
      "name": "Video Upscale",
      "endpoint": "POST /video_upscale",
      "models": ["upscale_v1"],
      "input_fields": ["model", "videoUri"]
    },
    {
      "name": "Frame Interpolation",
      "endpoint": "POST /frame_interpolation",
      "models": ["frame_interpolation_v1"],
      "input_fields": ["model", "videoUri"]
    },
    {
      "name": "Sound Effect",
      "endpoint": "POST /sound_effect",
      "models": ["sound_effect_v1"],
      "input_fields": ["model", "promptText", "videoUri", "duration"]
    }
  ],
  "lifecycle": {
    "description": "All Runway tasks follow this async lifecycle",
    "states": [
      {
        "state": "PENDING",
        "description": "Task queued but not yet processing"
      },
      {
        "state": "PROCESSING",
        "description": "Task actively generating output"
      },
      {
        "state": "SUCCEEDED",
        "description": "Task completed. Output URLs available in output field."
      },
      {
        "state": "FAILED",
        "description": "Task failed. Reason in failure field."
      },
      {
        "state": "CANCELLED",
        "description": "Task was cancelled via DELETE /tasks/{id}"
      }
    ]
  },
  "relationships": [
    {
      "name": "created_by",
      "target": "Generation Request",
      "cardinality": "one-to-one",
      "description": "Each task is created by one generation request"
    },
    {
      "name": "produces",
      "target": "Media Output (URL)",
      "cardinality": "one-to-many",
      "description": "A succeeded task produces one or more media output URLs"
    }
  ]
}