{"openapi":"3.1.0","info":{"title":"Ffmpeg Api Images to Video","version":"1.0.0","description":"A Mixio endpoint that stitches an ordered list of images into an MP4 video by holding each image for a specified number of frames at a configurable frame rate"},"paths":{"/mixio/ffmpeg-api/images-to-video":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"ImagesToVideoInput","required":["images"],"properties":{"fps":{"type":"number","title":"Fps","default":24,"maximum":120,"minimum":1,"description":"Frames per second of the output video."},"images":{"type":"array","items":{"$ref":"#/components/schemas/ImageFrame"},"title":"Images","examples":[[{"url":"https://v3.Mixio.media/files/koala/oei_-iPIYFnhdB8SxojND_qwen-edit-res.png","frames":4},{"url":"https://v3.Mixio.media/files/tiger/c8VSfX5XtJ3DCzV-4Bxg8_kid_image.png","frames":2},{"url":"https://v3.Mixio.media/files/koala/oei_-iPIYFnhdB8SxojND_qwen-edit-res.png","frames":4}]],"maxItems":200,"minItems":1,"description":"Ordered list of images to play as video frames. Each image is held for its specified number of frames before cutting to the next image."}},"x-fal-order-properties":["images","fps"]}}}}}},"/mixio/ffmpeg-api/images-to-video/requests/{request_id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","title":"ImagesToVideoOutput","required":["video"],"properties":{"video":{"$ref":"#/components/schemas/File","description":"Output MP4 video."}},"x-fal-order-properties":["video"]}}}}}}},"/mixio/ffmpeg-api/images-to-video/requests/{request_id}/status":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","required":["status","request_id"],"properties":{"logs":{"type":"object","description":"The logs.","additionalProperties":true},"status":{"enum":["IN_QUEUE","IN_PROGRESS","COMPLETED"],"type":"string"},"metrics":{"type":"object","description":"The metrics.","additionalProperties":true},"cancel_url":{"type":"string","description":"The cancel url."},"request_id":{"type":"string","description":"The request id."},"status_url":{"type":"string","description":"The status url."},"response_url":{"type":"string","description":"The response url."},"queue_position":{"type":"integer","description":"The queue position."}}}}}}}}},"/mixio/ffmpeg-api/images-to-video/requests/{request_id}/cancel":{"put":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the request was cancelled successfully."}}}}}}}}}},"components":{"schemas":{"File":{"type":"object","title":"File","required":["url"],"properties":{"url":{"type":"string","title":"Url","description":"The URL where the file can be downloaded from."},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name","examples":["z9RV14K95DvU.png"],"description":"The name of the file. It will be auto-generated if not provided."},"file_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"File Size","examples":[4404019],"description":"The size of the file in bytes."},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type","examples":["image/png"],"description":"The mime type of the file."}},"x-fal-order-properties":["url","content_type","file_name","file_size"]},"ImageFrame":{"type":"object","title":"ImageFrame","required":["url","frames"],"properties":{"url":{"type":"string","title":"Url","examples":["https://v3.Mixio.media/files/koala/oei_-iPIYFnhdB8SxojND_qwen-edit-res.png"],"description":"URL where the image file can be accessed"},"frames":{"type":"integer","title":"Frames","maximum":1000,"minimum":1,"description":"Number of frames this image is held for in the output video. The on-screen duration is `frames / fps` seconds."}},"x-fal-order-properties":["url","frames"]},"QueueStatus":{"type":"object","required":["status","request_id"],"properties":{"logs":{"type":"object","description":"The logs.","additionalProperties":true},"status":{"enum":["IN_QUEUE","IN_PROGRESS","COMPLETED"],"type":"string"},"metrics":{"type":"object","description":"The metrics.","additionalProperties":true},"cancel_url":{"type":"string","description":"The cancel url."},"request_id":{"type":"string","description":"The request id."},"status_url":{"type":"string","description":"The status url."},"response_url":{"type":"string","description":"The response url."},"queue_position":{"type":"integer","description":"The queue position."}}},"FfmpegApiImagesToVideoInput":{"type":"object","title":"ImagesToVideoInput","required":["images"],"properties":{"fps":{"type":"number","title":"Fps","default":24,"maximum":120,"minimum":1,"description":"Frames per second of the output video."},"images":{"type":"array","items":{"$ref":"#/components/schemas/ImageFrame"},"title":"Images","examples":[[{"url":"https://v3.Mixio.media/files/koala/oei_-iPIYFnhdB8SxojND_qwen-edit-res.png","frames":4},{"url":"https://v3.Mixio.media/files/tiger/c8VSfX5XtJ3DCzV-4Bxg8_kid_image.png","frames":2},{"url":"https://v3.Mixio.media/files/koala/oei_-iPIYFnhdB8SxojND_qwen-edit-res.png","frames":4}]],"maxItems":200,"minItems":1,"description":"Ordered list of images to play as video frames. Each image is held for its specified number of frames before cutting to the next image."}},"x-fal-order-properties":["images","fps"]},"FfmpegApiImagesToVideoOutput":{"type":"object","title":"ImagesToVideoOutput","required":["video"],"properties":{"video":{"$ref":"#/components/schemas/File","description":"Output MP4 video."}},"x-fal-order-properties":["video"]}}}}