{
  "openapi": "3.1.0",
  "info": {
    "title": "LTX-23-Video — Chutes API",
    "description": "Lightricks LTX 2.3 distilled-1.1 FP8 on RTX 6000 Pro — cinematic T2V, I2V, and keyframe interpolation with 8-step inference, synchronized audio, and GPU prompt enhancement.",
    "version": "7e6f8137-25ee-5d83-a1b1-9a283ec28e85",
    "contact": {
      "name": "Chutes",
      "url": "https://chutes.ai"
    },
    "x-chutes": {
      "chuteId": "77711d2c-c0ec-5378-90a9-41823591058b",
      "slug": "vonkaiser-ltx-23-video",
      "modelName": "LTX-23-Video",
      "standardTemplate": null,
      "openaiCompatible": false,
      "confidentialCompute": true,
      "modelPage": "https://chutes.ai/app/chute/vonkaiser-ltx-23-video",
      "llmsTxt": "https://chutes.ai/app/chute/vonkaiser-ltx-23-video/llms.txt",
      "pricing": {
        "usdPerHour": 1.8
      }
    }
  },
  "servers": [
    {
      "url": "https://vonkaiser-ltx-23-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"
                  },
                  "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
                  },
                  "guidance_scale": {
                    "type": "number",
                    "default": 3.1
                  },
                  "input_image_b64": {
                    "type": "string",
                    "description": "Base64 image for legacy single-image I2V (PNG/JPEG). Use keyframes instead for multi-image interpolation.",
                    "default": null
                  },
                  "negative_prompt": {
                    "type": "string",
                    "default": "shaky, glitchy, low quality, worst quality, deformed, distorted"
                  },
                  "use_random_seed": {
                    "type": "boolean",
                    "default": true
                  },
                  "num_inference_steps": {
                    "type": "integer",
                    "description": "Ignored — always 8 for the pre-distilled model. Any value provided is silently overridden to 8.",
                    "default": 8
                  }
                },
                "required": [
                  "prompt"
                ]
              },
              "example": {
                "seed": 42,
                "width": 768,
                "height": 512,
                "prompt": "a serene mountain lake at sunset",
                "return_json": false,
                "video_format": "mp4",
                "enhance_prompt": false,
                "generate_audio": true,
                "guidance_scale": 3.1,
                "negative_prompt": "shaky, glitchy, low quality, worst quality, deformed, distorted",
                "use_random_seed": true,
                "num_inference_steps": 8
              }
            }
          }
        }
      }
    },
    "/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
                }
              }
            }
          }
        }
      }
    }
  }
}