{
  "aboutHtml": "<p>FLUX Video Upscale은 Black Forest Labs의 FLUX 3 기반 영상 초해상도 워크플로입니다. 기존 클립을 받아 원본 프레이밍과 오디오를 결과에 이어받은 확대 MP4를 반환합니다. 선택적인 짧은 설명으로 강화되는 시각 세부를 유도할 수 있습니다. 두 모드는 모든 큰 이미지를 똑같이 충실한 복원으로 취급하지 않고 제공된 외형에 가깝게 유지할지 더 적극적으로 세부를 생성할지 의미 있는 선택을 제공합니다.</p><h4>정밀 또는 창의적 보강 선택</h4><p>creativity 설정이 모드를 선택합니다. 값 0은 정밀하고 원본에 충실한 규격입니다. 제조사는 얼굴, 제품, 브랜드 자산의 정체성을 유지해야 할 때 권장합니다. 값 1은 창의적인 세부 보강을 활성화하며 기본값입니다. 질감을 더 적극적으로 복원하거나 만들어 낼 수 있어 생성 영상, 풍경, 군중, 세부를 창의적으로 발전시킬 표면에 유용합니다.</p><p>제조사는 창의적 보강이 얼굴과 제품을 같은 수준으로 엄격히 보존하지는 않는다고 명시합니다. 얼굴 외형, 제품 윤곽, 글자, 재질 무늬, 로고 등 식별 가능하게 남아야 할 특징을 확인하세요. 더 선명한 시각 결과에도 달라지거나 새로 만들어진 세부가 있을 수 있습니다. 제품 시연에서는 질감이 더 정교하다는 이유만으로 버전을 고르지 말고 의도한 제품 외형을 검토 기준으로 삼으세요.</p><p>선택적인 프롬프트는 보강을 유도할 클립 내용을 설명합니다. 설명이 비어 있으면 중립적인 확대를 요청합니다. 원래의 생성 장면 요구사항은 이끼 낀 돌담, 부드러운 낮빛, 섬세한 잎 질감을 지정할 수 있습니다. 문구는 정밀하게 다듬을 자료에 관한 것으로 유지하세요. 물체 교체, 배경 재구축, 대화 변경은 편집 결정에 속하며 이 규격은 원본 오디오 트랙을 유지합니다.</p><h4>배율과 출력 프레임 면적</h4><p>문서상의 upscale_factor 범위는 1.5~3이며 기본값은 2입니다. 화면비를 보존하면서 원본 해상도를 확대합니다. 선택한 배율과 입력 크기가 의도한 출력을 결정하므로 가로 클립과 세로 구도는 실제 프레임을 바탕으로 계획해야 합니다. 어느 정도 확대가 유용한지 선택하기 전에 목표 표시 크기를 준비하세요.</p><p>정확한 규격은 각 출력 프레임을 제조사 메가픽셀 단위 13.75로 제한합니다. 문서는 한 단위를 1,048,576픽셀로 정의하므로 상한은 14,417,920픽셀, 약 1,440만 픽셀입니다. 이는 안내의 반올림된 14.4메가픽셀 표현을 설명합니다. 따라서 큰 원본은 요청 배율보다 덜 확대될 수 있습니다. 3배 요청이 언제나 원본 각 변을 3배로 만든다고 가정하지 말고 전달된 크기를 확인하세요.</p><p>공개 원본 해상도 상한은 2560×1440입니다. 이 워크플로는 적격 원본을 4K 이상으로 확대하지만 높은 출력을 원한다는 이유만으로 이미 더 큰 원본을 받지는 않습니다. 문서상의 규격을 쓰기 전에 축소하거나 적절한 작업용 사본을 준비하세요. 최종 비교가 크기를 바꾼 중간 자료에만 한정되지 않도록 원본 녹화를 별도로 보관하세요.</p><h4>짧고 판독하기 좋은 원본 준비</h4><p>제조사의 일반 준비 안내는 원본을 20초와 50 MB로 제한합니다. 클립은 영상 URL 또는 인코딩된 MP4로 제공합니다. 정확한 참조는 첫 20초를 처리한다고 설명합니다. 길이가 조금 넘으면 해당 지점까지만 처리될 수 있지만 상당히 긴 클립은 거절됩니다. 수치적인 허용 오차는 공개되지 않았습니다. 지정되지 않은 경계 동작에 의존하지 말고 의도한 20초 이하 구간으로 자르세요.</p><p>가능한 가장 적게 압축된 버전을 선택하세요. 압축 아티팩트는 업스케일러가 복원할 실제 세부의 양을 제한하며 창의적 보강은 원본 장면에 무엇이 있었는지 확립하지 않고도 그럴듯한 질감을 만들 수 있습니다. 선택한 클립을 확대하기 전에 의도한 편집과 자르기를 완료하세요. 예를 들어 제품 숏을 먼저 완성하고 유용한 행동 구간을 선택한 뒤 변경하지 않은 원본을 비교용으로 유지하면서 최종 선택을 확대할 수 있습니다.</p><p>결과는 원본 오디오 트랙을 유지합니다. 특히 선택 구간의 시작과 끝에서 화면과의 타이밍을 살피세요. 문서상의 규격은 독립적인 프레임 레이트 선택기, 새 대화 생성, 이미지 참조 편집 제어를 제공하지 않습니다. 목적은 확대 영상과 선택한 세부 처리이며 처리 구간 안의 원본 시간·소리 자료를 유지합니다.</p><h4>전달된 클립 보관과 검토</h4><p>제작사 워크플로는 비동기입니다. 제출한 작업은 식별자와 상태 확인 위치를 제공하고 완료 결과에는 서명된 MP4 전달 링크가 포함됩니다. 링크는 약 1시간 후 만료됩니다. 임시 위치에 의존하지 말고 실제 클립, 원본, 선택 배율, creativity 모드, 내용 설명을 보관하세요. 실패나 검토 제한 상태는 완료된 영상과 구분하세요.</p><p>개별 프레임에서 얼굴, 표식, 표면 변화를 검토한 뒤 시퀀스를 보며 연속성, 움직임, 오디오 정렬을 확인하세요. 정밀 출력과 창의적 출력은 서로 다른 시각 요구에 답합니다. 유용한 결과물은 의도한 표시 크기에서 선택한 충실도 목표를 충족하는 확대 클립입니다. 해상도가 커졌다는 사실만으로 원래 정체성, 문구, 미세 세부가 정확히 유지되었다는 증거가 되지는 않습니다.</p>",
  "aboutText": "FLUX Video Upscale은 Black Forest Labs의 FLUX 3 기반 영상 초해상도 워크플로입니다. 기존 클립을 받아 원본 프레이밍과 오디오를 결과에 이어받은 확대 MP4를 반환합니다. 선택적인 짧은 설명으로 강화되는 시각 세부를 유도할 수 있습니다. 두 모드는 모든 큰 이미지를 똑같이 충실한 복원으로 취급하지 않고 제공된 외형에 가깝게 유지할지 더 적극적으로 세부를 생성할지 의미 있는 선택을 제공합니다.\n\n### 정밀 또는 창의적 보강 선택\n\ncreativity 설정이 모드를 선택합니다. 값 0은 정밀하고 원본에 충실한 규격입니다. 제조사는 얼굴, 제품, 브랜드 자산의 정체성을 유지해야 할 때 권장합니다. 값 1은 창의적인 세부 보강을 활성화하며 기본값입니다. 질감을 더 적극적으로 복원하거나 만들어 낼 수 있어 생성 영상, 풍경, 군중, 세부를 창의적으로 발전시킬 표면에 유용합니다.\n\n제조사는 창의적 보강이 얼굴과 제품을 같은 수준으로 엄격히 보존하지는 않는다고 명시합니다. 얼굴 외형, 제품 윤곽, 글자, 재질 무늬, 로고 등 식별 가능하게 남아야 할 특징을 확인하세요. 더 선명한 시각 결과에도 달라지거나 새로 만들어진 세부가 있을 수 있습니다. 제품 시연에서는 질감이 더 정교하다는 이유만으로 버전을 고르지 말고 의도한 제품 외형을 검토 기준으로 삼으세요.\n\n선택적인 프롬프트는 보강을 유도할 클립 내용을 설명합니다. 설명이 비어 있으면 중립적인 확대를 요청합니다. 원래의 생성 장면 요구사항은 이끼 낀 돌담, 부드러운 낮빛, 섬세한 잎 질감을 지정할 수 있습니다. 문구는 정밀하게 다듬을 자료에 관한 것으로 유지하세요. 물체 교체, 배경 재구축, 대화 변경은 편집 결정에 속하며 이 규격은 원본 오디오 트랙을 유지합니다.\n\n### 배율과 출력 프레임 면적\n\n문서상의 upscale_factor 범위는 1.5~3이며 기본값은 2입니다. 화면비를 보존하면서 원본 해상도를 확대합니다. 선택한 배율과 입력 크기가 의도한 출력을 결정하므로 가로 클립과 세로 구도는 실제 프레임을 바탕으로 계획해야 합니다. 어느 정도 확대가 유용한지 선택하기 전에 목표 표시 크기를 준비하세요.\n\n정확한 규격은 각 출력 프레임을 제조사 메가픽셀 단위 13.75로 제한합니다. 문서는 한 단위를 1,048,576픽셀로 정의하므로 상한은 14,417,920픽셀, 약 1,440만 픽셀입니다. 이는 안내의 반올림된 14.4메가픽셀 표현을 설명합니다. 따라서 큰 원본은 요청 배율보다 덜 확대될 수 있습니다. 3배 요청이 언제나 원본 각 변을 3배로 만든다고 가정하지 말고 전달된 크기를 확인하세요.\n\n공개 원본 해상도 상한은 2560×1440입니다. 이 워크플로는 적격 원본을 4K 이상으로 확대하지만 높은 출력을 원한다는 이유만으로 이미 더 큰 원본을 받지는 않습니다. 문서상의 규격을 쓰기 전에 축소하거나 적절한 작업용 사본을 준비하세요. 최종 비교가 크기를 바꾼 중간 자료에만 한정되지 않도록 원본 녹화를 별도로 보관하세요.\n\n### 짧고 판독하기 좋은 원본 준비\n\n제조사의 일반 준비 안내는 원본을 20초와 50 MB로 제한합니다. 클립은 영상 URL 또는 인코딩된 MP4로 제공합니다. 정확한 참조는 첫 20초를 처리한다고 설명합니다. 길이가 조금 넘으면 해당 지점까지만 처리될 수 있지만 상당히 긴 클립은 거절됩니다. 수치적인 허용 오차는 공개되지 않았습니다. 지정되지 않은 경계 동작에 의존하지 말고 의도한 20초 이하 구간으로 자르세요.\n\n가능한 가장 적게 압축된 버전을 선택하세요. 압축 아티팩트는 업스케일러가 복원할 실제 세부의 양을 제한하며 창의적 보강은 원본 장면에 무엇이 있었는지 확립하지 않고도 그럴듯한 질감을 만들 수 있습니다. 선택한 클립을 확대하기 전에 의도한 편집과 자르기를 완료하세요. 예를 들어 제품 숏을 먼저 완성하고 유용한 행동 구간을 선택한 뒤 변경하지 않은 원본을 비교용으로 유지하면서 최종 선택을 확대할 수 있습니다.\n\n결과는 원본 오디오 트랙을 유지합니다. 특히 선택 구간의 시작과 끝에서 화면과의 타이밍을 살피세요. 문서상의 규격은 독립적인 프레임 레이트 선택기, 새 대화 생성, 이미지 참조 편집 제어를 제공하지 않습니다. 목적은 확대 영상과 선택한 세부 처리이며 처리 구간 안의 원본 시간·소리 자료를 유지합니다.\n\n### 전달된 클립 보관과 검토\n\n제작사 워크플로는 비동기입니다. 제출한 작업은 식별자와 상태 확인 위치를 제공하고 완료 결과에는 서명된 MP4 전달 링크가 포함됩니다. 링크는 약 1시간 후 만료됩니다. 임시 위치에 의존하지 말고 실제 클립, 원본, 선택 배율, creativity 모드, 내용 설명을 보관하세요. 실패나 검토 제한 상태는 완료된 영상과 구분하세요.\n\n개별 프레임에서 얼굴, 표식, 표면 변화를 검토한 뒤 시퀀스를 보며 연속성, 움직임, 오디오 정렬을 확인하세요. 정밀 출력과 창의적 출력은 서로 다른 시각 요구에 답합니다. 유용한 결과물은 의도한 표시 크기에서 선택한 충실도 목표를 충족하는 확대 클립입니다. 해상도가 커졌다는 사실만으로 원래 정체성, 문구, 미세 세부가 정확히 유지되었다는 증거가 되지는 않습니다.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "c220cbf6c15e089c8e1157d3e6ec5319736ce1839388aed3b8fcc7774641c037",
    "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 Upscale</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-upscale</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-upscale\">동영상</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 Upscale은 원본에 충실한 또는 창의적인 세부 보강으로 기존 클립을 확대합니다. 문서상의 규격은 1.5~3배 확대를 제공하고 원본 오디오와 프레이밍을 보존하며 원본 길이, 입력 해상도, 출력 프레임 면적을 제한합니다.</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 Upscale은 Black Forest Labs의 FLUX 3 기반 영상 초해상도 워크플로입니다. 기존 클립을 받아 원본 프레이밍과 오디오를 결과에 이어받은 확대 MP4를 반환합니다. 선택적인 짧은 설명으로 강화되는 시각 세부를 유도할 수 있습니다. 두 모드는 모든 큰 이미지를 똑같이 충실한 복원으로 취급하지 않고 제공된 외형에 가깝게 유지할지 더 적극적으로 세부를 생성할지 의미 있는 선택을 제공합니다.</p><h4>정밀 또는 창의적 보강 선택</h4><p>creativity 설정이 모드를 선택합니다. 값 0은 정밀하고 원본에 충실한 규격입니다. 제조사는 얼굴, 제품, 브랜드 자산의 정체성을 유지해야 할 때 권장합니다. 값 1은 창의적인 세부 보강을 활성화하며 기본값입니다. 질감을 더 적극적으로 복원하거나 만들어 낼 수 있어 생성 영상, 풍경, 군중, 세부를 창의적으로 발전시킬 표면에 유용합니다.</p><p>제조사는 창의적 보강이 얼굴과 제품을 같은 수준으로 엄격히 보존하지는 않는다고 명시합니다. 얼굴 외형, 제품 윤곽, 글자, 재질 무늬, 로고 등 식별 가능하게 남아야 할 특징을 확인하세요. 더 선명한 시각 결과에도 달라지거나 새로 만들어진 세부가 있을 수 있습니다. 제품 시연에서는 질감이 더 정교하다는 이유만으로 버전을 고르지 말고 의도한 제품 외형을 검토 기준으로 삼으세요.</p><p>선택적인 프롬프트는 보강을 유도할 클립 내용을 설명합니다. 설명이 비어 있으면 중립적인 확대를 요청합니다. 원래의 생성 장면 요구사항은 이끼 낀 돌담, 부드러운 낮빛, 섬세한 잎 질감을 지정할 수 있습니다. 문구는 정밀하게 다듬을 자료에 관한 것으로 유지하세요. 물체 교체, 배경 재구축, 대화 변경은 편집 결정에 속하며 이 규격은 원본 오디오 트랙을 유지합니다.</p><h4>배율과 출력 프레임 면적</h4><p>문서상의 upscale_factor 범위는 1.5~3이며 기본값은 2입니다. 화면비를 보존하면서 원본 해상도를 확대합니다. 선택한 배율과 입력 크기가 의도한 출력을 결정하므로 가로 클립과 세로 구도는 실제 프레임을 바탕으로 계획해야 합니다. 어느 정도 확대가 유용한지 선택하기 전에 목표 표시 크기를 준비하세요.</p><p>정확한 규격은 각 출력 프레임을 제조사 메가픽셀 단위 13.75로 제한합니다. 문서는 한 단위를 1,048,576픽셀로 정의하므로 상한은 14,417,920픽셀, 약 1,440만 픽셀입니다. 이는 안내의 반올림된 14.4메가픽셀 표현을 설명합니다. 따라서 큰 원본은 요청 배율보다 덜 확대될 수 있습니다. 3배 요청이 언제나 원본 각 변을 3배로 만든다고 가정하지 말고 전달된 크기를 확인하세요.</p><p>공개 원본 해상도 상한은 2560×1440입니다. 이 워크플로는 적격 원본을 4K 이상으로 확대하지만 높은 출력을 원한다는 이유만으로 이미 더 큰 원본을 받지는 않습니다. 문서상의 규격을 쓰기 전에 축소하거나 적절한 작업용 사본을 준비하세요. 최종 비교가 크기를 바꾼 중간 자료에만 한정되지 않도록 원본 녹화를 별도로 보관하세요.</p><h4>짧고 판독하기 좋은 원본 준비</h4><p>제조사의 일반 준비 안내는 원본을 20초와 50 MB로 제한합니다. 클립은 영상 URL 또는 인코딩된 MP4로 제공합니다. 정확한 참조는 첫 20초를 처리한다고 설명합니다. 길이가 조금 넘으면 해당 지점까지만 처리될 수 있지만 상당히 긴 클립은 거절됩니다. 수치적인 허용 오차는 공개되지 않았습니다. 지정되지 않은 경계 동작에 의존하지 말고 의도한 20초 이하 구간으로 자르세요.</p><p>가능한 가장 적게 압축된 버전을 선택하세요. 압축 아티팩트는 업스케일러가 복원할 실제 세부의 양을 제한하며 창의적 보강은 원본 장면에 무엇이 있었는지 확립하지 않고도 그럴듯한 질감을 만들 수 있습니다. 선택한 클립을 확대하기 전에 의도한 편집과 자르기를 완료하세요. 예를 들어 제품 숏을 먼저 완성하고 유용한 행동 구간을 선택한 뒤 변경하지 않은 원본을 비교용으로 유지하면서 최종 선택을 확대할 수 있습니다.</p><p>결과는 원본 오디오 트랙을 유지합니다. 특히 선택 구간의 시작과 끝에서 화면과의 타이밍을 살피세요. 문서상의 규격은 독립적인 프레임 레이트 선택기, 새 대화 생성, 이미지 참조 편집 제어를 제공하지 않습니다. 목적은 확대 영상과 선택한 세부 처리이며 처리 구간 안의 원본 시간·소리 자료를 유지합니다.</p><h4>전달된 클립 보관과 검토</h4><p>제작사 워크플로는 비동기입니다. 제출한 작업은 식별자와 상태 확인 위치를 제공하고 완료 결과에는 서명된 MP4 전달 링크가 포함됩니다. 링크는 약 1시간 후 만료됩니다. 임시 위치에 의존하지 말고 실제 클립, 원본, 선택 배율, creativity 모드, 내용 설명을 보관하세요. 실패나 검토 제한 상태는 완료된 영상과 구분하세요.</p><p>개별 프레임에서 얼굴, 표식, 표면 변화를 검토한 뒤 시퀀스를 보며 연속성, 움직임, 오디오 정렬을 확인하세요. 정밀 출력과 창의적 출력은 서로 다른 시각 요구에 답합니다. 유용한 결과물은 의도한 표시 크기에서 선택한 충실도 목표를 충족하는 확대 클립입니다. 해상도가 커졌다는 사실만으로 원래 정체성, 문구, 미세 세부가 정확히 유지되었다는 증거가 되지는 않습니다.</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-upscale</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\">upscale_factor</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>number</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.5</div><div>최댓값: 3</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\">creativity</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>integer</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>0, 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, upscale_factor, creativity</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><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>—</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>품질: creative</td><td data-cell-label=\"메가픽셀당 픽셀 수\"><span class=\"card-cell-label\">메가픽셀당 픽셀 수</span>1,048,576</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격 · 비교 전용 추정치</span> <b>$0.21</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>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>메가픽셀·초당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>quality: precise</td><td data-cell-label=\"메가픽셀당 픽셀 수\"><span class=\"card-cell-label\">메가픽셀당 픽셀 수</span>1,048,576</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격 · 비교 전용 추정치</span> <b>$0.15</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>—</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 예상 생성 비용 · 비교 전용 추정치</span> <b>$0.15</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-1097-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1097-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-1097-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1097-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_UPSCALE_FACTOR:?Set the actual documented input value}&quot;\nexport AILOOT_UPSCALE_FACTOR\n: &quot;${AILOOT_CREATIVITY:?Set the actual documented input value}&quot;\nexport AILOOT_CREATIVITY\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;black-forest-labs/flux-video-upscale&#39;, &#39;input_references&#39;: &#39;${ACTUAL_OWNED_INPUT_REFERENCES}&#39;, &#39;upscale_factor&#39;: &#39;${ACTUAL_UPSCALE_FACTOR}&#39;, &#39;creativity&#39;: &#39;${ACTUAL_CREATIVITY}&#39;}\nrequest[&#39;input_references&#39;]=json.loads(os.environ[&#39;AILOOT_INPUT_REFERENCES_JSON&#39;])\nrequest[&#39;upscale_factor&#39;]=float(os.environ[&#39;AILOOT_UPSCALE_FACTOR&#39;])\nrequest[&#39;creativity&#39;]=int(os.environ[&#39;AILOOT_CREATIVITY&#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-1098-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1098-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-1098-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1098-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-upscale&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-video-upscale&amp;fmt=videos\"><code>black-forest-labs/flux-video-upscale</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-upscale&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-video-upscale&amp;fmt=videos\"><code>black-forest-labs/flux-video-upscale</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "black-forest-labs/flux-video-upscale",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "black-forest-labs/flux-video-upscale",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|black-forest-labs%2Fflux-video-upscale",
      "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-upscale"
                ],
                "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"
              },
              {
                "maximum": 3,
                "minimum": 1.5,
                "name": "upscale_factor",
                "required": true,
                "type": "number"
              },
              {
                "enum": [
                  0,
                  1
                ],
                "enum_known": true,
                "name": "creativity",
                "required": true,
                "type": "integer"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "creativity": {
                  "enum": [
                    0,
                    1
                  ],
                  "type": "integer"
                },
                "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-upscale"
                  ],
                  "type": "string"
                },
                "upscale_factor": {
                  "maximum": 3,
                  "minimum": 1.5,
                  "type": "number"
                }
              },
              "required": [
                "model",
                "input_references",
                "upscale_factor",
                "creativity"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "creativity": "${ACTUAL_CREATIVITY}",
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "black-forest-labs/flux-video-upscale",
                "upscale_factor": "${ACTUAL_UPSCALE_FACTOR}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "실제로 완료된 소유 동영상 자산의 콘텐츠 URL 하나와 함께 반환된 서명만 사용하세요. 자산 소유자, 유형 및 저장된 바이트 증빙이 요청과 일치해야 합니다."
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "upscale_factor",
              "creativity"
            ]
          },
          "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": "품질: creative",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.21",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_creative",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.21",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "quality: precise",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_precise",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.15",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "basis": "이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "예상 생성 비용",
            "units": [
              {
                "amount": "0.15",
                "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.15",
                "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_UPSCALE_FACTOR:?Set the actual documented input value}\"\nexport AILOOT_UPSCALE_FACTOR\n: \"${AILOOT_CREATIVITY:?Set the actual documented input value}\"\nexport AILOOT_CREATIVITY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'black-forest-labs/flux-video-upscale', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'upscale_factor': '${ACTUAL_UPSCALE_FACTOR}', 'creativity': '${ACTUAL_CREATIVITY}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['upscale_factor']=float(os.environ['AILOOT_UPSCALE_FACTOR'])\nrequest['creativity']=int(os.environ['AILOOT_CREATIVITY'])\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": "quality: creative",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.21",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_creative",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.21",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "quality: precise",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_precise",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.15",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_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.15",
                "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.15",
                "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-upscale",
        "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.21",
            "amount_unit": "usd_per_megapixel_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_megapixel_second_creative",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.21",
            "native_quantity": 1,
            "public_unit_label": "per megapixel-second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "megapixel_second"
          },
          {
            "amount": "0.15",
            "amount_unit": "usd_per_megapixel_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_megapixel_second_precise",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.15",
            "native_quantity": 1,
            "public_unit_label": "per megapixel-second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "megapixel_second"
          },
          {
            "amount": "0.15",
            "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.15",
            "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-upscale",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "6949cd304cf4e9e598bfaf17c5d035b5094ad09f00f51ad82c9702d892a2b1fd",
    "input_html_sha256": "6efd9ae3c28839281cea2243353969fc018859e0ae9c9644939100324859d80f",
    "private_audit_sha256": "c194020ac90e7ad90aba273c7245066eadf5c168dc9d250148c4c73a48fab2af",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/black-forest-labs-flux-video-upscale/",
    "description": "FLUX Video Upscale은 원본에 충실한 또는 창의적인 세부 보강으로 기존 클립을 확대합니다. 문서상의 규격은 1.5~3배 확대를 제공하고 원본 오디오와 프레이밍을 보존하며 원본 길이, 입력 해상도, 출력 프레임 면적을 제한합니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/black-forest-labs-flux-video-upscale/index.md",
    "title": "Black Forest Labs: FLUX Video Upscale — Ailoot",
    "url": "https://ailoot.ai/models/ko/black-forest-labs-flux-video-upscale/"
  },
  "rawModel": {
    "about": "FLUX Video Upscale은 Black Forest Labs의 FLUX 3 기반 영상 초해상도 워크플로입니다. 기존 클립을 받아 원본 프레이밍과 오디오를 결과에 이어받은 확대 MP4를 반환합니다. 선택적인 짧은 설명으로 강화되는 시각 세부를 유도할 수 있습니다. 두 모드는 모든 큰 이미지를 똑같이 충실한 복원으로 취급하지 않고 제공된 외형에 가깝게 유지할지 더 적극적으로 세부를 생성할지 의미 있는 선택을 제공합니다.\n\n### 정밀 또는 창의적 보강 선택\n\ncreativity 설정이 모드를 선택합니다. 값 0은 정밀하고 원본에 충실한 규격입니다. 제조사는 얼굴, 제품, 브랜드 자산의 정체성을 유지해야 할 때 권장합니다. 값 1은 창의적인 세부 보강을 활성화하며 기본값입니다. 질감을 더 적극적으로 복원하거나 만들어 낼 수 있어 생성 영상, 풍경, 군중, 세부를 창의적으로 발전시킬 표면에 유용합니다.\n\n제조사는 창의적 보강이 얼굴과 제품을 같은 수준으로 엄격히 보존하지는 않는다고 명시합니다. 얼굴 외형, 제품 윤곽, 글자, 재질 무늬, 로고 등 식별 가능하게 남아야 할 특징을 확인하세요. 더 선명한 시각 결과에도 달라지거나 새로 만들어진 세부가 있을 수 있습니다. 제품 시연에서는 질감이 더 정교하다는 이유만으로 버전을 고르지 말고 의도한 제품 외형을 검토 기준으로 삼으세요.\n\n선택적인 프롬프트는 보강을 유도할 클립 내용을 설명합니다. 설명이 비어 있으면 중립적인 확대를 요청합니다. 원래의 생성 장면 요구사항은 이끼 낀 돌담, 부드러운 낮빛, 섬세한 잎 질감을 지정할 수 있습니다. 문구는 정밀하게 다듬을 자료에 관한 것으로 유지하세요. 물체 교체, 배경 재구축, 대화 변경은 편집 결정에 속하며 이 규격은 원본 오디오 트랙을 유지합니다.\n\n### 배율과 출력 프레임 면적\n\n문서상의 upscale_factor 범위는 1.5~3이며 기본값은 2입니다. 화면비를 보존하면서 원본 해상도를 확대합니다. 선택한 배율과 입력 크기가 의도한 출력을 결정하므로 가로 클립과 세로 구도는 실제 프레임을 바탕으로 계획해야 합니다. 어느 정도 확대가 유용한지 선택하기 전에 목표 표시 크기를 준비하세요.\n\n정확한 규격은 각 출력 프레임을 제조사 메가픽셀 단위 13.75로 제한합니다. 문서는 한 단위를 1,048,576픽셀로 정의하므로 상한은 14,417,920픽셀, 약 1,440만 픽셀입니다. 이는 안내의 반올림된 14.4메가픽셀 표현을 설명합니다. 따라서 큰 원본은 요청 배율보다 덜 확대될 수 있습니다. 3배 요청이 언제나 원본 각 변을 3배로 만든다고 가정하지 말고 전달된 크기를 확인하세요.\n\n공개 원본 해상도 상한은 2560×1440입니다. 이 워크플로는 적격 원본을 4K 이상으로 확대하지만 높은 출력을 원한다는 이유만으로 이미 더 큰 원본을 받지는 않습니다. 문서상의 규격을 쓰기 전에 축소하거나 적절한 작업용 사본을 준비하세요. 최종 비교가 크기를 바꾼 중간 자료에만 한정되지 않도록 원본 녹화를 별도로 보관하세요.\n\n### 짧고 판독하기 좋은 원본 준비\n\n제조사의 일반 준비 안내는 원본을 20초와 50 MB로 제한합니다. 클립은 영상 URL 또는 인코딩된 MP4로 제공합니다. 정확한 참조는 첫 20초를 처리한다고 설명합니다. 길이가 조금 넘으면 해당 지점까지만 처리될 수 있지만 상당히 긴 클립은 거절됩니다. 수치적인 허용 오차는 공개되지 않았습니다. 지정되지 않은 경계 동작에 의존하지 말고 의도한 20초 이하 구간으로 자르세요.\n\n가능한 가장 적게 압축된 버전을 선택하세요. 압축 아티팩트는 업스케일러가 복원할 실제 세부의 양을 제한하며 창의적 보강은 원본 장면에 무엇이 있었는지 확립하지 않고도 그럴듯한 질감을 만들 수 있습니다. 선택한 클립을 확대하기 전에 의도한 편집과 자르기를 완료하세요. 예를 들어 제품 숏을 먼저 완성하고 유용한 행동 구간을 선택한 뒤 변경하지 않은 원본을 비교용으로 유지하면서 최종 선택을 확대할 수 있습니다.\n\n결과는 원본 오디오 트랙을 유지합니다. 특히 선택 구간의 시작과 끝에서 화면과의 타이밍을 살피세요. 문서상의 규격은 독립적인 프레임 레이트 선택기, 새 대화 생성, 이미지 참조 편집 제어를 제공하지 않습니다. 목적은 확대 영상과 선택한 세부 처리이며 처리 구간 안의 원본 시간·소리 자료를 유지합니다.\n\n### 전달된 클립 보관과 검토\n\n제작사 워크플로는 비동기입니다. 제출한 작업은 식별자와 상태 확인 위치를 제공하고 완료 결과에는 서명된 MP4 전달 링크가 포함됩니다. 링크는 약 1시간 후 만료됩니다. 임시 위치에 의존하지 말고 실제 클립, 원본, 선택 배율, creativity 모드, 내용 설명을 보관하세요. 실패나 검토 제한 상태는 완료된 영상과 구분하세요.\n\n개별 프레임에서 얼굴, 표식, 표면 변화를 검토한 뒤 시퀀스를 보며 연속성, 움직임, 오디오 정렬을 확인하세요. 정밀 출력과 창의적 출력은 서로 다른 시각 요구에 답합니다. 유용한 결과물은 의도한 표시 크기에서 선택한 충실도 목표를 충족하는 확대 클립입니다. 해상도가 커졌다는 사실만으로 원래 정체성, 문구, 미세 세부가 정확히 유지되었다는 증거가 되지는 않습니다.",
    "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.15",
            "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.15",
            "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-upscale",
    "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-upscale"
                ],
                "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"
              },
              {
                "maximum": 3,
                "minimum": 1.5,
                "name": "upscale_factor",
                "required": true,
                "type": "number"
              },
              {
                "enum": [
                  0,
                  1
                ],
                "enum_known": true,
                "name": "creativity",
                "required": true,
                "type": "integer"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "creativity": {
                  "enum": [
                    0,
                    1
                  ],
                  "type": "integer"
                },
                "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-upscale"
                  ],
                  "type": "string"
                },
                "upscale_factor": {
                  "maximum": 3,
                  "minimum": 1.5,
                  "type": "number"
                }
              },
              "required": [
                "model",
                "input_references",
                "upscale_factor",
                "creativity"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "creativity": "${ACTUAL_CREATIVITY}",
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "black-forest-labs/flux-video-upscale",
                "upscale_factor": "${ACTUAL_UPSCALE_FACTOR}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "실제로 완료된 소유 동영상 자산의 콘텐츠 URL 하나와 함께 반환된 서명만 사용하세요. 자산 소유자, 유형 및 저장된 바이트 증빙이 요청과 일치해야 합니다."
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "upscale_factor",
              "creativity"
            ]
          },
          "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": "품질: creative",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.21",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_creative",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.21",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "quality: precise",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_precise",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.15",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "basis": "이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "예상 생성 비용",
            "units": [
              {
                "amount": "0.15",
                "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.15",
                "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_UPSCALE_FACTOR:?Set the actual documented input value}\"\nexport AILOOT_UPSCALE_FACTOR\n: \"${AILOOT_CREATIVITY:?Set the actual documented input value}\"\nexport AILOOT_CREATIVITY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'black-forest-labs/flux-video-upscale', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'upscale_factor': '${ACTUAL_UPSCALE_FACTOR}', 'creativity': '${ACTUAL_CREATIVITY}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['upscale_factor']=float(os.environ['AILOOT_UPSCALE_FACTOR'])\nrequest['creativity']=int(os.environ['AILOOT_CREATIVITY'])\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": "quality: creative",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.21",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_creative",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.21",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "quality: precise",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_precise",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.15",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_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.15",
                "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.15",
                "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-upscale",
        "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.21",
            "amount_unit": "usd_per_megapixel_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_megapixel_second_creative",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.21",
            "native_quantity": 1,
            "public_unit_label": "per megapixel-second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "megapixel_second"
          },
          {
            "amount": "0.15",
            "amount_unit": "usd_per_megapixel_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_megapixel_second_precise",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.15",
            "native_quantity": 1,
            "public_unit_label": "per megapixel-second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "megapixel_second"
          },
          {
            "amount": "0.15",
            "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.15",
            "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-upscale",
        "request_model_id": "black-forest-labs/flux-video-upscale",
        "route_label": "Ultra"
      }
    ],
    "name": "Black Forest Labs: FLUX Video Upscale",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.15,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.15,
      "varies": false
    },
    "short": "FLUX Video Upscale은 원본에 충실한 또는 창의적인 세부 보강으로 기존 클립을 확대합니다. 문서상의 규격은 1.5~3배 확대를 제공하고 원본 오디오와 프레이밍을 보존하며 원본 길이, 입력 해상도, 출력 프레임 면적을 제한합니다."
  },
  "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 Upscale은 원본에 충실한 또는 창의적인 세부 보강으로 기존 클립을 확대합니다. 문서상의 규격은 1.5~3배 확대를 제공하고 원본 오디오와 프레이밍을 보존하며 원본 길이, 입력 해상도, 출력 프레임 면적을 제한합니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "d14ae9a23de3ba9147f0bdac166d7a351ca7885d8c53e5c1f5b5f5fe23c4a55c",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "7cbb2efb1c3948f0b93d76d19236e44d11c3ca2ee501cc996ed4de43bdfee72e"
}
