{
  "aboutHtml": "<p>Seedance 2.0은 멀티모달 오디오·영상 제작을 위한 ByteDance Seed의 표준 모델입니다. 공동 생성 구조에서 텍스트, 이미지, 영상, 오디오를 결합하며 참조 중심 장면, 영상 편집, 영상 확장을 별도의 제작 워크플로로 제공합니다. 일관된 연기와 준비된 자료의 구체적인 시각·소리 정보가 모두 필요한 요구사항에 유용합니다.</p><h4>멀티모달 참조와 연출 제어</h4><p>이미지는 피사체의 외형, 시각 스타일, 구도를 정의할 수 있습니다. 영상 참조는 행동, 카메라 움직임, 효과를 유도하고 오디오는 음색, 음악, 대화를 유도할 수 있습니다. 각 자료의 역할을 정의한 뒤 만들어야 할 장면을 설명하세요. 제조사는 연기, 조명, 그림자, 카메라 표현에 대한 제어를 강조합니다.</p><p>제품 이야기에는 제품 사진, 카메라 움직임 참조, 오디오 신호를 준비하세요. 예를 들어 “Image 1의 파란 유리 화병을 보존하세요. Video 1의 느린 수평 트래킹을 사용하세요. 화병은 햇빛이 드는 선반에 있으며 Audio 1을 바탕으로 한 부드러운 연주 음악이 흐릅니다.”라고 쓸 수 있습니다. 의도한 출력은 선택한 참조 정보를 결합해 새로 연출한 장면입니다.</p><p>참조 입력은 이미지와 오디오, 이미지와 영상, 영상과 오디오, 세 가지 모두를 결합할 수 있습니다. 오디오만 입력하거나 이미지·영상 없이 텍스트와 오디오만 입력하는 것은 지원되지 않습니다. 기존의 텍스트 영상 변환, 첫 프레임 생성, 첫·마지막 프레임 생성도 문서화되어 있습니다. 고정된 시작과 종료 구도가 중요하면 전용 끝점 워크플로를 사용하세요. omni-reference 프롬프트 안에서 참조 이미지를 끝점이라고 명명하는 것은 간접적인 유도일 뿐입니다.</p><h4>영상 편집</h4><p>모델은 피사체를 교체하고 물체를 추가·제거하며 요소를 바꾸고 영상 일부를 다시 그리거나 복구할 수 있습니다. 구체적인 변경을 설명하고 원본 영상을 식별하세요. 추가에는 등장 시간과 위치를 포함하고 제거·교체에는 물체를 정확히 명시하며 남아야 할 것을 지정하세요.</p><p>예를 들어 “Video 1의 책상 램프를 Image 1의 황동 램프로 교체하세요. 카메라 움직임, 책상 배치, 조명 방향을 유지하세요.”라고 쓸 수 있습니다. 원하는 결과는 의도한 대체를 적용한 장면의 편집본입니다. 특히 가림, 움직임, 숏 전환을 거치며 새 물체와 바뀌지 않은 영역을 모두 살피세요.</p><h4>시퀀스 확장과 연결</h4><p>Seedance 2.0은 영상을 앞뒤로 확장하고 최대 세 개의 입력 클립을 생성 전환으로 연결할 수 있습니다. 시간 방향과 새 사건을 지정하세요. 연결에서는 클립 순서를 정하고 한 숏의 카메라가 문으로 들어가 다음 환경에 도착하는 것처럼 각 쌍 사이의 전환을 설명하세요.</p><p>단순 확장은 보통 원본 주변에서 전개한 이어지는 부분을 반환합니다. 최종 결과에 원래 구간도 반복되어야 하면 명확히 지시하세요. 두세 클립의 연결을 완성할 때 문서상의 워크플로는 원본 자료와 새 전환 내용을 모두 포함할 수 있습니다. 이는 시작이나 결말을 발전시키거나 연결 동작을 지정하지 않은 채 남기지 않고 준비된 장면을 잇는 데 유용합니다.</p><h4>표준 버전 출력과 4K</h4><p>표준 버전은 24 fps MP4와 4~15초 길이를 문서화합니다. 출력 수준은 8비트 색 깊이의 480p, 720p, 1080p와 10비트 색 깊이의 4K입니다. 지원 비율은 21:9, 16:9, 4:3, 1:1, 3:4, 9:16입니다. 적응형 프레이밍과 자동 길이 선택도 명시되어 있습니다. Fast 버전에는 더 좁은 자체 480p/720p 출력 규격이 있습니다.</p><p>4K 출력은 H.265/HEVC 인코딩을 사용합니다. 10비트 인코딩은 더 많은 명암 단계와 부드러운 색 전환을 보존하며 섬세한 빛이나 색 그라데이션이 있는 자료에 중요합니다. 의도한 재생·편집 환경이 해당 형식을 디코딩할 수 있는지 확인하세요. 일부 브라우저와 기기는 직접 재생하지 못합니다. 호환되는 컨테이너만으로 영상 디코딩 호환성이 보장되지는 않습니다.</p><p>모델은 동기화된 소리나 무음 영상을 생성할 수 있고 이후 장면에 사용할 마지막 생성 프레임을 반환할 수 있습니다. 생성 오디오는 모노입니다. 2.0 계열은 별도의 2단계 Draft 미리보기 모드를 지원하지 않습니다. 다른 Seedance 버전에서 해당 미리보기 기능을 추정해서는 안 됩니다.</p><h4>참조 준비와 실질적 한도</h4><p>문서상의 참조 용량은 이미지 최대 9개, 영상 3개, 오디오 클립 3개입니다. 이 제작사 규격은 실제 사람 얼굴을 포함한 참조 이미지·영상의 직접 업로드를 받지 않으며 인물 작업은 지원되는 인물 자산 워크플로를 사용합니다. 각 영상·오디오 클립은 2~15초여야 합니다. 모든 영상 참조 합계는 15초 이내여야 하며 모든 오디오 참조에는 별도의 총 15초 한도가 있습니다. 영상 파일은 MP4 또는 MOV, 24~60 fps, 각각 최대 200 MB이며 오디오는 WAV 또는 MP3, 각각 최대 15 MB입니다. 이미지 형식은 JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF입니다. 각 이미지는 30 MB 미만, 요청 본문은 64 MB 이하여야 합니다. 문서상의 참조 입력 규격에서 이미지 너비와 높이는 각각 300픽셀보다 크고 6,000픽셀보다 작아야 하며 가로세로 비율은 0.4보다 크고 2.5보다 작아야 합니다. 참조 영상은 경계값을 포함해 각 변 300~6,000픽셀, 비율 0.4~2.5, 총픽셀 수 407,696~8,295,044를 허용합니다. MP4 또는 MOV 영상은 H.264/AVC 또는 H.265/HEVC 영상과 AAC 또는 MP3 오디오를 사용합니다.</p><p>파일을 의도적으로 정렬하고 Image 1, Video 1, Audio 1처럼 미디어 유형과 번호로 참조하세요. 번호는 같은 유형 파일 사이의 순서를 따릅니다. 전달할 특성과 새 장면을 정의해서는 안 되는 원본 내용을 설명하세요. 문서상의 프롬프트 언어에는 영어, 스페인어, 인도네시아어, 포르투갈어, 일본어가 있습니다. 대화 안의 발화 언어를 일관되게 유지하세요. 안내는 고유명사를 제외한 언어 혼합을 피하도록 권장합니다. 목소리로 유도하는 작업에서는 화자, 정확한 대사, 표현 지시를 분리하세요.</p><p>첫 이미지와 마지막 이미지는 서로 맞는 프레이밍으로 준비하세요. 입력 사진과 출력 크기의 불일치는 자르기나 급격한 시각 변화를 일으킬 수 있습니다. 일치하는 크기와 적응형 프레이밍이 문서상의 해결책입니다. 설명을 사건과 참조 역할에 집중하세요. 제조사는 긴 프롬프트가 정보를 분산시켜 세부가 무시될 수 있다고 경고합니다. 생성 움직임, 참조 연속성, 오디오 연기, 장면 접합부를 제작 결과의 개별 요소로 검토하세요.</p><h4>숏 계획과 텍스트 지시</h4><p>복잡한 장면은 Shot 1, Shot 2, Shot 3으로 구성하고 카메라, 피사체 행동, 위치, 소리를 순서대로 지정하세요. 안내는 숏당 카메라 움직임 하나와 느리고 연결된 행동을 우선하도록 권장합니다. 정확한 숏별 타임스탬프는 불안정하므로 여러 정밀한 시간 창을 강제하기보다 사건 순서로 제어하는 것이 낫습니다.</p><p>모델은 슬로건, 자막, 말풍선 같은 일반 텍스트도 생성합니다. 텍스트의 색, 시각적 처리, 위치, 등장을 지시할 수 있습니다. 희귀 문자나 특수 기호 대신 일반 문자를 사용하고 움직이는 동안 문구를 검토하세요. 피사체 참조에서는 자산마다 의도한 캐릭터나 물체를 명확히 연결하세요. 제품의 각 시점은 서로 다른 시각 정보를 제공할 수 있고 캐릭터 턴어라운드 콜라주는 얼굴 정체성을 혼동시킬 수 있습니다. 명확한 얼굴 사진과 전신 이미지를 분리하는 것이 문서화된 캐릭터 참조 권장사항입니다.</p><h4>편집 전에 살펴볼 동작</h4><p>안내는 원치 않는 자막, 로고, 중복 캐릭터, 스타일 변화를 설명합니다. 깨끗한 원본 자료, 일관된 라벨, 명시적 제약은 위험을 줄이지만 원치 않는 텍스트나 중복 인물이 사라진다고 보장하지는 않습니다. 참조 인물이 4명을 넘는 것은 안정성 위험으로 보고되며 모델이 받는 파일 수와 별개입니다.</p><p>영상 확장은 접합부에서 화면이 뛰거나 되돌아가게 할 수 있고 반복적인 이어 만들기는 화질 저하를 누적시킬 수 있습니다. 경계 프레임을 살피고 확장을 지나치게 쌓지 마세요. 참조 목소리가 원본 음색과 다를 수 있고 내레이션이 클릭음이나 급격한 잘림으로 끝날 수 있습니다. 이 경우 오디오 페이드가 문서화된 해결책입니다. 중국어 다음자, 드문 문자, 모양이 비슷한 문자는 잘못 발음될 수 있습니다. 카운트다운 같은 정밀한 애니메이션 효과에는 말로만 요청하는 것보다 움직임 참조가 더 유익합니다. 이는 클립을 선택할 때 정체성, 텍스트, 움직임, 소리를 따로 확인해야 하는 구체적인 이유입니다.</p>",
  "aboutText": "Seedance 2.0은 멀티모달 오디오·영상 제작을 위한 ByteDance Seed의 표준 모델입니다. 공동 생성 구조에서 텍스트, 이미지, 영상, 오디오를 결합하며 참조 중심 장면, 영상 편집, 영상 확장을 별도의 제작 워크플로로 제공합니다. 일관된 연기와 준비된 자료의 구체적인 시각·소리 정보가 모두 필요한 요구사항에 유용합니다.\n\n### 멀티모달 참조와 연출 제어\n\n이미지는 피사체의 외형, 시각 스타일, 구도를 정의할 수 있습니다. 영상 참조는 행동, 카메라 움직임, 효과를 유도하고 오디오는 음색, 음악, 대화를 유도할 수 있습니다. 각 자료의 역할을 정의한 뒤 만들어야 할 장면을 설명하세요. 제조사는 연기, 조명, 그림자, 카메라 표현에 대한 제어를 강조합니다.\n\n제품 이야기에는 제품 사진, 카메라 움직임 참조, 오디오 신호를 준비하세요. 예를 들어 “Image 1의 파란 유리 화병을 보존하세요. Video 1의 느린 수평 트래킹을 사용하세요. 화병은 햇빛이 드는 선반에 있으며 Audio 1을 바탕으로 한 부드러운 연주 음악이 흐릅니다.”라고 쓸 수 있습니다. 의도한 출력은 선택한 참조 정보를 결합해 새로 연출한 장면입니다.\n\n참조 입력은 이미지와 오디오, 이미지와 영상, 영상과 오디오, 세 가지 모두를 결합할 수 있습니다. 오디오만 입력하거나 이미지·영상 없이 텍스트와 오디오만 입력하는 것은 지원되지 않습니다. 기존의 텍스트 영상 변환, 첫 프레임 생성, 첫·마지막 프레임 생성도 문서화되어 있습니다. 고정된 시작과 종료 구도가 중요하면 전용 끝점 워크플로를 사용하세요. omni-reference 프롬프트 안에서 참조 이미지를 끝점이라고 명명하는 것은 간접적인 유도일 뿐입니다.\n\n### 영상 편집\n\n모델은 피사체를 교체하고 물체를 추가·제거하며 요소를 바꾸고 영상 일부를 다시 그리거나 복구할 수 있습니다. 구체적인 변경을 설명하고 원본 영상을 식별하세요. 추가에는 등장 시간과 위치를 포함하고 제거·교체에는 물체를 정확히 명시하며 남아야 할 것을 지정하세요.\n\n예를 들어 “Video 1의 책상 램프를 Image 1의 황동 램프로 교체하세요. 카메라 움직임, 책상 배치, 조명 방향을 유지하세요.”라고 쓸 수 있습니다. 원하는 결과는 의도한 대체를 적용한 장면의 편집본입니다. 특히 가림, 움직임, 숏 전환을 거치며 새 물체와 바뀌지 않은 영역을 모두 살피세요.\n\n### 시퀀스 확장과 연결\n\nSeedance 2.0은 영상을 앞뒤로 확장하고 최대 세 개의 입력 클립을 생성 전환으로 연결할 수 있습니다. 시간 방향과 새 사건을 지정하세요. 연결에서는 클립 순서를 정하고 한 숏의 카메라가 문으로 들어가 다음 환경에 도착하는 것처럼 각 쌍 사이의 전환을 설명하세요.\n\n단순 확장은 보통 원본 주변에서 전개한 이어지는 부분을 반환합니다. 최종 결과에 원래 구간도 반복되어야 하면 명확히 지시하세요. 두세 클립의 연결을 완성할 때 문서상의 워크플로는 원본 자료와 새 전환 내용을 모두 포함할 수 있습니다. 이는 시작이나 결말을 발전시키거나 연결 동작을 지정하지 않은 채 남기지 않고 준비된 장면을 잇는 데 유용합니다.\n\n### 표준 버전 출력과 4K\n\n표준 버전은 24 fps MP4와 4~15초 길이를 문서화합니다. 출력 수준은 8비트 색 깊이의 480p, 720p, 1080p와 10비트 색 깊이의 4K입니다. 지원 비율은 21:9, 16:9, 4:3, 1:1, 3:4, 9:16입니다. 적응형 프레이밍과 자동 길이 선택도 명시되어 있습니다. Fast 버전에는 더 좁은 자체 480p/720p 출력 규격이 있습니다.\n\n4K 출력은 H.265/HEVC 인코딩을 사용합니다. 10비트 인코딩은 더 많은 명암 단계와 부드러운 색 전환을 보존하며 섬세한 빛이나 색 그라데이션이 있는 자료에 중요합니다. 의도한 재생·편집 환경이 해당 형식을 디코딩할 수 있는지 확인하세요. 일부 브라우저와 기기는 직접 재생하지 못합니다. 호환되는 컨테이너만으로 영상 디코딩 호환성이 보장되지는 않습니다.\n\n모델은 동기화된 소리나 무음 영상을 생성할 수 있고 이후 장면에 사용할 마지막 생성 프레임을 반환할 수 있습니다. 생성 오디오는 모노입니다. 2.0 계열은 별도의 2단계 Draft 미리보기 모드를 지원하지 않습니다. 다른 Seedance 버전에서 해당 미리보기 기능을 추정해서는 안 됩니다.\n\n### 참조 준비와 실질적 한도\n\n문서상의 참조 용량은 이미지 최대 9개, 영상 3개, 오디오 클립 3개입니다. 이 제작사 규격은 실제 사람 얼굴을 포함한 참조 이미지·영상의 직접 업로드를 받지 않으며 인물 작업은 지원되는 인물 자산 워크플로를 사용합니다. 각 영상·오디오 클립은 2~15초여야 합니다. 모든 영상 참조 합계는 15초 이내여야 하며 모든 오디오 참조에는 별도의 총 15초 한도가 있습니다. 영상 파일은 MP4 또는 MOV, 24~60 fps, 각각 최대 200 MB이며 오디오는 WAV 또는 MP3, 각각 최대 15 MB입니다. 이미지 형식은 JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF입니다. 각 이미지는 30 MB 미만, 요청 본문은 64 MB 이하여야 합니다. 문서상의 참조 입력 규격에서 이미지 너비와 높이는 각각 300픽셀보다 크고 6,000픽셀보다 작아야 하며 가로세로 비율은 0.4보다 크고 2.5보다 작아야 합니다. 참조 영상은 경계값을 포함해 각 변 300~6,000픽셀, 비율 0.4~2.5, 총픽셀 수 407,696~8,295,044를 허용합니다. MP4 또는 MOV 영상은 H.264/AVC 또는 H.265/HEVC 영상과 AAC 또는 MP3 오디오를 사용합니다.\n\n파일을 의도적으로 정렬하고 Image 1, Video 1, Audio 1처럼 미디어 유형과 번호로 참조하세요. 번호는 같은 유형 파일 사이의 순서를 따릅니다. 전달할 특성과 새 장면을 정의해서는 안 되는 원본 내용을 설명하세요. 문서상의 프롬프트 언어에는 영어, 스페인어, 인도네시아어, 포르투갈어, 일본어가 있습니다. 대화 안의 발화 언어를 일관되게 유지하세요. 안내는 고유명사를 제외한 언어 혼합을 피하도록 권장합니다. 목소리로 유도하는 작업에서는 화자, 정확한 대사, 표현 지시를 분리하세요.\n\n첫 이미지와 마지막 이미지는 서로 맞는 프레이밍으로 준비하세요. 입력 사진과 출력 크기의 불일치는 자르기나 급격한 시각 변화를 일으킬 수 있습니다. 일치하는 크기와 적응형 프레이밍이 문서상의 해결책입니다. 설명을 사건과 참조 역할에 집중하세요. 제조사는 긴 프롬프트가 정보를 분산시켜 세부가 무시될 수 있다고 경고합니다. 생성 움직임, 참조 연속성, 오디오 연기, 장면 접합부를 제작 결과의 개별 요소로 검토하세요.\n\n### 숏 계획과 텍스트 지시\n\n복잡한 장면은 Shot 1, Shot 2, Shot 3으로 구성하고 카메라, 피사체 행동, 위치, 소리를 순서대로 지정하세요. 안내는 숏당 카메라 움직임 하나와 느리고 연결된 행동을 우선하도록 권장합니다. 정확한 숏별 타임스탬프는 불안정하므로 여러 정밀한 시간 창을 강제하기보다 사건 순서로 제어하는 것이 낫습니다.\n\n모델은 슬로건, 자막, 말풍선 같은 일반 텍스트도 생성합니다. 텍스트의 색, 시각적 처리, 위치, 등장을 지시할 수 있습니다. 희귀 문자나 특수 기호 대신 일반 문자를 사용하고 움직이는 동안 문구를 검토하세요. 피사체 참조에서는 자산마다 의도한 캐릭터나 물체를 명확히 연결하세요. 제품의 각 시점은 서로 다른 시각 정보를 제공할 수 있고 캐릭터 턴어라운드 콜라주는 얼굴 정체성을 혼동시킬 수 있습니다. 명확한 얼굴 사진과 전신 이미지를 분리하는 것이 문서화된 캐릭터 참조 권장사항입니다.\n\n### 편집 전에 살펴볼 동작\n\n안내는 원치 않는 자막, 로고, 중복 캐릭터, 스타일 변화를 설명합니다. 깨끗한 원본 자료, 일관된 라벨, 명시적 제약은 위험을 줄이지만 원치 않는 텍스트나 중복 인물이 사라진다고 보장하지는 않습니다. 참조 인물이 4명을 넘는 것은 안정성 위험으로 보고되며 모델이 받는 파일 수와 별개입니다.\n\n영상 확장은 접합부에서 화면이 뛰거나 되돌아가게 할 수 있고 반복적인 이어 만들기는 화질 저하를 누적시킬 수 있습니다. 경계 프레임을 살피고 확장을 지나치게 쌓지 마세요. 참조 목소리가 원본 음색과 다를 수 있고 내레이션이 클릭음이나 급격한 잘림으로 끝날 수 있습니다. 이 경우 오디오 페이드가 문서화된 해결책입니다. 중국어 다음자, 드문 문자, 모양이 비슷한 문자는 잘못 발음될 수 있습니다. 카운트다운 같은 정밀한 애니메이션 효과에는 말로만 요청하는 것보다 움직임 참조가 더 유익합니다. 이는 클립을 선택할 때 정체성, 텍스트, 움직임, 소리를 따로 확인해야 하는 구체적인 이유입니다.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "171675b9f7960360072835346a977e714b0b3069250dbd6f1632ea976b78c96d",
    "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\">ByteDance: Seedance 2.0</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>ByteDance /</span><code>bytedance/seedance-2.0</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|bytedance%2Fseedance-2.0\">동영상</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\">ByteDance Seedance 2.0은 기본 오디오·영상 생성과 이미지, 영상, 소리 참조를 결합합니다. 새 장면을 연출하고 기존 영상을 편집하거나 시퀀스를 확장할 수 있습니다. 표준 버전에는 문서에 명시된 1080p 및 10비트 4K 출력이 포함됩니다.</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>Seedance 2.0은 멀티모달 오디오·영상 제작을 위한 ByteDance Seed의 표준 모델입니다. 공동 생성 구조에서 텍스트, 이미지, 영상, 오디오를 결합하며 참조 중심 장면, 영상 편집, 영상 확장을 별도의 제작 워크플로로 제공합니다. 일관된 연기와 준비된 자료의 구체적인 시각·소리 정보가 모두 필요한 요구사항에 유용합니다.</p><h4>멀티모달 참조와 연출 제어</h4><p>이미지는 피사체의 외형, 시각 스타일, 구도를 정의할 수 있습니다. 영상 참조는 행동, 카메라 움직임, 효과를 유도하고 오디오는 음색, 음악, 대화를 유도할 수 있습니다. 각 자료의 역할을 정의한 뒤 만들어야 할 장면을 설명하세요. 제조사는 연기, 조명, 그림자, 카메라 표현에 대한 제어를 강조합니다.</p><p>제품 이야기에는 제품 사진, 카메라 움직임 참조, 오디오 신호를 준비하세요. 예를 들어 “Image 1의 파란 유리 화병을 보존하세요. Video 1의 느린 수평 트래킹을 사용하세요. 화병은 햇빛이 드는 선반에 있으며 Audio 1을 바탕으로 한 부드러운 연주 음악이 흐릅니다.”라고 쓸 수 있습니다. 의도한 출력은 선택한 참조 정보를 결합해 새로 연출한 장면입니다.</p><p>참조 입력은 이미지와 오디오, 이미지와 영상, 영상과 오디오, 세 가지 모두를 결합할 수 있습니다. 오디오만 입력하거나 이미지·영상 없이 텍스트와 오디오만 입력하는 것은 지원되지 않습니다. 기존의 텍스트 영상 변환, 첫 프레임 생성, 첫·마지막 프레임 생성도 문서화되어 있습니다. 고정된 시작과 종료 구도가 중요하면 전용 끝점 워크플로를 사용하세요. omni-reference 프롬프트 안에서 참조 이미지를 끝점이라고 명명하는 것은 간접적인 유도일 뿐입니다.</p><h4>영상 편집</h4><p>모델은 피사체를 교체하고 물체를 추가·제거하며 요소를 바꾸고 영상 일부를 다시 그리거나 복구할 수 있습니다. 구체적인 변경을 설명하고 원본 영상을 식별하세요. 추가에는 등장 시간과 위치를 포함하고 제거·교체에는 물체를 정확히 명시하며 남아야 할 것을 지정하세요.</p><p>예를 들어 “Video 1의 책상 램프를 Image 1의 황동 램프로 교체하세요. 카메라 움직임, 책상 배치, 조명 방향을 유지하세요.”라고 쓸 수 있습니다. 원하는 결과는 의도한 대체를 적용한 장면의 편집본입니다. 특히 가림, 움직임, 숏 전환을 거치며 새 물체와 바뀌지 않은 영역을 모두 살피세요.</p><h4>시퀀스 확장과 연결</h4><p>Seedance 2.0은 영상을 앞뒤로 확장하고 최대 세 개의 입력 클립을 생성 전환으로 연결할 수 있습니다. 시간 방향과 새 사건을 지정하세요. 연결에서는 클립 순서를 정하고 한 숏의 카메라가 문으로 들어가 다음 환경에 도착하는 것처럼 각 쌍 사이의 전환을 설명하세요.</p><p>단순 확장은 보통 원본 주변에서 전개한 이어지는 부분을 반환합니다. 최종 결과에 원래 구간도 반복되어야 하면 명확히 지시하세요. 두세 클립의 연결을 완성할 때 문서상의 워크플로는 원본 자료와 새 전환 내용을 모두 포함할 수 있습니다. 이는 시작이나 결말을 발전시키거나 연결 동작을 지정하지 않은 채 남기지 않고 준비된 장면을 잇는 데 유용합니다.</p><h4>표준 버전 출력과 4K</h4><p>표준 버전은 24 fps MP4와 4~15초 길이를 문서화합니다. 출력 수준은 8비트 색 깊이의 480p, 720p, 1080p와 10비트 색 깊이의 4K입니다. 지원 비율은 21:9, 16:9, 4:3, 1:1, 3:4, 9:16입니다. 적응형 프레이밍과 자동 길이 선택도 명시되어 있습니다. Fast 버전에는 더 좁은 자체 480p/720p 출력 규격이 있습니다.</p><p>4K 출력은 H.265/HEVC 인코딩을 사용합니다. 10비트 인코딩은 더 많은 명암 단계와 부드러운 색 전환을 보존하며 섬세한 빛이나 색 그라데이션이 있는 자료에 중요합니다. 의도한 재생·편집 환경이 해당 형식을 디코딩할 수 있는지 확인하세요. 일부 브라우저와 기기는 직접 재생하지 못합니다. 호환되는 컨테이너만으로 영상 디코딩 호환성이 보장되지는 않습니다.</p><p>모델은 동기화된 소리나 무음 영상을 생성할 수 있고 이후 장면에 사용할 마지막 생성 프레임을 반환할 수 있습니다. 생성 오디오는 모노입니다. 2.0 계열은 별도의 2단계 Draft 미리보기 모드를 지원하지 않습니다. 다른 Seedance 버전에서 해당 미리보기 기능을 추정해서는 안 됩니다.</p><h4>참조 준비와 실질적 한도</h4><p>문서상의 참조 용량은 이미지 최대 9개, 영상 3개, 오디오 클립 3개입니다. 이 제작사 규격은 실제 사람 얼굴을 포함한 참조 이미지·영상의 직접 업로드를 받지 않으며 인물 작업은 지원되는 인물 자산 워크플로를 사용합니다. 각 영상·오디오 클립은 2~15초여야 합니다. 모든 영상 참조 합계는 15초 이내여야 하며 모든 오디오 참조에는 별도의 총 15초 한도가 있습니다. 영상 파일은 MP4 또는 MOV, 24~60 fps, 각각 최대 200 MB이며 오디오는 WAV 또는 MP3, 각각 최대 15 MB입니다. 이미지 형식은 JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF입니다. 각 이미지는 30 MB 미만, 요청 본문은 64 MB 이하여야 합니다. 문서상의 참조 입력 규격에서 이미지 너비와 높이는 각각 300픽셀보다 크고 6,000픽셀보다 작아야 하며 가로세로 비율은 0.4보다 크고 2.5보다 작아야 합니다. 참조 영상은 경계값을 포함해 각 변 300~6,000픽셀, 비율 0.4~2.5, 총픽셀 수 407,696~8,295,044를 허용합니다. MP4 또는 MOV 영상은 H.264/AVC 또는 H.265/HEVC 영상과 AAC 또는 MP3 오디오를 사용합니다.</p><p>파일을 의도적으로 정렬하고 Image 1, Video 1, Audio 1처럼 미디어 유형과 번호로 참조하세요. 번호는 같은 유형 파일 사이의 순서를 따릅니다. 전달할 특성과 새 장면을 정의해서는 안 되는 원본 내용을 설명하세요. 문서상의 프롬프트 언어에는 영어, 스페인어, 인도네시아어, 포르투갈어, 일본어가 있습니다. 대화 안의 발화 언어를 일관되게 유지하세요. 안내는 고유명사를 제외한 언어 혼합을 피하도록 권장합니다. 목소리로 유도하는 작업에서는 화자, 정확한 대사, 표현 지시를 분리하세요.</p><p>첫 이미지와 마지막 이미지는 서로 맞는 프레이밍으로 준비하세요. 입력 사진과 출력 크기의 불일치는 자르기나 급격한 시각 변화를 일으킬 수 있습니다. 일치하는 크기와 적응형 프레이밍이 문서상의 해결책입니다. 설명을 사건과 참조 역할에 집중하세요. 제조사는 긴 프롬프트가 정보를 분산시켜 세부가 무시될 수 있다고 경고합니다. 생성 움직임, 참조 연속성, 오디오 연기, 장면 접합부를 제작 결과의 개별 요소로 검토하세요.</p><h4>숏 계획과 텍스트 지시</h4><p>복잡한 장면은 Shot 1, Shot 2, Shot 3으로 구성하고 카메라, 피사체 행동, 위치, 소리를 순서대로 지정하세요. 안내는 숏당 카메라 움직임 하나와 느리고 연결된 행동을 우선하도록 권장합니다. 정확한 숏별 타임스탬프는 불안정하므로 여러 정밀한 시간 창을 강제하기보다 사건 순서로 제어하는 것이 낫습니다.</p><p>모델은 슬로건, 자막, 말풍선 같은 일반 텍스트도 생성합니다. 텍스트의 색, 시각적 처리, 위치, 등장을 지시할 수 있습니다. 희귀 문자나 특수 기호 대신 일반 문자를 사용하고 움직이는 동안 문구를 검토하세요. 피사체 참조에서는 자산마다 의도한 캐릭터나 물체를 명확히 연결하세요. 제품의 각 시점은 서로 다른 시각 정보를 제공할 수 있고 캐릭터 턴어라운드 콜라주는 얼굴 정체성을 혼동시킬 수 있습니다. 명확한 얼굴 사진과 전신 이미지를 분리하는 것이 문서화된 캐릭터 참조 권장사항입니다.</p><h4>편집 전에 살펴볼 동작</h4><p>안내는 원치 않는 자막, 로고, 중복 캐릭터, 스타일 변화를 설명합니다. 깨끗한 원본 자료, 일관된 라벨, 명시적 제약은 위험을 줄이지만 원치 않는 텍스트나 중복 인물이 사라진다고 보장하지는 않습니다. 참조 인물이 4명을 넘는 것은 안정성 위험으로 보고되며 모델이 받는 파일 수와 별개입니다.</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></dd></div><div><dt>출력</dt><dd><code>video</code></dd></div><div><dt>출력 형식</dt><dd>원본 MP4 바이트(정규화·트랜스코딩 없음)</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 data-parameter-availability=\"source_interface\"><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>bytedance/seedance-2.0</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">duration</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>4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15</div><div>최솟값: 1</div><div>최댓값: 600</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">resolution</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>480p, 720p, 1080p, 4K</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>선택 사항</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>boolean</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>선택 사항</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>false, true</div><div>조건: 480p와 720p에서 generate_audio를 생략하면 오디오 포함 요금이 선택되고, false로 설정하면 오디오 제외 요금이 선택됩니다. 1080p와 4K에서는 두 설정 모두 해당 해상도 요금이 적용됩니다. 반환된 오디오 트랙은 결과의 has_audio로 확인하세요.</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">frame_images</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>최대 항목 수: 2</div><div>입력 콘텐츠: 프레임 객체 배열입니다. 각 객체에는 type=image_url, url을 포함하는 image_url 및 frame_type=first_frame 또는 last_frame이 있습니다. 각 역할은 최대 한 번만 나타날 수 있습니다. 공개 HTTPS URL을 사용하세요.</div><div>정확한 키: type, image_url, frame_type</div><div>조건: 이 키는 각 프레임 객체에 적용됩니다. 텍스트만 사용하는 요청에서는 frame_images를 생략하세요.</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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>입력 콘텐츠: 이미지 또는 오디오 참조 객체의 배열입니다. type을 image_url 또는 audio_url로 설정하고 url을 포함하는 해당 URL 객체를 제공하세요. 동영상 참조 자료는 여전히 요금을 계산할 수 없습니다.</div><div>조건: 참조 모드를 사용하려면 frame_images를 생략하세요. 공개 HTTPS URL을 사용하세요.</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">size</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>480x480, 480x640, 480x854, 640x480, 854x480, 1120x480, 720x720, 720x960, 720x1280, 720x1680, 960x720, 1280x720, 1680x720, 1080x1080, 1080x1440, 1080x1920, 1440x1080, 1920x1080, 2520x1080, 3840x2160, 2160x3840, 2160x2160, 2880x2160, 2160x2880, 5040x2160</div><div>패턴: ^[1-9][0-9]*x[1-9][0-9]*$</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">seed</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>최솟값: -9,223,372,036,854,775,808</div><div>최댓값: 9,223,372,036,854,775,807</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">callback_url</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>패턴: ^https://</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">session_id</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></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>object</code></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=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">user</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></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>입력 자료 조합</summary><p class=\"note-s\"><b>텍스트로 동영상 생성</b> · 작성한 프롬프트입니다. · 필수: model, prompt, duration</p><p class=\"note-s\"><code>텍스트 프롬프트와 지원되는 정수 단위 초의 길이를 제공하세요. 나열된 정확한 크기 또는 나열된 치수로 결정되는 해상도와 화면 비율을 사용하세요.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: 유형: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: 유형: string · 최대 UTF-8 바이트 수: 10,000 · 공백이 아닌 문자 필수: 예</p><p class=\"note-s\"><b>이미지로 동영상 생성</b> · 작성한 프롬프트와 프레임 이미지입니다. · 필수: model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images는 type=image_url, url을 포함하는 image_url 및 frame_type이 있는 객체 배열입니다. 공개 HTTPS 이미지 URL을 사용하세요. first_frame과 last_frame은 각각 한 번만 나타날 수 있습니다. 나열된 출력 크기 또는 호환되는 크기를 사용하세요. 동영상 참조 자료를 추가하지 마세요.</code></p><p class=\"note-s\">정확한 키: type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: 유형: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: 유형: string · 최대 UTF-8 바이트 수: 10,000 · 공백이 아닌 문자 필수: 예</p><p class=\"note-s\"><b>Reference to video</b> · 작성한 프롬프트와 이미지 또는 오디오 참조 자료입니다. · 필수: model, prompt, duration, input_references</p><p class=\"note-s\"><code>input_references는 배열입니다. 각 객체에는 type=image_url 또는 type=audio_url과 url을 포함하는 해당 URL 객체가 있습니다. 공개 HTTPS 링크를 사용하세요. 참조 모드를 선택하려면 frame_images를 생략하세요. 동영상 참조 자료는 요금을 계산할 수 없습니다.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: 유형: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: 유형: string · 최대 UTF-8 바이트 수: 10,000 · 공백이 아닌 문자 필수: 예</p></details><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, prompt, duration</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</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>additional_properties</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>false</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>optional_controls</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>resolution, aspect_ratio, generate_audio, frame_images, input_references, size, seed, callback_url, session_id, trace, user</td></tr></tbody></table></div><p>수명 주기: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">요금</h3><div class=\"card-result-process\" data-billing-basis><h5>최종 요금 계산 방식</h5><p class=\"note-s\">표시된 요율은 생성 전 비용을 예상하는 데 사용됩니다. 최종 청구액은 최초 생성에 기록된 비용으로 계산됩니다. 측정된 출력 길이와 예상 수량은 최종 청구 수량이 아닙니다.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.</p><dl data-price-conditions><dt>빠른 모드</dt><dd>미지정 <span class=\"note-s\">빠른 모드를 선택한 경우</span></dd><dt>Flex 모드</dt><dd>미지정 <span class=\"note-s\">flex 모드를 선택한 경우</span></dd><dt>최대 추론 수준</dt><dd>미지정 <span class=\"note-s\">최대 추론 수준에 default 조정값을 적용하는 경우</span></dd></dl></div><div data-declared-tariff-pricing><h4>비교용 예상 요금</h4><h4>설정별 가격</h4><p class=\"note-s\">각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>설정</th><th>요금표</th><th>예측 수량</th><th>과금 단위</th><th>과금 조건</th><th>요금</th></tr></thead><tbody><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>기본 토큰 요금</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>기본 요금</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>—</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>—</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>입력 · 입력 토큰 · 비교 전용 추정치</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>출력 · 출력 토큰 · 비교 전용 추정치</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 읽기 · 비교 전용 추정치</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 쓰기 · 비교 전용 추정치</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 쓰기, 1시간 · 비교 전용 추정치</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>동영상 토큰 요금</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>1K 동영상 토큰당</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.014</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>1K 동영상 토큰당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>resolution: 1080p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 토큰 가격 · 비교 전용 추정치</span> <b>$0.0154</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>1K 동영상 토큰당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>입력: with_video_input; 해상도: 1080p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>reference · 동영상 토큰 가격 · 비교 전용 추정치</span> <b>$0.0094</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>1K 동영상 토큰당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>resolution: 4k</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 토큰 가격 · 비교 전용 추정치</span> <b>$0.008</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>1K 동영상 토큰당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>입력: with_video_input; 해상도: 4k</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>reference · 동영상 토큰 가격 · 비교 전용 추정치</span> <b>$0.0048</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>1K 동영상 토큰당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>입력: with_video_input</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>reference · 동영상 토큰 가격 · 비교 전용 추정치</span> <b>$0.0086</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>1K 동영상 토큰당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>오디오: without_audio</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 토큰 가격 · 비교 전용 추정치</span> <b>$0.014</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>예상 생성 비용</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>1회 생성 예상치</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>—</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>—</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 예상 생성 비용 · 비교 전용 추정치</span> <b>$0.3024</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><div data-declared-reference-pricing><h4>참조 요금 상세 정보</h4><p class=\"note-s\">모델 수준의 참조 요금표는 메서드 선택, 견적 또는 요금을 변경하지 않습니다. 실제 과금에는 선택한 Ailoot 메서드 요금이 적용됩니다.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>동영상 설정별 요금 참조</summary><h4>설정별 가격</h4><p class=\"note-s\">각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><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><div><span>출력 · 동영상 토큰 가격</span> <b>$0.014</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>resolution: 4k</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 토큰 가격</span> <b>$0.008</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>resolution: 1080p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 토큰 가격</span> <b>$0.0154</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>오디오: without_audio</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 토큰 가격</span> <b>$0.014</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>입력: with_video_input</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>reference · 동영상 토큰 가격</span> <b>$0.0086</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>입력: with_video_input; 해상도: 4k</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>reference · 동영상 토큰 가격</span> <b>$0.0048</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></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>입력: with_video_input; 해상도: 1080p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>reference · 동영상 토큰 가격</span> <b>$0.0094</b> <span class=\"price-unit\">1K 동영상 토큰당</span></div><p class=\"note-s\">비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.</p></td></tr></tbody></table></div></details></div></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-1131-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1131-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · 동영상 생성</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-1131-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1131-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nfrom pathlib import Path\nPath(&#39;request.json&#39;).write_text(&#39;{&quot;model&quot;:&quot;bytedance/seedance-2.0&quot;,&quot;prompt&quot;:&quot;A serene mountain landscape at sunset&quot;,&quot;duration&quot;:4,&quot;resolution&quot;:&quot;480p&quot;,&quot;size&quot;:&quot;480x480&quot;,&quot;generate_audio&quot;:false}&#39;, 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 result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">결과 수신 및 저장</h3><h4>Ailoot Ultra · 동영상</h4><p class=\"note-s\">소유한 콘텐츠의 서명된 URL</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{public_id}</code></li><li><code>GET /v1/videos/{public_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-1132-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1132-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-1132-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1132-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_STATUS_URL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nif not isinstance(r.get(&#39;id&#39;),str) or not r[&#39;id&#39;]:raise SystemExit(&#39;Keep the original response and headers for reconciliation; no returned ID&#39;)\nPath(&#39;status-url.txt&#39;).write_text(&#39;https://api.ailoot.ai/v1/videos/&#39;+quote(r[&#39;id&#39;],safe=&#39;&#39;))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error &quot;$(cat status-url.txt)&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div><details class=\"card-about\"><summary>기타 콘텐츠 조회</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"코드 예제 형식\"><button class=\"cg-tab\" id=\"model-code-1133-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1133-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-1133-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1133-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nif r.get(&#39;status&#39;)!=&#39;completed&#39;:raise SystemExit(&#39;Keep the original ID and read its status; never recreate an unknown job&#39;)\nif not isinstance(r.get(&#39;data&#39;),list) or not r[&#39;data&#39;]:raise SystemExit(&#39;Keep the complete original status; no completed outputs supplied&#39;)\nurls=[]\nfor i,u in enumerate(r.get(&#39;data&#39;,[])):\n    if not isinstance(u,str):raise SystemExit(&#39;Keep the original response; unexpected asset shape&#39;)\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div></div></div></details><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\">503 result_pending_check + 원래 id + X-Should-Retry:false; 원래 요청을 절대로 재전송하지 마세요.</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><th>의미</th></tr></thead><tbody><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">index</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>integer</td><td data-cell-label=\"의미\"><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\">content_url</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string</td><td data-cell-label=\"의미\"><span class=\"card-cell-label\">의미</span>완료된 이 동영상의 서명된 HTTPS 다운로드 URL입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">sha256</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string | null</td><td data-cell-label=\"의미\"><span class=\"card-cell-label\">의미</span>원본 동영상 바이트의 SHA-256 다이제스트입니다. 확인할 수 없으면 null입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">size_bytes</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>integer | null</td><td data-cell-label=\"의미\"><span class=\"card-cell-label\">의미</span>바이트 단위 원본 동영상 파일 크기입니다. 확인할 수 없으면 null입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">duration_ms</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>integer | null</td><td data-cell-label=\"의미\"><span class=\"card-cell-label\">의미</span>밀리초 단위로 측정한 동영상 길이입니다. 확인할 수 없으면 null입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>integer | null</td><td data-cell-label=\"의미\"><span class=\"card-cell-label\">의미</span>픽셀 단위 동영상 너비입니다. 확인할 수 없으면 null입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>integer | null</td><td data-cell-label=\"의미\"><span class=\"card-cell-label\">의미</span>픽셀 단위 동영상 높이입니다. 확인할 수 없으면 null입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">video_codec</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string | null</td><td data-cell-label=\"의미\"><span class=\"card-cell-label\">의미</span>동영상 코덱 식별자입니다. 기록되지 않았으면 null입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">has_audio</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>boolean | null</td><td data-cell-label=\"의미\"><span class=\"card-cell-label\">의미</span>동영상에 오디오 트랙이 포함되어 있는지 나타냅니다. 측정하지 않았으면 null입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">audio_codec</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string | null</td><td data-cell-label=\"의미\"><span class=\"card-cell-label\">의미</span>오디오 코덱 식별자입니다. 식별자가 기록되지 않았으면 null입니다.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>오류와 다음 단계</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>응답</th><th>조건</th><th>다음 단계</th></tr></thead><tbody><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>404 · <code>not_found_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>동영상에 접근할 수 없거나 해당 동영상 ID를 찾지 못했습니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>동영상 접근 권한을 확인하세요. 기존 동영상에는 원래 공개 ID와 동일한 API 키를 사용하세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>401 · <code>authentication_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>API 키가 인증된 계정과 일치하지 않습니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>제출 전에 API 키와 계정 접근 권한을 확인하세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>요청을 읽을 수 없거나 다운로드 인덱스가 유효하지 않습니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>요청 본문을 수정하세요. 다운로드할 때는 원래 작업에서 반환된 출력 인덱스를 선택하세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>선택한 동영상 설정의 요금을 계산할 수 없습니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>지원되는 동영상 설정을 선택하고 필수 옵션을 모두 지정한 뒤 수정된 요청을 제출하세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>동영상 입력 또는 원래 이어 만들기 작업이 유효하지 않습니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>유효한 HTTPS 입력을 사용하세요. 이어 만들기에는 동일한 API 키로 완료된 원본의 공개 동영상 ID를 사용하세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>402 · <code>billing_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>사용 가능한 잔액 또는 한도로는 예약할 수 없습니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>새 요청을 전송하기 전에 사용 가능한 잔액과 한도를 확인하세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>503 · <code>server_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>동영상 검증, 저장소 또는 서비스 접근을 일시적으로 사용할 수 없습니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>서비스를 사용할 수 있을 때까지 기다리세요. 이미 동영상 ID가 있으면 새로 생성하지 말고 해당 원래 작업을 확인하세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>원래 동영상 결과와 청구액을 확인해야 합니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>반환된 동영상 ID를 보존하고 해당 작업을 확인하세요. 확인 중에는 대체 생성 요청을 전송하지 마세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>기존 동영상 다운로드를 일시적으로 사용할 수 없습니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>나중에 동일한 동영상 작업을 확인하고 기존 출력을 다운로드하세요. 새로 생성하면 별도의 작업이 만들어집니다.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>동영상 콘텐츠가 게시되지 않았습니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>원래 작업 상태를 확인하세요. completed를 보고하면 다운로드하고, failed를 보고하면 청구 확인 안내를 따르세요.</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=bytedance%2Fseedance-2.0&amp;route=Ultra&amp;caller=bytedance%2Fseedance-2.0&amp;fmt=videos\"><code>bytedance/seedance-2.0</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\">위에 표시된 메서드 경로를 사용하세요.</p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=bytedance%2Fseedance-2.0&amp;route=Ultra&amp;caller=bytedance%2Fseedance-2.0&amp;fmt=videos\"><code>bytedance/seedance-2.0</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "bytedance/seedance-2.0",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "bytedance/seedance-2.0",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|bytedance%2Fseedance-2.0",
      "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": "실제로 소유한 모든 출력과 함께 반환된 측정 메타데이터를 보존하세요.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "동영상에 접근할 수 없거나 해당 동영상 ID를 찾지 못했습니다.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "동영상 접근 권한을 확인하세요. 기존 동영상에는 원래 공개 ID와 동일한 API 키를 사용하세요.",
                "type": "not_found_error"
              },
              {
                "condition": "API 키가 인증된 계정과 일치하지 않습니다.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "제출 전에 API 키와 계정 접근 권한을 확인하세요.",
                "type": "authentication_error"
              },
              {
                "condition": "요청을 읽을 수 없거나 다운로드 인덱스가 유효하지 않습니다.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "요청 본문을 수정하세요. 다운로드할 때는 원래 작업에서 반환된 출력 인덱스를 선택하세요.",
                "type": "invalid_request_error"
              },
              {
                "condition": "선택한 동영상 설정의 요금을 계산할 수 없습니다.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "지원되는 동영상 설정을 선택하고 필수 옵션을 모두 지정한 뒤 수정된 요청을 제출하세요.",
                "type": "price_unavailable"
              },
              {
                "condition": "동영상 입력 또는 원래 이어 만들기 작업이 유효하지 않습니다.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "유효한 HTTPS 입력을 사용하세요. 이어 만들기에는 동일한 API 키로 완료된 원본의 공개 동영상 ID를 사용하세요.",
                "type": "invalid_request_error"
              },
              {
                "condition": "사용 가능한 잔액 또는 한도로는 예약할 수 없습니다.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "새 요청을 전송하기 전에 사용 가능한 잔액과 한도를 확인하세요.",
                "type": "billing_error"
              },
              {
                "condition": "동영상 검증, 저장소 또는 서비스 접근을 일시적으로 사용할 수 없습니다.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "서비스를 사용할 수 있을 때까지 기다리세요. 이미 동영상 ID가 있으면 새로 생성하지 말고 해당 원래 작업을 확인하세요.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "원래 동영상 결과와 청구액을 확인해야 합니다.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "반환된 동영상 ID를 보존하고 해당 작업을 확인하세요. 확인 중에는 대체 생성 요청을 전송하지 마세요.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "기존 동영상 다운로드를 일시적으로 사용할 수 없습니다.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "나중에 동일한 동영상 작업을 확인하고 기존 출력을 다운로드하세요. 새로 생성하면 별도의 작업이 만들어집니다.",
                "type": "server_error"
              },
              {
                "condition": "동영상 콘텐츠가 게시되지 않았습니다.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "원래 작업 상태를 확인하세요. completed를 보고하면 다운로드하고, failed를 보고하면 청구 확인 안내를 따르세요.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + 원래 id + X-Should-Retry:false; 원래 요청을 절대로 재전송하지 마세요."
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "텍스트 프롬프트와 지원되는 정수 단위 초의 길이를 제공하세요. 나열된 정확한 크기 또는 나열된 치수로 결정되는 해상도와 화면 비율을 사용하세요.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "작성한 프롬프트입니다."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images는 type=image_url, url을 포함하는 image_url 및 frame_type이 있는 객체 배열입니다. 공개 HTTPS 이미지 URL을 사용하세요. first_frame과 last_frame은 각각 한 번만 나타날 수 있습니다. 나열된 출력 크기 또는 호환되는 크기를 사용하세요. 동영상 참조 자료를 추가하지 마세요.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "작성한 프롬프트와 프레임 이미지입니다."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references는 배열입니다. 각 객체에는 type=image_url 또는 type=audio_url과 url을 포함하는 해당 URL 객체가 있습니다. 공개 HTTPS 링크를 사용하세요. 참조 모드를 선택하려면 frame_images를 생략하세요. 동영상 참조 자료는 요금을 계산할 수 없습니다.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "작성한 프롬프트와 이미지 또는 오디오 참조 자료입니다."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "reference_to_video"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "출력 목록에서 이 동영상의 영부터 시작하는 위치입니다.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "완료된 이 동영상의 서명된 HTTPS 다운로드 URL입니다.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "원본 동영상 바이트의 SHA-256 다이제스트입니다. 확인할 수 없으면 null입니다.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "바이트 단위 원본 동영상 파일 크기입니다. 확인할 수 없으면 null입니다.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "밀리초 단위로 측정한 동영상 길이입니다. 확인할 수 없으면 null입니다.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "픽셀 단위 동영상 너비입니다. 확인할 수 없으면 null입니다.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "픽셀 단위 동영상 높이입니다. 확인할 수 없으면 null입니다.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "동영상 코덱 식별자입니다. 기록되지 않았으면 null입니다.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "동영상에 오디오 트랙이 포함되어 있는지 나타냅니다. 측정하지 않았으면 null입니다.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "오디오 코덱 식별자입니다. 식별자가 기록되지 않았으면 null입니다.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "소유한 콘텐츠의 서명된 URL",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "bytedance/seedance-2.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "bytedance/seedance-2.0"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p",
                  "1080p",
                  "4K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "1:1",
                  "3:4",
                  "9:16",
                  "4:3",
                  "16:9",
                  "21:9",
                  "9:21"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "480p와 720p에서 generate_audio를 생략하면 오디오 포함 요금이 선택되고, false로 설정하면 오디오 제외 요금이 선택됩니다. 1080p와 4K에서는 두 설정 모두 해당 해상도 요금이 적용됩니다. 반환된 오디오 트랙은 결과의 has_audio로 확인하세요.",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "이 키는 각 프레임 객체에 적용됩니다. 텍스트만 사용하는 요청에서는 frame_images를 생략하세요.",
                "content": "프레임 객체 배열입니다. 각 객체에는 type=image_url, url을 포함하는 image_url 및 frame_type=first_frame 또는 last_frame이 있습니다. 각 역할은 최대 한 번만 나타날 수 있습니다. 공개 HTTPS URL을 사용하세요.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "참조 모드를 사용하려면 frame_images를 생략하세요. 공개 HTTPS URL을 사용하세요.",
                "content": "이미지 또는 오디오 참조 객체의 배열입니다. type을 image_url 또는 audio_url로 설정하고 url을 포함하는 해당 URL 객체를 제공하세요. 동영상 참조 자료는 여전히 요금을 계산할 수 없습니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480x480",
                  "480x640",
                  "480x854",
                  "640x480",
                  "854x480",
                  "1120x480",
                  "720x720",
                  "720x960",
                  "720x1280",
                  "720x1680",
                  "960x720",
                  "1280x720",
                  "1680x720",
                  "1080x1080",
                  "1080x1440",
                  "1080x1920",
                  "1440x1080",
                  "1920x1080",
                  "2520x1080",
                  "3840x2160",
                  "2160x3840",
                  "2160x2160",
                  "2880x2160",
                  "2160x2880",
                  "5040x2160"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "model": {
                  "const": "bytedance/seedance-2.0"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Request geometry is required for the pre-generation estimate and reserve. Returned geometry and track time describe the generated output; final charge follows the actual billed configuration.",
                "Video references with *_with_video_input quantity are rejected; image/audio references only where model reference types admit them."
              ]
            },
            "unsupported": [
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "seed",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "reference_to_video"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "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"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "입력: with_video_input; 해상도: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "예상 생성 비용",
            "units": [
              {
                "amount": "0.3024",
                "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.3024",
                "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}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"model\":\"bytedance/seedance-2.0\",\"prompt\":\"A serene mountain landscape at sunset\",\"duration\":4,\"resolution\":\"480p\",\"size\":\"480x480\",\"generate_audio\":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 result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);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 returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "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.3024",
                "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.3024",
                "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": "bytedance/seedance-2.0",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "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.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0154000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000154",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0094000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000094",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0048000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000048",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.0086000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000086",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_without_audio",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.3024",
            "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.3024",
            "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": "bytedance/seedance-2.0",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "3ede8686d34915b5da9395c1c726ef78f0a6bb894327a8e2a36399cfd4143ba7",
    "input_html_sha256": "e3d895e11742cfad4662f59439c3d85d4a0f4924d594df7ef245bddfff971b81",
    "private_audit_sha256": "e8f15e1d4c059dea2095c9c37ffc5dd7a5845efc2cfd57212f8a389cf0fe1b34",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/bytedance-seedance-2-0/",
    "description": "ByteDance Seedance 2.0은 기본 오디오·영상 생성과 이미지, 영상, 소리 참조를 결합합니다. 새 장면을 연출하고 기존 영상을 편집하거나 시퀀스를 확장할 수 있습니다. 표준 버전에는 문서에 명시된 1080p 및 10비트 4K 출력이 포함됩니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/bytedance-seedance-2-0/index.md",
    "title": "ByteDance: Seedance 2.0 — Ailoot",
    "url": "https://ailoot.ai/models/ko/bytedance-seedance-2-0/"
  },
  "rawModel": {
    "about": "Seedance 2.0은 멀티모달 오디오·영상 제작을 위한 ByteDance Seed의 표준 모델입니다. 공동 생성 구조에서 텍스트, 이미지, 영상, 오디오를 결합하며 참조 중심 장면, 영상 편집, 영상 확장을 별도의 제작 워크플로로 제공합니다. 일관된 연기와 준비된 자료의 구체적인 시각·소리 정보가 모두 필요한 요구사항에 유용합니다.\n\n### 멀티모달 참조와 연출 제어\n\n이미지는 피사체의 외형, 시각 스타일, 구도를 정의할 수 있습니다. 영상 참조는 행동, 카메라 움직임, 효과를 유도하고 오디오는 음색, 음악, 대화를 유도할 수 있습니다. 각 자료의 역할을 정의한 뒤 만들어야 할 장면을 설명하세요. 제조사는 연기, 조명, 그림자, 카메라 표현에 대한 제어를 강조합니다.\n\n제품 이야기에는 제품 사진, 카메라 움직임 참조, 오디오 신호를 준비하세요. 예를 들어 “Image 1의 파란 유리 화병을 보존하세요. Video 1의 느린 수평 트래킹을 사용하세요. 화병은 햇빛이 드는 선반에 있으며 Audio 1을 바탕으로 한 부드러운 연주 음악이 흐릅니다.”라고 쓸 수 있습니다. 의도한 출력은 선택한 참조 정보를 결합해 새로 연출한 장면입니다.\n\n참조 입력은 이미지와 오디오, 이미지와 영상, 영상과 오디오, 세 가지 모두를 결합할 수 있습니다. 오디오만 입력하거나 이미지·영상 없이 텍스트와 오디오만 입력하는 것은 지원되지 않습니다. 기존의 텍스트 영상 변환, 첫 프레임 생성, 첫·마지막 프레임 생성도 문서화되어 있습니다. 고정된 시작과 종료 구도가 중요하면 전용 끝점 워크플로를 사용하세요. omni-reference 프롬프트 안에서 참조 이미지를 끝점이라고 명명하는 것은 간접적인 유도일 뿐입니다.\n\n### 영상 편집\n\n모델은 피사체를 교체하고 물체를 추가·제거하며 요소를 바꾸고 영상 일부를 다시 그리거나 복구할 수 있습니다. 구체적인 변경을 설명하고 원본 영상을 식별하세요. 추가에는 등장 시간과 위치를 포함하고 제거·교체에는 물체를 정확히 명시하며 남아야 할 것을 지정하세요.\n\n예를 들어 “Video 1의 책상 램프를 Image 1의 황동 램프로 교체하세요. 카메라 움직임, 책상 배치, 조명 방향을 유지하세요.”라고 쓸 수 있습니다. 원하는 결과는 의도한 대체를 적용한 장면의 편집본입니다. 특히 가림, 움직임, 숏 전환을 거치며 새 물체와 바뀌지 않은 영역을 모두 살피세요.\n\n### 시퀀스 확장과 연결\n\nSeedance 2.0은 영상을 앞뒤로 확장하고 최대 세 개의 입력 클립을 생성 전환으로 연결할 수 있습니다. 시간 방향과 새 사건을 지정하세요. 연결에서는 클립 순서를 정하고 한 숏의 카메라가 문으로 들어가 다음 환경에 도착하는 것처럼 각 쌍 사이의 전환을 설명하세요.\n\n단순 확장은 보통 원본 주변에서 전개한 이어지는 부분을 반환합니다. 최종 결과에 원래 구간도 반복되어야 하면 명확히 지시하세요. 두세 클립의 연결을 완성할 때 문서상의 워크플로는 원본 자료와 새 전환 내용을 모두 포함할 수 있습니다. 이는 시작이나 결말을 발전시키거나 연결 동작을 지정하지 않은 채 남기지 않고 준비된 장면을 잇는 데 유용합니다.\n\n### 표준 버전 출력과 4K\n\n표준 버전은 24 fps MP4와 4~15초 길이를 문서화합니다. 출력 수준은 8비트 색 깊이의 480p, 720p, 1080p와 10비트 색 깊이의 4K입니다. 지원 비율은 21:9, 16:9, 4:3, 1:1, 3:4, 9:16입니다. 적응형 프레이밍과 자동 길이 선택도 명시되어 있습니다. Fast 버전에는 더 좁은 자체 480p/720p 출력 규격이 있습니다.\n\n4K 출력은 H.265/HEVC 인코딩을 사용합니다. 10비트 인코딩은 더 많은 명암 단계와 부드러운 색 전환을 보존하며 섬세한 빛이나 색 그라데이션이 있는 자료에 중요합니다. 의도한 재생·편집 환경이 해당 형식을 디코딩할 수 있는지 확인하세요. 일부 브라우저와 기기는 직접 재생하지 못합니다. 호환되는 컨테이너만으로 영상 디코딩 호환성이 보장되지는 않습니다.\n\n모델은 동기화된 소리나 무음 영상을 생성할 수 있고 이후 장면에 사용할 마지막 생성 프레임을 반환할 수 있습니다. 생성 오디오는 모노입니다. 2.0 계열은 별도의 2단계 Draft 미리보기 모드를 지원하지 않습니다. 다른 Seedance 버전에서 해당 미리보기 기능을 추정해서는 안 됩니다.\n\n### 참조 준비와 실질적 한도\n\n문서상의 참조 용량은 이미지 최대 9개, 영상 3개, 오디오 클립 3개입니다. 이 제작사 규격은 실제 사람 얼굴을 포함한 참조 이미지·영상의 직접 업로드를 받지 않으며 인물 작업은 지원되는 인물 자산 워크플로를 사용합니다. 각 영상·오디오 클립은 2~15초여야 합니다. 모든 영상 참조 합계는 15초 이내여야 하며 모든 오디오 참조에는 별도의 총 15초 한도가 있습니다. 영상 파일은 MP4 또는 MOV, 24~60 fps, 각각 최대 200 MB이며 오디오는 WAV 또는 MP3, 각각 최대 15 MB입니다. 이미지 형식은 JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF입니다. 각 이미지는 30 MB 미만, 요청 본문은 64 MB 이하여야 합니다. 문서상의 참조 입력 규격에서 이미지 너비와 높이는 각각 300픽셀보다 크고 6,000픽셀보다 작아야 하며 가로세로 비율은 0.4보다 크고 2.5보다 작아야 합니다. 참조 영상은 경계값을 포함해 각 변 300~6,000픽셀, 비율 0.4~2.5, 총픽셀 수 407,696~8,295,044를 허용합니다. MP4 또는 MOV 영상은 H.264/AVC 또는 H.265/HEVC 영상과 AAC 또는 MP3 오디오를 사용합니다.\n\n파일을 의도적으로 정렬하고 Image 1, Video 1, Audio 1처럼 미디어 유형과 번호로 참조하세요. 번호는 같은 유형 파일 사이의 순서를 따릅니다. 전달할 특성과 새 장면을 정의해서는 안 되는 원본 내용을 설명하세요. 문서상의 프롬프트 언어에는 영어, 스페인어, 인도네시아어, 포르투갈어, 일본어가 있습니다. 대화 안의 발화 언어를 일관되게 유지하세요. 안내는 고유명사를 제외한 언어 혼합을 피하도록 권장합니다. 목소리로 유도하는 작업에서는 화자, 정확한 대사, 표현 지시를 분리하세요.\n\n첫 이미지와 마지막 이미지는 서로 맞는 프레이밍으로 준비하세요. 입력 사진과 출력 크기의 불일치는 자르기나 급격한 시각 변화를 일으킬 수 있습니다. 일치하는 크기와 적응형 프레이밍이 문서상의 해결책입니다. 설명을 사건과 참조 역할에 집중하세요. 제조사는 긴 프롬프트가 정보를 분산시켜 세부가 무시될 수 있다고 경고합니다. 생성 움직임, 참조 연속성, 오디오 연기, 장면 접합부를 제작 결과의 개별 요소로 검토하세요.\n\n### 숏 계획과 텍스트 지시\n\n복잡한 장면은 Shot 1, Shot 2, Shot 3으로 구성하고 카메라, 피사체 행동, 위치, 소리를 순서대로 지정하세요. 안내는 숏당 카메라 움직임 하나와 느리고 연결된 행동을 우선하도록 권장합니다. 정확한 숏별 타임스탬프는 불안정하므로 여러 정밀한 시간 창을 강제하기보다 사건 순서로 제어하는 것이 낫습니다.\n\n모델은 슬로건, 자막, 말풍선 같은 일반 텍스트도 생성합니다. 텍스트의 색, 시각적 처리, 위치, 등장을 지시할 수 있습니다. 희귀 문자나 특수 기호 대신 일반 문자를 사용하고 움직이는 동안 문구를 검토하세요. 피사체 참조에서는 자산마다 의도한 캐릭터나 물체를 명확히 연결하세요. 제품의 각 시점은 서로 다른 시각 정보를 제공할 수 있고 캐릭터 턴어라운드 콜라주는 얼굴 정체성을 혼동시킬 수 있습니다. 명확한 얼굴 사진과 전신 이미지를 분리하는 것이 문서화된 캐릭터 참조 권장사항입니다.\n\n### 편집 전에 살펴볼 동작\n\n안내는 원치 않는 자막, 로고, 중복 캐릭터, 스타일 변화를 설명합니다. 깨끗한 원본 자료, 일관된 라벨, 명시적 제약은 위험을 줄이지만 원치 않는 텍스트나 중복 인물이 사라진다고 보장하지는 않습니다. 참조 인물이 4명을 넘는 것은 안정성 위험으로 보고되며 모델이 받는 파일 수와 별개입니다.\n\n영상 확장은 접합부에서 화면이 뛰거나 되돌아가게 할 수 있고 반복적인 이어 만들기는 화질 저하를 누적시킬 수 있습니다. 경계 프레임을 살피고 확장을 지나치게 쌓지 마세요. 참조 목소리가 원본 음색과 다를 수 있고 내레이션이 클릭음이나 급격한 잘림으로 끝날 수 있습니다. 이 경우 오디오 페이드가 문서화된 해결책입니다. 중국어 다음자, 드문 문자, 모양이 비슷한 문자는 잘못 발음될 수 있습니다. 카운트다운 같은 정밀한 애니메이션 효과에는 말로만 요청하는 것보다 움직임 참조가 더 유익합니다. 이는 클립을 선택할 때 정체성, 텍스트, 움직임, 소리를 따로 확인해야 하는 구체적인 이유입니다.",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance",
    "available": null,
    "canonical_model": "bytedance/seedance-2.0",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video",
        "audio"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.3024",
            "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.3024",
            "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,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "cb128050bf8483dc92f31388",
        "label": "동영상 설정별 요금 참조",
        "profiles": [
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "이 가격 키에는 추가 조건이 명시되어 있지 않습니다."
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.014",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "resolution: 4k"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.008",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "resolution: 1080p"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0154",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "오디오: without_audio"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.014",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "입력: with_video_input"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0086",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "입력: with_video_input; 해상도: 4k"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0048",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "입력: with_video_input; 해상도: 1080p"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0094",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "bytedance/seedance-2.0",
    "input": [
      "text",
      "image",
      "audio"
    ],
    "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": "실제로 소유한 모든 출력과 함께 반환된 측정 메타데이터를 보존하세요.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "동영상에 접근할 수 없거나 해당 동영상 ID를 찾지 못했습니다.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "동영상 접근 권한을 확인하세요. 기존 동영상에는 원래 공개 ID와 동일한 API 키를 사용하세요.",
                "type": "not_found_error"
              },
              {
                "condition": "API 키가 인증된 계정과 일치하지 않습니다.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "제출 전에 API 키와 계정 접근 권한을 확인하세요.",
                "type": "authentication_error"
              },
              {
                "condition": "요청을 읽을 수 없거나 다운로드 인덱스가 유효하지 않습니다.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "요청 본문을 수정하세요. 다운로드할 때는 원래 작업에서 반환된 출력 인덱스를 선택하세요.",
                "type": "invalid_request_error"
              },
              {
                "condition": "선택한 동영상 설정의 요금을 계산할 수 없습니다.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "지원되는 동영상 설정을 선택하고 필수 옵션을 모두 지정한 뒤 수정된 요청을 제출하세요.",
                "type": "price_unavailable"
              },
              {
                "condition": "동영상 입력 또는 원래 이어 만들기 작업이 유효하지 않습니다.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "유효한 HTTPS 입력을 사용하세요. 이어 만들기에는 동일한 API 키로 완료된 원본의 공개 동영상 ID를 사용하세요.",
                "type": "invalid_request_error"
              },
              {
                "condition": "사용 가능한 잔액 또는 한도로는 예약할 수 없습니다.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "새 요청을 전송하기 전에 사용 가능한 잔액과 한도를 확인하세요.",
                "type": "billing_error"
              },
              {
                "condition": "동영상 검증, 저장소 또는 서비스 접근을 일시적으로 사용할 수 없습니다.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "서비스를 사용할 수 있을 때까지 기다리세요. 이미 동영상 ID가 있으면 새로 생성하지 말고 해당 원래 작업을 확인하세요.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "원래 동영상 결과와 청구액을 확인해야 합니다.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "반환된 동영상 ID를 보존하고 해당 작업을 확인하세요. 확인 중에는 대체 생성 요청을 전송하지 마세요.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "기존 동영상 다운로드를 일시적으로 사용할 수 없습니다.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "나중에 동일한 동영상 작업을 확인하고 기존 출력을 다운로드하세요. 새로 생성하면 별도의 작업이 만들어집니다.",
                "type": "server_error"
              },
              {
                "condition": "동영상 콘텐츠가 게시되지 않았습니다.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "원래 작업 상태를 확인하세요. completed를 보고하면 다운로드하고, failed를 보고하면 청구 확인 안내를 따르세요.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + 원래 id + X-Should-Retry:false; 원래 요청을 절대로 재전송하지 마세요."
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "텍스트 프롬프트와 지원되는 정수 단위 초의 길이를 제공하세요. 나열된 정확한 크기 또는 나열된 치수로 결정되는 해상도와 화면 비율을 사용하세요.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "작성한 프롬프트입니다."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images는 type=image_url, url을 포함하는 image_url 및 frame_type이 있는 객체 배열입니다. 공개 HTTPS 이미지 URL을 사용하세요. first_frame과 last_frame은 각각 한 번만 나타날 수 있습니다. 나열된 출력 크기 또는 호환되는 크기를 사용하세요. 동영상 참조 자료를 추가하지 마세요.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "작성한 프롬프트와 프레임 이미지입니다."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references는 배열입니다. 각 객체에는 type=image_url 또는 type=audio_url과 url을 포함하는 해당 URL 객체가 있습니다. 공개 HTTPS 링크를 사용하세요. 참조 모드를 선택하려면 frame_images를 생략하세요. 동영상 참조 자료는 요금을 계산할 수 없습니다.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "작성한 프롬프트와 이미지 또는 오디오 참조 자료입니다."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "reference_to_video"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "출력 목록에서 이 동영상의 영부터 시작하는 위치입니다.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "완료된 이 동영상의 서명된 HTTPS 다운로드 URL입니다.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "원본 동영상 바이트의 SHA-256 다이제스트입니다. 확인할 수 없으면 null입니다.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "바이트 단위 원본 동영상 파일 크기입니다. 확인할 수 없으면 null입니다.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "밀리초 단위로 측정한 동영상 길이입니다. 확인할 수 없으면 null입니다.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "픽셀 단위 동영상 너비입니다. 확인할 수 없으면 null입니다.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "픽셀 단위 동영상 높이입니다. 확인할 수 없으면 null입니다.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "동영상 코덱 식별자입니다. 기록되지 않았으면 null입니다.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "동영상에 오디오 트랙이 포함되어 있는지 나타냅니다. 측정하지 않았으면 null입니다.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "오디오 코덱 식별자입니다. 식별자가 기록되지 않았으면 null입니다.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "소유한 콘텐츠의 서명된 URL",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "bytedance/seedance-2.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "bytedance/seedance-2.0"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p",
                  "1080p",
                  "4K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "1:1",
                  "3:4",
                  "9:16",
                  "4:3",
                  "16:9",
                  "21:9",
                  "9:21"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "480p와 720p에서 generate_audio를 생략하면 오디오 포함 요금이 선택되고, false로 설정하면 오디오 제외 요금이 선택됩니다. 1080p와 4K에서는 두 설정 모두 해당 해상도 요금이 적용됩니다. 반환된 오디오 트랙은 결과의 has_audio로 확인하세요.",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "이 키는 각 프레임 객체에 적용됩니다. 텍스트만 사용하는 요청에서는 frame_images를 생략하세요.",
                "content": "프레임 객체 배열입니다. 각 객체에는 type=image_url, url을 포함하는 image_url 및 frame_type=first_frame 또는 last_frame이 있습니다. 각 역할은 최대 한 번만 나타날 수 있습니다. 공개 HTTPS URL을 사용하세요.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "참조 모드를 사용하려면 frame_images를 생략하세요. 공개 HTTPS URL을 사용하세요.",
                "content": "이미지 또는 오디오 참조 객체의 배열입니다. type을 image_url 또는 audio_url로 설정하고 url을 포함하는 해당 URL 객체를 제공하세요. 동영상 참조 자료는 여전히 요금을 계산할 수 없습니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480x480",
                  "480x640",
                  "480x854",
                  "640x480",
                  "854x480",
                  "1120x480",
                  "720x720",
                  "720x960",
                  "720x1280",
                  "720x1680",
                  "960x720",
                  "1280x720",
                  "1680x720",
                  "1080x1080",
                  "1080x1440",
                  "1080x1920",
                  "1440x1080",
                  "1920x1080",
                  "2520x1080",
                  "3840x2160",
                  "2160x3840",
                  "2160x2160",
                  "2880x2160",
                  "2160x2880",
                  "5040x2160"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "model": {
                  "const": "bytedance/seedance-2.0"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Request geometry is required for the pre-generation estimate and reserve. Returned geometry and track time describe the generated output; final charge follows the actual billed configuration.",
                "Video references with *_with_video_input quantity are rejected; image/audio references only where model reference types admit them."
              ]
            },
            "unsupported": [
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "seed",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "reference_to_video"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "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"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "입력: with_video_input; 해상도: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "비디오 토큰 요율이 기본 가격 참고값입니다. 초당 대표 예상 요금은 별도 참고값이며 추가 요금이 아닙니다.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "동영상 토큰 요금",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "예상 생성 비용",
            "units": [
              {
                "amount": "0.3024",
                "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.3024",
                "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}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"model\":\"bytedance/seedance-2.0\",\"prompt\":\"A serene mountain landscape at sunset\",\"duration\":4,\"resolution\":\"480p\",\"size\":\"480x480\",\"generate_audio\":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 result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);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 returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "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.3024",
                "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.3024",
                "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": "bytedance/seedance-2.0",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "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.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0154000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000154",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0094000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000094",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0048000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000048",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.0086000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000086",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_without_audio",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.3024",
            "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.3024",
            "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": "bytedance/seedance-2.0",
        "request_model_id": "bytedance/seedance-2.0",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance: Seedance 2.0",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.3024,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.3024,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": false,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": false,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "480p/720p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000014",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": false,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": false,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "480p/720p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": true,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": true,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "480p/720p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000086",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": true,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": true,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "480p/720p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": false,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": false,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "1080p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000154",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": false,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": false,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "1080p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": true,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": true,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "1080p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000094",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": true,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": true,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "1080p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 3,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": false,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": false,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "4K"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000008",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": false,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": false,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "4K"
            },
            "key": "base",
            "label": "base",
            "profile_index": 4,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": true,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": true,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "4K"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000048",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": true,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": true,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "4K"
            },
            "key": "base",
            "label": "base",
            "profile_index": 5,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "video token",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.000014",
            "key": "video_tokens",
            "label": "video token",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=4k",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.000008",
            "key": "video_tokens_4k",
            "label": "video token",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0154000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=1080p",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000154",
            "key": "video_tokens_1080p",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000154",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "audio=false",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.000014",
            "key": "video_tokens_without_audio",
            "label": "video token",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0086000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "video_reference_present Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000086",
            "key": "video_tokens_with_video_input",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000086",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0048000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=4k · video_reference_present Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000048",
            "key": "video_tokens_4k_with_video_input",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000048",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0094000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=1080p · video_reference_present Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000094",
            "key": "video_tokens_1080p_with_video_input",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000094",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          }
        ]
      }
    ],
    "public_id": "bytedance/seedance-2.0",
    "short": "ByteDance Seedance 2.0은 기본 오디오·영상 생성과 이미지, 영상, 소리 참조를 결합합니다. 새 장면을 연출하고 기존 영상을 편집하거나 시퀀스를 확장할 수 있습니다. 표준 버전에는 문서에 명시된 1080p 및 10비트 4K 출력이 포함됩니다."
  },
  "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": "ByteDance Seedance 2.0은 기본 오디오·영상 생성과 이미지, 영상, 소리 참조를 결합합니다. 새 장면을 연출하고 기존 영상을 편집하거나 시퀀스를 확장할 수 있습니다. 표준 버전에는 문서에 명시된 1080p 및 10비트 4K 출력이 포함됩니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_exact_canonical_sha256": "4eb3dbaece323bea3a680a650412e7364f741792336cf922bfe1f5041959ea74",
    "raw_model_js_projection_sha256": "a2d6e4eb9654b8ba43f7272a71503d8abd55f61d0142d9288eafd45fbbdc2a73",
    "raw_model_json_sha256": "4eb3dbaece323bea3a680a650412e7364f741792336cf922bfe1f5041959ea74",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "758892132d66477e8cc19ec8bfd09741cc182fbb80f501a1acc9c3345eb26382"
}
