{
  "openapi": "3.1.0",
  "info": {
    "title": "LTX-25-Video — Chutes API",
    "description": "Lightricks LTX 2.5 distilled FP8+NVFP4 on RTX PRO 6000 — cinematic T2V, I2V, and keyframe interpolation with 8-step inference, synchronized audio, and GPU prompt enhancement.",
    "version": "e05a4266-271e-54dc-ab70-43f0d88ef327",
    "contact": {
      "name": "Chutes",
      "url": "https://chutes.ai"
    },
    "x-chutes": {
      "chuteId": "52e4c3ec-3dda-51c6-9788-8bffc01e7819",
      "slug": "vonkaiser-ltx-25-video",
      "modelName": "LTX-25-Video",
      "standardTemplate": null,
      "openaiCompatible": false,
      "confidentialCompute": true,
      "modelPage": "https://chutes.ai/app/chute/vonkaiser-ltx-25-video",
      "llmsTxt": "https://chutes.ai/app/chute/vonkaiser-ltx-25-video/llms.txt",
      "pricing": {
        "usdPerHour": 1.8
      }
    }
  },
  "servers": [
    {
      "url": "https://vonkaiser-ltx-25-video.chutes.ai"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Chutes API key. Send as `Authorization: Bearer $CHUTES_API_KEY`."
      }
    }
  },
  "paths": {
    "/generate": {
      "post": {
        "operationId": "generate",
        "summary": "POST /generate",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "fps": {
                    "type": "number",
                    "description": "Output frame rate (8–50). Default 24.",
                    "default": null
                  },
                  "seed": {
                    "type": "integer",
                    "default": null,
                    "minimum": 0,
                    "maximum": 4294967295
                  },
                  "width": {
                    "type": "integer",
                    "default": 768
                  },
                  "frames": {
                    "type": "integer",
                    "description": "Alias for num frames.",
                    "default": null
                  },
                  "height": {
                    "type": "integer",
                    "default": 512
                  },
                  "prompt": {
                    "type": "string"
                  },
                  "duration": {
                    "type": "number",
                    "description": "Target clip length in seconds. With default 24 fps, derives frame count. If frames are set but fps omitted, fps is derived from duration for the output MP4.",
                    "default": null
                  },
                  "keyframes": {
                    "type": "array",
                    "description": "List of 2+ keyframes for multi-image interpolation. Each entry: {image b64, frame idx, strength?, crf?}. At least one keyframe must have frame idx=0. Takes precedence over input image b64 when provided.",
                    "default": null,
                    "items": {
                      "type": "object",
                      "description": "Single keyframe for multi-image interpolation."
                    }
                  },
                  "num_frames": {
                    "type": "integer",
                    "description": "Frame count (snapped to N×8+1). Omit to derive from duration×fps.",
                    "default": null
                  },
                  "return_json": {
                    "type": "boolean",
                    "default": false
                  },
                  "video_format": {
                    "type": "string",
                    "enum": [
                      "mp4",
                      "webm"
                    ],
                    "default": "mp4"
                  },
                  "auto_duration": {
                    "type": "boolean",
                    "description": "Let the LTX 2.5 duration head predict clip length from the prompt. Mutually exclusive with num frames/frames/duration.",
                    "default": false
                  },
                  "enhance_prompt": {
                    "type": "boolean",
                    "description": "Expand the prompt before generation with Llama 3.2 3B Instruct on GPU (SGLang); for I2V/keyframe also runs Florence-2 image captioning on the first image. Off by default — adds 1–3 s of latency.",
                    "default": false
                  },
                  "generate_audio": {
                    "type": "boolean",
                    "default": true
                  },
                  "stage_1_sigmas": {
                    "type": "array",
                    "description": "Override the stage-1 denoising schedule. Strictly decreasing, in [0, 1], ending at 0. Default is the distilled 8-step schedule; departing from it trades the distillation's calibration for control.",
                    "default": null,
                    "items": {
                      "type": "number"
                    }
                  },
                  "stage_2_sigmas": {
                    "type": "array",
                    "description": "Override the stage-2 refinement schedule. Same rules as stage 1 sigmas.",
                    "default": null,
                    "items": {
                      "type": "number"
                    }
                  },
                  "input_image_b64": {
                    "type": "string",
                    "description": "Base64 image for legacy single-image I2V (PNG/JPEG). Use keyframes instead for multi-image interpolation.",
                    "default": null
                  },
                  "use_random_seed": {
                    "type": "boolean",
                    "default": true
                  },
                  "generated_keyframes": {
                    "type": "integer",
                    "description": "LTX 2.5 generated keyframe slots — anchors the model plants mid-clip to hold continuity across long or multi-shot motion. An int requests that many evenly spaced interior slots; a list gives explicit frame indices. Unlike keyframes these need no input images; the model generates them.",
                    "default": null
                  },
                  "auto_duration_max_seconds": {
                    "type": "number",
                    "description": "Upper clamp for auto duration.",
                    "default": 20,
                    "maximum": 60
                  },
                  "auto_duration_min_seconds": {
                    "type": "number",
                    "description": "Lower clamp for auto duration.",
                    "default": 1,
                    "maximum": 60
                  }
                },
                "required": [
                  "prompt"
                ]
              },
              "example": {
                "seed": 42,
                "width": 768,
                "height": 512,
                "prompt": "a serene mountain lake at sunset",
                "return_json": false,
                "video_format": "mp4",
                "auto_duration": false,
                "enhance_prompt": false,
                "generate_audio": true,
                "use_random_seed": true,
                "auto_duration_max_seconds": 20,
                "auto_duration_min_seconds": 1
              }
            }
          }
        }
      }
    },
    "/health": {
      "get": {
        "operationId": "health",
        "summary": "GET /health",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/models": {
      "get": {
        "operationId": "list_models",
        "summary": "GET /models",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    }
  }
}