{
  "aboutHtml": "<p>FLUX Video Edit [fast]는 기존 영상을 바꾸는 Black Forest Labs의 프롬프트 기반 워크플로입니다. 원본 클립 하나와 편집을 설명하는 지시를 받아 편집된 MP4를 반환합니다. 원본이 숏을 설정합니다. 길이, 프레이밍, 카메라 움직임, 타이밍이 시작 구조를 제공합니다. 의도한 변경을 불분명하게 만드는 완전히 새로운 장면 설명보다 무엇이 달라져야 하는지 프롬프트로 식별하세요.</p><h4>변경과 위치 명시</h4><p>문서상의 편집에는 물체·캐릭터 제거, 추가, 교체, 배경 재구성, 클립 스타일 변경, 보이는 텍스트 변경, 대화·소리 수정이 포함됩니다. 대상과 작업으로 시작하세요. 예를 들어 앉아 있는 사람과 방을 유지하면서 의자의 가방을 제거하거나 손동작을 바꾸지 않고 무지 머그를 파란 에나멜 머그로 교체할 수 있습니다. 비슷한 물체가 여러 개 보이면 위치, 외형, 역할로 대상을 구분하세요.</p><p>추가할 때는 위치, 크기, 관련 행동을 설명하세요. 소파 옆의 키 큰 빨간 램프는 숏 어딘가에 추가 램프를 놓으라는 것보다 구체적입니다. 교체할 때는 무엇을 무엇으로 바꾸며 어떤 움직임이나 접촉이 남아야 하는지 식별하세요. 제조사 프롬프트 안내는 변경을 완전히 명시하는 가장 짧은 지시를 권장하며 편집에 필요한 곳에 세부를 추가합니다. 범위를 평가할 수 없는 일반적인 개선을 요청하지 말고 원본 특징을 의도적으로 보존하세요.</p><h4>배경, 스타일, 러프 애니메이션</h4><p>배경 변경은 행동을 유지하면서 보이는 환경을 재구축할 수 있습니다. 제작사는 등반 표면을 다른 구조로 교체하고 새 접촉점을 지정해 캐릭터의 손발이 의미 있는 표면을 갖게 하는 예를 보여 줍니다. 실용적인 장면에서는 바뀐 주변과 기존 움직임이 의존하는 기하 구조를 설명하세요. 원래 행동과의 관계가 명확하면 새 배경을 평가하기 쉽습니다.</p><p>안내는 러프 애니메이션을 완성된 시각 표현으로 변환하는 예도 보여 줍니다. 어떤 블록아웃 물체가 의도한 차량이나 소품이 되는지 명시한 뒤 경로, 속도, 카메라 관계를 유지하세요. 스타일 변경에서는 미적 방향뿐 아니라 결과의 재질, 표면, 빛, 반사를 설명하세요. 같은 행동을 따르더라도 점토 같은 장면과 사진 같은 장면에는 다른 시각 단서가 필요합니다.</p><p>추가 수정은 첫 편집 결과를 새 원본으로 사용할 수 있습니다. 원본과 선택한 각 단계를 보관하고 다음 처리에 명확한 목적 하나를 부여하세요. 문서상의 예는 러프 미리보기에서 완성 배경으로 진행한 뒤 다른 조명 처리를 적용합니다. 매 처리 후 수정 클립과 직전 원본을 비교하고 유지하려던 특징이 여전히 있는지 확인하세요.</p><h4>대화는 기존 시간에 맞춰야 함</h4><p>지시가 대화나 소리 변경을 요청하지 않으면 워크플로는 원본 오디오를 이어받습니다. 무음 원본은 무음 결과를 반환하므로 수정할 기존 발화를 제공하지 않습니다. 대화 편집에서는 의도한 대사를 인용하고 화자를 식별하며 원래 대사가 차지한 시간에 새 단어를 맞추세요. 안내는 긴 대체 대사가 가능한 발화 구간을 넘자 잘린 사례를 보고합니다. 단어를 더 쓴다고 기존 숏 안에 추가 발화 시간이 생기지는 않습니다.</p><p>들리는 대사와 보이는 연기를 함께 검토하세요. 빠진 단어, 타이밍이 어긋난 문구, 원치 않는 소리 변경을 식별할 수 있도록 원본 문구와 의도한 대체 사본을 보관하세요. 유용한 결과는 편집 장면 안의 수정된 발화 순간이며 렌더가 완료되었다는 이유만으로 충실한 전사문이라고 가정하는 것이 아닙니다.</p><h4>원본 한도와 이어받는 출력</h4><p>정확한 제작사 규격은 영상과 편집 프롬프트를 요구합니다. 지시는 앞뒤 공백을 제거한 뒤 1~4,096자여야 합니다. 클립은 URL 또는 인코딩된 MP4로 제공하며 최대 길이는 15초, 입력 한도는 50 MiB입니다. 각 변은 최소 160픽셀이어야 하고 정규화된 클립은 24 fps에서 최소 17프레임, 약 0.7초를 포함해야 합니다. 너무 긴 원본은 조용히 잘리지 않고 거절되며 너무 작은 원본은 처리 중 실패할 수 있습니다.</p><p>문서상의 흐름은 24 fps로 처리하며 원본 길이와 화면비를 따릅니다. 720p 규격을 넘는 입력은 축소됩니다. 제조사는 1920×1088 원본이 1248×704로 반환되는 예를 제공합니다. 이 편집 규격에서 길이, 해상도, 화면비는 독립적인 출력 설정이 아닙니다. 샘플링 방식은 내부에서 처리하며 mode, version, seed, generate_audio 같은 필드는 명시된 요청 계약에서 받지 않습니다.</p><p>새로 생성하는 숏의 움직임·스타일 영감으로만 영상을 쓰는 것은 다른 워크플로입니다. 이 편집기는 이미지 참조, 오디오 전용 입력, 마스크, 클립 확장 요청을 받지 않습니다. 편집 지시를 쓰기 전에 실제 바꿀 영상을 준비하고 선택한 길이를 유지하세요. 비동기 처리 뒤 제작사는 약 1시간 동안 유효한 임시 서명 전달 링크로 편집된 MP4를 반환합니다. 더 긴 편집에 쓰기 전에 결과를 저장하고 바뀐 물체, 주변 프레임, 타이밍, 오디오를 원본과 비교하세요.</p>",
  "aboutText": "FLUX Video Edit [fast]는 기존 영상을 바꾸는 Black Forest Labs의 프롬프트 기반 워크플로입니다. 원본 클립 하나와 편집을 설명하는 지시를 받아 편집된 MP4를 반환합니다. 원본이 숏을 설정합니다. 길이, 프레이밍, 카메라 움직임, 타이밍이 시작 구조를 제공합니다. 의도한 변경을 불분명하게 만드는 완전히 새로운 장면 설명보다 무엇이 달라져야 하는지 프롬프트로 식별하세요.\n\n### 변경과 위치 명시\n\n문서상의 편집에는 물체·캐릭터 제거, 추가, 교체, 배경 재구성, 클립 스타일 변경, 보이는 텍스트 변경, 대화·소리 수정이 포함됩니다. 대상과 작업으로 시작하세요. 예를 들어 앉아 있는 사람과 방을 유지하면서 의자의 가방을 제거하거나 손동작을 바꾸지 않고 무지 머그를 파란 에나멜 머그로 교체할 수 있습니다. 비슷한 물체가 여러 개 보이면 위치, 외형, 역할로 대상을 구분하세요.\n\n추가할 때는 위치, 크기, 관련 행동을 설명하세요. 소파 옆의 키 큰 빨간 램프는 숏 어딘가에 추가 램프를 놓으라는 것보다 구체적입니다. 교체할 때는 무엇을 무엇으로 바꾸며 어떤 움직임이나 접촉이 남아야 하는지 식별하세요. 제조사 프롬프트 안내는 변경을 완전히 명시하는 가장 짧은 지시를 권장하며 편집에 필요한 곳에 세부를 추가합니다. 범위를 평가할 수 없는 일반적인 개선을 요청하지 말고 원본 특징을 의도적으로 보존하세요.\n\n### 배경, 스타일, 러프 애니메이션\n\n배경 변경은 행동을 유지하면서 보이는 환경을 재구축할 수 있습니다. 제작사는 등반 표면을 다른 구조로 교체하고 새 접촉점을 지정해 캐릭터의 손발이 의미 있는 표면을 갖게 하는 예를 보여 줍니다. 실용적인 장면에서는 바뀐 주변과 기존 움직임이 의존하는 기하 구조를 설명하세요. 원래 행동과의 관계가 명확하면 새 배경을 평가하기 쉽습니다.\n\n안내는 러프 애니메이션을 완성된 시각 표현으로 변환하는 예도 보여 줍니다. 어떤 블록아웃 물체가 의도한 차량이나 소품이 되는지 명시한 뒤 경로, 속도, 카메라 관계를 유지하세요. 스타일 변경에서는 미적 방향뿐 아니라 결과의 재질, 표면, 빛, 반사를 설명하세요. 같은 행동을 따르더라도 점토 같은 장면과 사진 같은 장면에는 다른 시각 단서가 필요합니다.\n\n추가 수정은 첫 편집 결과를 새 원본으로 사용할 수 있습니다. 원본과 선택한 각 단계를 보관하고 다음 처리에 명확한 목적 하나를 부여하세요. 문서상의 예는 러프 미리보기에서 완성 배경으로 진행한 뒤 다른 조명 처리를 적용합니다. 매 처리 후 수정 클립과 직전 원본을 비교하고 유지하려던 특징이 여전히 있는지 확인하세요.\n\n### 대화는 기존 시간에 맞춰야 함\n\n지시가 대화나 소리 변경을 요청하지 않으면 워크플로는 원본 오디오를 이어받습니다. 무음 원본은 무음 결과를 반환하므로 수정할 기존 발화를 제공하지 않습니다. 대화 편집에서는 의도한 대사를 인용하고 화자를 식별하며 원래 대사가 차지한 시간에 새 단어를 맞추세요. 안내는 긴 대체 대사가 가능한 발화 구간을 넘자 잘린 사례를 보고합니다. 단어를 더 쓴다고 기존 숏 안에 추가 발화 시간이 생기지는 않습니다.\n\n들리는 대사와 보이는 연기를 함께 검토하세요. 빠진 단어, 타이밍이 어긋난 문구, 원치 않는 소리 변경을 식별할 수 있도록 원본 문구와 의도한 대체 사본을 보관하세요. 유용한 결과는 편집 장면 안의 수정된 발화 순간이며 렌더가 완료되었다는 이유만으로 충실한 전사문이라고 가정하는 것이 아닙니다.\n\n### 원본 한도와 이어받는 출력\n\n정확한 제작사 규격은 영상과 편집 프롬프트를 요구합니다. 지시는 앞뒤 공백을 제거한 뒤 1~4,096자여야 합니다. 클립은 URL 또는 인코딩된 MP4로 제공하며 최대 길이는 15초, 입력 한도는 50 MiB입니다. 각 변은 최소 160픽셀이어야 하고 정규화된 클립은 24 fps에서 최소 17프레임, 약 0.7초를 포함해야 합니다. 너무 긴 원본은 조용히 잘리지 않고 거절되며 너무 작은 원본은 처리 중 실패할 수 있습니다.\n\n문서상의 흐름은 24 fps로 처리하며 원본 길이와 화면비를 따릅니다. 720p 규격을 넘는 입력은 축소됩니다. 제조사는 1920×1088 원본이 1248×704로 반환되는 예를 제공합니다. 이 편집 규격에서 길이, 해상도, 화면비는 독립적인 출력 설정이 아닙니다. 샘플링 방식은 내부에서 처리하며 mode, version, seed, generate_audio 같은 필드는 명시된 요청 계약에서 받지 않습니다.\n\n새로 생성하는 숏의 움직임·스타일 영감으로만 영상을 쓰는 것은 다른 워크플로입니다. 이 편집기는 이미지 참조, 오디오 전용 입력, 마스크, 클립 확장 요청을 받지 않습니다. 편집 지시를 쓰기 전에 실제 바꿀 영상을 준비하고 선택한 길이를 유지하세요. 비동기 처리 뒤 제작사는 약 1시간 동안 유효한 임시 서명 전달 링크로 편집된 MP4를 반환합니다. 더 긴 편집에 쓰기 전에 결과를 저장하고 바뀐 물체, 주변 프레임, 타이밍, 오디오를 원본과 비교하세요.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "c91c0eaccaad41278a5f6501ffde9d661c36e3c91293641ef5adf26fdaead2fb",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ko",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Black Forest Labs: FLUX Video Edit</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>Black Forest Labs /</span><code>black-forest-labs/flux-video-edit</code><button type=\"button\" id=\"copy-id\">ID 복사</button></div><nav class=\"card-jump-nav\" aria-label=\"모델 카드 섹션\"><button type=\"button\" data-card-jump=\"overview\">시작하기</button><button type=\"button\" data-card-jump=\"methods\">입력 및 메서드</button><button type=\"button\" data-card-jump=\"pricing\">요금</button><button type=\"button\" data-card-jump=\"examples\">예제</button><button type=\"button\" data-card-jump=\"results\">결과</button><button type=\"button\" data-card-jump=\"aliases\">별칭</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API 메서드\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|black-forest-labs%2Fflux-video-edit\">동영상</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">시작하기</h3><p class=\"mdesc-full\">FLUX Video Edit [fast]는 작성된 편집 지시로 기존 클립을 변환합니다. 문서상의 원본 길이, 프레이밍, 오디오 제약 안에서 요소를 추가·제거·교체하고 배경이나 스타일을 바꾸며 기존 대화를 수정할 수 있습니다.</p><dl class=\"card-io\" data-card-io><div><dt>허용 입력</dt><dd>텍스트 · 이미지 · 오디오 · 동영상</dd></div><div><dt>결과</dt><dd>동영상</dd></div></dl><details class=\"card-about\"><summary>모델 소개</summary><p class=\"note-s\" data-model-method-boundary>이 설명은 모델의 기능을 다룹니다. Ailoot에서 사용할 수 있는 입력, 출력 및 옵션은 아래에 선택한 메서드별로 표시됩니다.</p><div class=\"mabout\" id=\"m-about\"><p>FLUX Video Edit [fast]는 기존 영상을 바꾸는 Black Forest Labs의 프롬프트 기반 워크플로입니다. 원본 클립 하나와 편집을 설명하는 지시를 받아 편집된 MP4를 반환합니다. 원본이 숏을 설정합니다. 길이, 프레이밍, 카메라 움직임, 타이밍이 시작 구조를 제공합니다. 의도한 변경을 불분명하게 만드는 완전히 새로운 장면 설명보다 무엇이 달라져야 하는지 프롬프트로 식별하세요.</p><h4>변경과 위치 명시</h4><p>문서상의 편집에는 물체·캐릭터 제거, 추가, 교체, 배경 재구성, 클립 스타일 변경, 보이는 텍스트 변경, 대화·소리 수정이 포함됩니다. 대상과 작업으로 시작하세요. 예를 들어 앉아 있는 사람과 방을 유지하면서 의자의 가방을 제거하거나 손동작을 바꾸지 않고 무지 머그를 파란 에나멜 머그로 교체할 수 있습니다. 비슷한 물체가 여러 개 보이면 위치, 외형, 역할로 대상을 구분하세요.</p><p>추가할 때는 위치, 크기, 관련 행동을 설명하세요. 소파 옆의 키 큰 빨간 램프는 숏 어딘가에 추가 램프를 놓으라는 것보다 구체적입니다. 교체할 때는 무엇을 무엇으로 바꾸며 어떤 움직임이나 접촉이 남아야 하는지 식별하세요. 제조사 프롬프트 안내는 변경을 완전히 명시하는 가장 짧은 지시를 권장하며 편집에 필요한 곳에 세부를 추가합니다. 범위를 평가할 수 없는 일반적인 개선을 요청하지 말고 원본 특징을 의도적으로 보존하세요.</p><h4>배경, 스타일, 러프 애니메이션</h4><p>배경 변경은 행동을 유지하면서 보이는 환경을 재구축할 수 있습니다. 제작사는 등반 표면을 다른 구조로 교체하고 새 접촉점을 지정해 캐릭터의 손발이 의미 있는 표면을 갖게 하는 예를 보여 줍니다. 실용적인 장면에서는 바뀐 주변과 기존 움직임이 의존하는 기하 구조를 설명하세요. 원래 행동과의 관계가 명확하면 새 배경을 평가하기 쉽습니다.</p><p>안내는 러프 애니메이션을 완성된 시각 표현으로 변환하는 예도 보여 줍니다. 어떤 블록아웃 물체가 의도한 차량이나 소품이 되는지 명시한 뒤 경로, 속도, 카메라 관계를 유지하세요. 스타일 변경에서는 미적 방향뿐 아니라 결과의 재질, 표면, 빛, 반사를 설명하세요. 같은 행동을 따르더라도 점토 같은 장면과 사진 같은 장면에는 다른 시각 단서가 필요합니다.</p><p>추가 수정은 첫 편집 결과를 새 원본으로 사용할 수 있습니다. 원본과 선택한 각 단계를 보관하고 다음 처리에 명확한 목적 하나를 부여하세요. 문서상의 예는 러프 미리보기에서 완성 배경으로 진행한 뒤 다른 조명 처리를 적용합니다. 매 처리 후 수정 클립과 직전 원본을 비교하고 유지하려던 특징이 여전히 있는지 확인하세요.</p><h4>대화는 기존 시간에 맞춰야 함</h4><p>지시가 대화나 소리 변경을 요청하지 않으면 워크플로는 원본 오디오를 이어받습니다. 무음 원본은 무음 결과를 반환하므로 수정할 기존 발화를 제공하지 않습니다. 대화 편집에서는 의도한 대사를 인용하고 화자를 식별하며 원래 대사가 차지한 시간에 새 단어를 맞추세요. 안내는 긴 대체 대사가 가능한 발화 구간을 넘자 잘린 사례를 보고합니다. 단어를 더 쓴다고 기존 숏 안에 추가 발화 시간이 생기지는 않습니다.</p><p>들리는 대사와 보이는 연기를 함께 검토하세요. 빠진 단어, 타이밍이 어긋난 문구, 원치 않는 소리 변경을 식별할 수 있도록 원본 문구와 의도한 대체 사본을 보관하세요. 유용한 결과는 편집 장면 안의 수정된 발화 순간이며 렌더가 완료되었다는 이유만으로 충실한 전사문이라고 가정하는 것이 아닙니다.</p><h4>원본 한도와 이어받는 출력</h4><p>정확한 제작사 규격은 영상과 편집 프롬프트를 요구합니다. 지시는 앞뒤 공백을 제거한 뒤 1~4,096자여야 합니다. 클립은 URL 또는 인코딩된 MP4로 제공하며 최대 길이는 15초, 입력 한도는 50 MiB입니다. 각 변은 최소 160픽셀이어야 하고 정규화된 클립은 24 fps에서 최소 17프레임, 약 0.7초를 포함해야 합니다. 너무 긴 원본은 조용히 잘리지 않고 거절되며 너무 작은 원본은 처리 중 실패할 수 있습니다.</p><p>문서상의 흐름은 24 fps로 처리하며 원본 길이와 화면비를 따릅니다. 720p 규격을 넘는 입력은 축소됩니다. 제조사는 1920×1088 원본이 1248×704로 반환되는 예를 제공합니다. 이 편집 규격에서 길이, 해상도, 화면비는 독립적인 출력 설정이 아닙니다. 샘플링 방식은 내부에서 처리하며 mode, version, seed, generate_audio 같은 필드는 명시된 요청 계약에서 받지 않습니다.</p><p>새로 생성하는 숏의 움직임·스타일 영감으로만 영상을 쓰는 것은 다른 워크플로입니다. 이 편집기는 이미지 참조, 오디오 전용 입력, 마스크, 클립 확장 요청을 받지 않습니다. 편집 지시를 쓰기 전에 실제 바꿀 영상을 준비하고 선택한 길이를 유지하세요. 비동기 처리 뒤 제작사는 약 1시간 동안 유효한 임시 서명 전달 링크로 편집된 MP4를 반환합니다. 더 긴 편집에 쓰기 전에 결과를 저장하고 바뀐 물체, 주변 프레임, 타이밍, 오디오를 원본과 비교하세요.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Ailoot에서 사용 가능 · 입력 및 메서드</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · 동영상</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>입력</dt><dd><code>text</code>, <code>image</code>, <code>audio</code>, <code>video</code></dd></div><div><dt>출력</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>필드</th><th>유형</th><th>요건</th><th>값과 한도</th><th>기본값</th></tr></thead><tbody><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>black-forest-labs/flux-video-edit</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>array</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>최소 항목 수: 1</div><div>최대 항목 수: 1</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>최소 길이: 1</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>메서드 매개변수와 수명 주기</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>매개변수</th><th>명세</th></tr></thead><tbody><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>content_type</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>application/json</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>required</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>model, input_references, prompt</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>material_types</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>text, image, audio, video</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>material_conditions</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>실제로 완료된 소유 동영상 자산의 콘텐츠 URL 하나와 함께 반환된 서명만 사용하세요. 자산 소유자, 유형 및 저장된 바이트 증빙이 요청과 일치해야 합니다.</td></tr></tbody></table></div><p>수명 주기: <code>asynchronous_job_then_owned_outputs</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code> · 실제로 반환된 id 또는 polling_url</p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">요금</h3><div class=\"card-result-process\" data-billing-basis><h5>최종 요금 계산 방식</h5><p class=\"note-s\">표시된 요율은 생성 전 비용을 예상하는 데 사용됩니다. 최종 청구액은 최초 생성에 기록된 비용으로 계산됩니다. 측정된 출력 길이와 예상 수량은 최종 청구 수량이 아닙니다.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.</p><dl data-price-conditions><dt>빠른 모드</dt><dd>미지정 <span class=\"note-s\">빠른 모드를 선택한 경우</span></dd><dt>Flex 모드</dt><dd>미지정 <span class=\"note-s\">flex 모드를 선택한 경우</span></dd><dt>최대 추론 수준</dt><dd>미지정 <span class=\"note-s\">최대 추론 수준에 default 조정값을 적용하는 경우</span></dd></dl></div><div data-declared-tariff-pricing><h4>비교용 예상 요금</h4><h4>설정별 가격</h4><p class=\"note-s\">각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>설정</th><th>요금표</th><th>예측 수량</th><th>과금 단위</th><th>과금 조건</th><th>요금</th></tr></thead><tbody><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>기본 토큰 요금</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>기본 요금</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>—</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>—</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>입력 · 입력 토큰 · 비교 전용 추정치</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>출력 · 출력 토큰 · 비교 전용 추정치</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 읽기 · 비교 전용 추정치</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 쓰기 · 비교 전용 추정치</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 쓰기, 1시간 · 비교 전용 추정치</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>동영상 요금</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>동영상 초당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>이 가격 키에는 추가 조건이 명시되어 있지 않습니다.</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격 · 비교 전용 추정치</span> <b>$0.06</b> <span class=\"price-unit\">동영상 초당</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>예상 생성 비용</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>1회 생성 예상치</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>—</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>—</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 예상 생성 비용 · 비교 전용 추정치</span> <b>$0.06</b> <span class=\"price-unit\">생성 전 추정치</span></div><p class=\"note-s\">이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. <a href=\"/docs/ko/billing/reserve/\">금액 확보와 정산 방식 →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">요청 예제</h3><h4>Ailoot Ultra · 동영상</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"코드 예제 형식\"><button class=\"cg-tab\" id=\"model-code-1095-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1095-panel-0\" aria-selected=\"true\" tabindex=\"0\">실제 입력을 사용하고 결과 전체를 보관하세요</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"코드 복사\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1095-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1095-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_REFERENCES_JSON\n: &quot;${AILOOT_PROMPT:?Set the actual documented input value}&quot;\nexport AILOOT_PROMPT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;black-forest-labs/flux-video-edit&#39;, &#39;input_references&#39;: &#39;${ACTUAL_OWNED_INPUT_REFERENCES}&#39;, &#39;prompt&#39;: &#39;${ACTUAL_EDIT_PROMPT}&#39;}\nrequest[&#39;input_references&#39;]=json.loads(os.environ[&#39;AILOOT_INPUT_REFERENCES_JSON&#39;])\nrequest[&#39;prompt&#39;]=os.environ[&#39;AILOOT_PROMPT&#39;]\nPath(&#39;request.json&#39;).write_text(json.dumps(request,ensure_ascii=False),encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">결과 수신 및 저장</h3><h4>Ailoot Ultra · 동영상</h4><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li></ul><h5>완료된 자산 모두 저장</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"코드 예제 형식\"><button class=\"cg-tab\" id=\"model-code-1096-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1096-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET · 완료된 모든 자산 조회</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"코드 복사\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1096-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1096-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}&quot;\nexport AILOOT_STATUS_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[&quot;AILOOT_STATUS_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose the actual completed status file&quot;)\nr=json.loads(f.read_text())\nif r.get(&quot;status&quot;)!=&quot;completed&quot; or not isinstance(r.get(&quot;data&quot;),list) or not r[&quot;data&quot;]:raise SystemExit(&quot;Wait for a completed status with asset paths&quot;)\nurls=[]\nfor x in r[&quot;data&quot;]:\n    if not isinstance(x,str) or &quot;\\n&quot; in x or &quot;\\r&quot; in x:raise SystemExit(&quot;Invalid asset path&quot;)\n    u=urljoin(&quot;https://api.ailoot.ai&quot;,x)\n    z=urlsplit(u)\n    if z.scheme!=&quot;https&quot; or z.netloc!=&quot;api.ailoot.ai&quot; or z.username or z.password:raise SystemExit(&quot;Use the actual Ailoot asset paths from status&quot;)\n    urls.append(u)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; \\\n    -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o &quot;video-${index}.mp4&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\n</code></pre></div></div></div><div class=\"card-result-process\" data-all-results><h5>완료된 결과 모두 보관</h5><p class=\"note-s\">완료된 모든 동영상과 반환된 파일을 저장하고, 실제로 반환된 모든 자산 URL에서 가져오세요.</p><p class=\"note-s\">전체 응답과 헤더, 실제로 생성된 모든 출력, 최초로 반환된 식별자와 모든 사용량 필드를 보관하세요. 생성 요청을 다시 제출하지 말고 최초 작업을 복구하세요.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>원래 응답을 확인해야 할 경우</h5><p class=\"note-s\">X-Client-Request-ID, X-Ailoot-Task-Id 및 실제로 반환된 id/polling_url을 보존하세요. 원래 작업을 계속 진행하고 생성을 다시 제출하지 마세요.</p></div><details class=\"card-about\" data-output-fields><summary>응답 필드</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>필드</th><th>유형</th></tr></thead><tbody><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span></td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span></td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span></td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">outputs[]</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">별칭</h3><h4>모델 별칭</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=black-forest-labs%2Fflux-video-edit&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-video-edit&amp;fmt=videos\"><code>black-forest-labs/flux-video-edit</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\">위에 표시된 메서드 경로를 사용하세요.</p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=black-forest-labs%2Fflux-video-edit&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-video-edit&amp;fmt=videos\"><code>black-forest-labs/flux-video-edit</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "black-forest-labs/flux-video-edit",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|black-forest-labs%2Fflux-video-edit",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "표시된 요율은 생성 전 비용을 예상하는 데 사용됩니다. 최종 청구액은 최초 생성에 기록된 비용으로 계산됩니다. 측정된 출력 길이와 예상 수량은 최종 청구 수량이 아닙니다.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "X-Client-Request-ID, X-Ailoot-Task-Id 및 실제로 반환된 id/polling_url을 보존하세요. 원래 작업을 계속 진행하고 생성을 다시 제출하지 마세요."
            },
            "outputs": {
              "all_results": "전체 응답과 헤더, 실제로 생성된 모든 출력, 최초로 반환된 식별자와 모든 사용량 필드를 보관하세요. 생성 요청을 다시 제출하지 말고 최초 작업을 복구하세요.",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux-video-edit"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "const": "video_url"
                    },
                    "video_url": {
                      "additionalProperties": false,
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "type",
                    "video_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 1,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "max_length": 4096,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input_references": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "const": "video_url"
                      },
                      "video_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "type",
                      "video_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-video-edit"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 4096,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_references",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "black-forest-labs/flux-video-edit",
                "prompt": "${ACTUAL_EDIT_PROMPT}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "실제로 완료된 소유 동영상 자산의 콘텐츠 URL 하나와 함께 반환된 서명만 사용하세요. 자산 소유자, 유형 및 저장된 바이트 증빙이 요청과 일치해야 합니다."
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "prompt"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "실제로 반환된 id 또는 polling_url",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "예상 생성 비용",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\n: \"${AILOOT_PROMPT:?Set the actual documented input value}\"\nexport AILOOT_PROMPT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'black-forest-labs/flux-video-edit', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'prompt': '${ACTUAL_EDIT_PROMPT}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['prompt']=os.environ['AILOOT_PROMPT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "동영상",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.06",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.06",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "black-forest-labs/flux-video-edit",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "55c44f76f85b320680d012bb7287fadfca87b0848dc1abad63b77b45e5e80bdf",
    "input_html_sha256": "1bfcccab469404f39dde8cddcc0ca063d3e05ded41b938d5717ed9091894dee4",
    "private_audit_sha256": "5122fdae5dc79e856d12c3e73e6df2765e8e6a11a0f9dab1c72b4f5325be0dfc",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/black-forest-labs-flux-video-edit/",
    "description": "FLUX Video Edit [fast]는 작성된 편집 지시로 기존 클립을 변환합니다. 문서상의 원본 길이, 프레이밍, 오디오 제약 안에서 요소를 추가·제거·교체하고 배경이나 스타일을 바꾸며 기존 대화를 수정할 수 있습니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/black-forest-labs-flux-video-edit/index.md",
    "title": "Black Forest Labs: FLUX Video Edit — Ailoot",
    "url": "https://ailoot.ai/models/ko/black-forest-labs-flux-video-edit/"
  },
  "rawModel": {
    "about": "FLUX Video Edit [fast]는 기존 영상을 바꾸는 Black Forest Labs의 프롬프트 기반 워크플로입니다. 원본 클립 하나와 편집을 설명하는 지시를 받아 편집된 MP4를 반환합니다. 원본이 숏을 설정합니다. 길이, 프레이밍, 카메라 움직임, 타이밍이 시작 구조를 제공합니다. 의도한 변경을 불분명하게 만드는 완전히 새로운 장면 설명보다 무엇이 달라져야 하는지 프롬프트로 식별하세요.\n\n### 변경과 위치 명시\n\n문서상의 편집에는 물체·캐릭터 제거, 추가, 교체, 배경 재구성, 클립 스타일 변경, 보이는 텍스트 변경, 대화·소리 수정이 포함됩니다. 대상과 작업으로 시작하세요. 예를 들어 앉아 있는 사람과 방을 유지하면서 의자의 가방을 제거하거나 손동작을 바꾸지 않고 무지 머그를 파란 에나멜 머그로 교체할 수 있습니다. 비슷한 물체가 여러 개 보이면 위치, 외형, 역할로 대상을 구분하세요.\n\n추가할 때는 위치, 크기, 관련 행동을 설명하세요. 소파 옆의 키 큰 빨간 램프는 숏 어딘가에 추가 램프를 놓으라는 것보다 구체적입니다. 교체할 때는 무엇을 무엇으로 바꾸며 어떤 움직임이나 접촉이 남아야 하는지 식별하세요. 제조사 프롬프트 안내는 변경을 완전히 명시하는 가장 짧은 지시를 권장하며 편집에 필요한 곳에 세부를 추가합니다. 범위를 평가할 수 없는 일반적인 개선을 요청하지 말고 원본 특징을 의도적으로 보존하세요.\n\n### 배경, 스타일, 러프 애니메이션\n\n배경 변경은 행동을 유지하면서 보이는 환경을 재구축할 수 있습니다. 제작사는 등반 표면을 다른 구조로 교체하고 새 접촉점을 지정해 캐릭터의 손발이 의미 있는 표면을 갖게 하는 예를 보여 줍니다. 실용적인 장면에서는 바뀐 주변과 기존 움직임이 의존하는 기하 구조를 설명하세요. 원래 행동과의 관계가 명확하면 새 배경을 평가하기 쉽습니다.\n\n안내는 러프 애니메이션을 완성된 시각 표현으로 변환하는 예도 보여 줍니다. 어떤 블록아웃 물체가 의도한 차량이나 소품이 되는지 명시한 뒤 경로, 속도, 카메라 관계를 유지하세요. 스타일 변경에서는 미적 방향뿐 아니라 결과의 재질, 표면, 빛, 반사를 설명하세요. 같은 행동을 따르더라도 점토 같은 장면과 사진 같은 장면에는 다른 시각 단서가 필요합니다.\n\n추가 수정은 첫 편집 결과를 새 원본으로 사용할 수 있습니다. 원본과 선택한 각 단계를 보관하고 다음 처리에 명확한 목적 하나를 부여하세요. 문서상의 예는 러프 미리보기에서 완성 배경으로 진행한 뒤 다른 조명 처리를 적용합니다. 매 처리 후 수정 클립과 직전 원본을 비교하고 유지하려던 특징이 여전히 있는지 확인하세요.\n\n### 대화는 기존 시간에 맞춰야 함\n\n지시가 대화나 소리 변경을 요청하지 않으면 워크플로는 원본 오디오를 이어받습니다. 무음 원본은 무음 결과를 반환하므로 수정할 기존 발화를 제공하지 않습니다. 대화 편집에서는 의도한 대사를 인용하고 화자를 식별하며 원래 대사가 차지한 시간에 새 단어를 맞추세요. 안내는 긴 대체 대사가 가능한 발화 구간을 넘자 잘린 사례를 보고합니다. 단어를 더 쓴다고 기존 숏 안에 추가 발화 시간이 생기지는 않습니다.\n\n들리는 대사와 보이는 연기를 함께 검토하세요. 빠진 단어, 타이밍이 어긋난 문구, 원치 않는 소리 변경을 식별할 수 있도록 원본 문구와 의도한 대체 사본을 보관하세요. 유용한 결과는 편집 장면 안의 수정된 발화 순간이며 렌더가 완료되었다는 이유만으로 충실한 전사문이라고 가정하는 것이 아닙니다.\n\n### 원본 한도와 이어받는 출력\n\n정확한 제작사 규격은 영상과 편집 프롬프트를 요구합니다. 지시는 앞뒤 공백을 제거한 뒤 1~4,096자여야 합니다. 클립은 URL 또는 인코딩된 MP4로 제공하며 최대 길이는 15초, 입력 한도는 50 MiB입니다. 각 변은 최소 160픽셀이어야 하고 정규화된 클립은 24 fps에서 최소 17프레임, 약 0.7초를 포함해야 합니다. 너무 긴 원본은 조용히 잘리지 않고 거절되며 너무 작은 원본은 처리 중 실패할 수 있습니다.\n\n문서상의 흐름은 24 fps로 처리하며 원본 길이와 화면비를 따릅니다. 720p 규격을 넘는 입력은 축소됩니다. 제조사는 1920×1088 원본이 1248×704로 반환되는 예를 제공합니다. 이 편집 규격에서 길이, 해상도, 화면비는 독립적인 출력 설정이 아닙니다. 샘플링 방식은 내부에서 처리하며 mode, version, seed, generate_audio 같은 필드는 명시된 요청 계약에서 받지 않습니다.\n\n새로 생성하는 숏의 움직임·스타일 영감으로만 영상을 쓰는 것은 다른 워크플로입니다. 이 편집기는 이미지 참조, 오디오 전용 입력, 마스크, 클립 확장 요청을 받지 않습니다. 편집 지시를 쓰기 전에 실제 바꿀 영상을 준비하고 선택한 길이를 유지하세요. 비동기 처리 뒤 제작사는 약 1시간 동안 유효한 임시 서명 전달 링크로 편집된 MP4를 반환합니다. 더 긴 편집에 쓰기 전에 결과를 저장하고 바뀐 물체, 주변 프레임, 타이밍, 오디오를 원본과 비교하세요.",
    "alias_of": null,
    "aliases": [],
    "author": "Black Forest Labs",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "video"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.06",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "구성의 전체 요금 정보는 상세 정보에서 확인할 수 있습니다."
      }
    ],
    "ctx": null,
    "formats": [
      "videos"
    ],
    "id": "black-forest-labs/flux-video-edit",
    "input": [
      "text",
      "image",
      "audio",
      "video"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "표시된 요율은 생성 전 비용을 예상하는 데 사용됩니다. 최종 청구액은 최초 생성에 기록된 비용으로 계산됩니다. 측정된 출력 길이와 예상 수량은 최종 청구 수량이 아닙니다.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "X-Client-Request-ID, X-Ailoot-Task-Id 및 실제로 반환된 id/polling_url을 보존하세요. 원래 작업을 계속 진행하고 생성을 다시 제출하지 마세요."
            },
            "outputs": {
              "all_results": "전체 응답과 헤더, 실제로 생성된 모든 출력, 최초로 반환된 식별자와 모든 사용량 필드를 보관하세요. 생성 요청을 다시 제출하지 말고 최초 작업을 복구하세요.",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux-video-edit"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "const": "video_url"
                    },
                    "video_url": {
                      "additionalProperties": false,
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "type",
                    "video_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 1,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "max_length": 4096,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input_references": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "const": "video_url"
                      },
                      "video_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "type",
                      "video_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-video-edit"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 4096,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_references",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "black-forest-labs/flux-video-edit",
                "prompt": "${ACTUAL_EDIT_PROMPT}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "실제로 완료된 소유 동영상 자산의 콘텐츠 URL 하나와 함께 반환된 서명만 사용하세요. 자산 소유자, 유형 및 저장된 바이트 증빙이 요청과 일치해야 합니다."
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "prompt"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "실제로 반환된 id 또는 polling_url",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "예상 생성 비용",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\n: \"${AILOOT_PROMPT:?Set the actual documented input value}\"\nexport AILOOT_PROMPT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'black-forest-labs/flux-video-edit', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'prompt': '${ACTUAL_EDIT_PROMPT}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['prompt']=os.environ['AILOOT_PROMPT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "동영상",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.06",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.06",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "black-forest-labs/flux-video-edit",
        "request_model_id": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra"
      }
    ],
    "name": "Black Forest Labs: FLUX Video Edit",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.06,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.06,
      "varies": false
    },
    "short": "FLUX Video Edit [fast]는 작성된 편집 지시로 기존 클립을 변환합니다. 문서상의 원본 길이, 프레이밍, 오디오 제약 안에서 요소를 추가·제거·교체하고 배경이나 스타일을 바꾸며 기존 대화를 수정할 수 있습니다."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "FLUX Video Edit [fast]는 작성된 편집 지시로 기존 클립을 변환합니다. 문서상의 원본 길이, 프레이밍, 오디오 제약 안에서 요소를 추가·제거·교체하고 배경이나 스타일을 바꾸며 기존 대화를 수정할 수 있습니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "ec1d897560b96ee15d6c9cd5debc23b67f988bb481770e024dc6f3dc71685b05",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "84697f4be2a0e981cdf4b8f8ce2eb592c48a4f168423d7a541417388b1e929b3"
}
