{
  "aboutHtml": "<p>HeyGen Video는 제조사가 heygen-video-1로 식별하는 HeyGen의 범용 장면 생성 모델입니다. 창작 기획에서 피사체, 배경, 빛과 소리를 함께 만듭니다. 각 클립은 5–15초이며 대사, 환경음과 효과음을 포함한 생성 오디오 트랙을 담습니다. 유용한 제작 입력으로는 장면 설명, 제품 사진 또는 인물·장소·움직임을 정하는 자료가 있습니다. 결과 에셋은 제품 소개, 온보딩 삽입 영상, 부동산 소개나 다른 영상 편집에 사용할 짧은 장면입니다.</p><p>세 모드는 입력에 서로 다른 역할을 줍니다. 텍스트-비디오는 프롬프트에서 장면을 만듭니다. 이미지-비디오는 실제로 제공 이미지에서 시작한 뒤 동작 기획을 따릅니다. 참조-비디오는 제공한 이미지·영상과 선택적 오디오로 새로 구성한 장면을 안내하며 이미지나 영상 참조가 최소 하나 필요합니다. 시작 구도가 정지 이미지와 일치해야 한다면 첫 프레임 이미지를, 알려진 물체가 다른 구도에 나와야 한다면 참조를 선택하세요. 이 장면 모델은 HeyGen 아바타 렌더링 엔진 및 Video Agent 구성 워크플로와 구별됩니다.</p><p>제작사 가이드는 피사체 하나, 장소 하나와 한정된 동작 하나를 고정 또는 부드럽게 움직이는 카메라로 담는 상세하고 구체적인 숏 지시를 권장합니다. 카메라 위치, 렌즈나 피사계 심도 의도, 빛, 표면 질감과 색 처리를 설명하세요. 접촉이 필요한 동작에서는 물체가 어디에서 닿는지 설명합니다. 직접 만든 제품 예시에서는 여행용 보온병 참조 사진을 쓰고 나무 카운터 위 보온병 옆에서 진행자가 말하며 카메라가 보온병 쪽으로 조금 이동하도록 요청할 수 있습니다. 결과에서 보온병 형태, 위치와 보이는 표식을 확인하세요.</p><p>참조 목록은 이미지 최대 9개, 영상 3개와 오디오 3개를 지원하며 총 최대 12개입니다. 제조사 프롬프트 형식에서 이미지, 영상과 오디오는 각각 번호를 매기며 첫 이미지는 &lt;Picture 1&gt;, 첫 영상은 &lt;Video 1&gt;입니다. 각 참조에 역할을 주고 기획에서 명시적으로 식별하세요. 모델은 각 참조 영상의 첫 5초를 읽으므로 관련 구간을 시작 부분에 배치합니다. API 참조는 참조 영상 화면비를 1:4–4:1로 명시합니다. 원하는 움직임이 끝에만 나오는 긴 클립은 이 5초 입력 구간에 맞지 않는 준비입니다.</p><p>문서상 참조 인터페이스는 직접 접근 가능한 HTTPS 리소스, 업로드 에셋 식별자 또는 인라인 base64를 받습니다. 가이드의 최대 이미지 크기는 URL 제공 시 16MB, 인라인은 5MB이며 영상·오디오는 URL 제공 시 32MB, 인라인은 16MB입니다. 중요한 피사체가 쉽게 구별되고 여러 참조가 서로 충돌하는 지시를 주지 않도록 원본을 준비하세요. 첫 프레임 이미지에서 의도한 방향을 유지합니다. 이 입력 세부사항은 제작사 참조 워크플로에 관한 것으로 선택 모드의 창작 자료 정리에 도움이 됩니다.</p><p>화면과 같은 기획에서 소리도 연출하세요. 대사, 발성, 실내 기본 소음과 특정 효과를 명시하고 소리가 가까운지 먼지도 설명합니다. 장면에 말과 환경음만 있어야 한다면 원하는 음악 처리도 지정하세요. 가이드는 계획 추정치로 초당 약 2.5개의 발화 단어를 제안하므로 멈춤과 보이는 동작을 위한 여유를 남깁니다. 짧은 소개는 한 문장 뒤 제품을 드러내는 잠깐의 여유로 계획할 수 있습니다. 실제 단어와 생성 소리가 공간·동작에 맞는지 들어 보세요.</p><p>출력 길이는 5–15초 사이의 정수 초로 선택하며 기본값은 5초입니다. 해상도는 480p, 768p, 1080p 또는 2k 크기 등급입니다. 문서상 구도 선택은 21:9, 16:9, 4:3, 1:1, 3:4, 9:16입니다. 1080p 또는 2k 텍스트-비디오와 참조-비디오에서는 16:9 또는 9:16을 선택하며 적응형 참조 구도는 480p와 768p에서 문서화되어 있습니다. 이미지-비디오는 첫 이미지 비율을 따르므로 필요한 형태가 달라지면 생성 전에 자릅니다. 크기 등급 이름이 통상적인 특정 픽셀 쌍을 뜻한다고 가정하지 말고 완성 결과의 실제 크기를 검토하세요.</p><p>모델 가이드는 H.264 영상 인코딩과 32kHz 스테레오 AAC 오디오의 MP4 영상을 명시합니다. 생성은 비동기로 처리되며 완료 작업은 재생 가능한 영상 위치, 길이와 크기를 제공합니다. 서명된 영상 위치는 작업을 다시 조회해 갱신할 수 있습니다. 편집 검토를 위해 실제 클립, 참조 자료와 기획을 보관하세요. 대기·처리 기록은 생성을 추적하며 완성 영상이 화면·음성·소리를 평가할 제작 에셋입니다.</p><p>제조사는 프롬프트 향상 옵션으로 turbo, quality, disabled를 문서화하며 disabled는 준비 문구를 그대로 유지합니다. 고정 시드는 다른 입력을 유지하면서 한 절의 변경을 비교할 때 유용합니다. 선택 시드와 설정을 숏 기획에 기록하세요. 화면 글자는 의도한 문구를 짧고 정확하게 쓰며 가이드는 문단, 작은 글씨와 라벨 있는 도표를 나중에 합성하도록 권장합니다. 문구가 정확히 재현됐다고 가정하지 말고 생성 제목의 모든 글자를 확인하세요.</p><p>가이드는 긴 화면 텍스트, 꽃잎·종이·머리카락 같은 부드러운 유기적 움직임과 손으로 물체를 가까이 다루는 장면을 덜 안정적인 영역으로 식별합니다. 절차 설명에서는 명확하게 쓴 대사로 단계를 전달하고 화면에는 안정된 인물이나 물체를 보여 주세요. 물리적 조작 자체가 정확해야 할 때는 별도로 검증한 영상을 사용합니다. 숏 전체에서 물체 연속성, 접촉, 얼굴·손 디테일, 대사와 소리를 검토하세요. 다음 테이크에서 바꿀 내용을 간결하게 정리하면 상세한 제작 기획을 실용적으로 유지할 수 있습니다.</p>",
  "aboutText": "HeyGen Video는 제조사가 heygen-video-1로 식별하는 HeyGen의 범용 장면 생성 모델입니다. 창작 기획에서 피사체, 배경, 빛과 소리를 함께 만듭니다. 각 클립은 5–15초이며 대사, 환경음과 효과음을 포함한 생성 오디오 트랙을 담습니다. 유용한 제작 입력으로는 장면 설명, 제품 사진 또는 인물·장소·움직임을 정하는 자료가 있습니다. 결과 에셋은 제품 소개, 온보딩 삽입 영상, 부동산 소개나 다른 영상 편집에 사용할 짧은 장면입니다.\n\n세 모드는 입력에 서로 다른 역할을 줍니다. 텍스트-비디오는 프롬프트에서 장면을 만듭니다. 이미지-비디오는 실제로 제공 이미지에서 시작한 뒤 동작 기획을 따릅니다. 참조-비디오는 제공한 이미지·영상과 선택적 오디오로 새로 구성한 장면을 안내하며 이미지나 영상 참조가 최소 하나 필요합니다. 시작 구도가 정지 이미지와 일치해야 한다면 첫 프레임 이미지를, 알려진 물체가 다른 구도에 나와야 한다면 참조를 선택하세요. 이 장면 모델은 HeyGen 아바타 렌더링 엔진 및 Video Agent 구성 워크플로와 구별됩니다.\n\n제작사 가이드는 피사체 하나, 장소 하나와 한정된 동작 하나를 고정 또는 부드럽게 움직이는 카메라로 담는 상세하고 구체적인 숏 지시를 권장합니다. 카메라 위치, 렌즈나 피사계 심도 의도, 빛, 표면 질감과 색 처리를 설명하세요. 접촉이 필요한 동작에서는 물체가 어디에서 닿는지 설명합니다. 직접 만든 제품 예시에서는 여행용 보온병 참조 사진을 쓰고 나무 카운터 위 보온병 옆에서 진행자가 말하며 카메라가 보온병 쪽으로 조금 이동하도록 요청할 수 있습니다. 결과에서 보온병 형태, 위치와 보이는 표식을 확인하세요.\n\n참조 목록은 이미지 최대 9개, 영상 3개와 오디오 3개를 지원하며 총 최대 12개입니다. 제조사 프롬프트 형식에서 이미지, 영상과 오디오는 각각 번호를 매기며 첫 이미지는 <Picture 1>, 첫 영상은 <Video 1>입니다. 각 참조에 역할을 주고 기획에서 명시적으로 식별하세요. 모델은 각 참조 영상의 첫 5초를 읽으므로 관련 구간을 시작 부분에 배치합니다. API 참조는 참조 영상 화면비를 1:4–4:1로 명시합니다. 원하는 움직임이 끝에만 나오는 긴 클립은 이 5초 입력 구간에 맞지 않는 준비입니다.\n\n문서상 참조 인터페이스는 직접 접근 가능한 HTTPS 리소스, 업로드 에셋 식별자 또는 인라인 base64를 받습니다. 가이드의 최대 이미지 크기는 URL 제공 시 16MB, 인라인은 5MB이며 영상·오디오는 URL 제공 시 32MB, 인라인은 16MB입니다. 중요한 피사체가 쉽게 구별되고 여러 참조가 서로 충돌하는 지시를 주지 않도록 원본을 준비하세요. 첫 프레임 이미지에서 의도한 방향을 유지합니다. 이 입력 세부사항은 제작사 참조 워크플로에 관한 것으로 선택 모드의 창작 자료 정리에 도움이 됩니다.\n\n화면과 같은 기획에서 소리도 연출하세요. 대사, 발성, 실내 기본 소음과 특정 효과를 명시하고 소리가 가까운지 먼지도 설명합니다. 장면에 말과 환경음만 있어야 한다면 원하는 음악 처리도 지정하세요. 가이드는 계획 추정치로 초당 약 2.5개의 발화 단어를 제안하므로 멈춤과 보이는 동작을 위한 여유를 남깁니다. 짧은 소개는 한 문장 뒤 제품을 드러내는 잠깐의 여유로 계획할 수 있습니다. 실제 단어와 생성 소리가 공간·동작에 맞는지 들어 보세요.\n\n출력 길이는 5–15초 사이의 정수 초로 선택하며 기본값은 5초입니다. 해상도는 480p, 768p, 1080p 또는 2k 크기 등급입니다. 문서상 구도 선택은 21:9, 16:9, 4:3, 1:1, 3:4, 9:16입니다. 1080p 또는 2k 텍스트-비디오와 참조-비디오에서는 16:9 또는 9:16을 선택하며 적응형 참조 구도는 480p와 768p에서 문서화되어 있습니다. 이미지-비디오는 첫 이미지 비율을 따르므로 필요한 형태가 달라지면 생성 전에 자릅니다. 크기 등급 이름이 통상적인 특정 픽셀 쌍을 뜻한다고 가정하지 말고 완성 결과의 실제 크기를 검토하세요.\n\n모델 가이드는 H.264 영상 인코딩과 32kHz 스테레오 AAC 오디오의 MP4 영상을 명시합니다. 생성은 비동기로 처리되며 완료 작업은 재생 가능한 영상 위치, 길이와 크기를 제공합니다. 서명된 영상 위치는 작업을 다시 조회해 갱신할 수 있습니다. 편집 검토를 위해 실제 클립, 참조 자료와 기획을 보관하세요. 대기·처리 기록은 생성을 추적하며 완성 영상이 화면·음성·소리를 평가할 제작 에셋입니다.\n\n제조사는 프롬프트 향상 옵션으로 turbo, quality, disabled를 문서화하며 disabled는 준비 문구를 그대로 유지합니다. 고정 시드는 다른 입력을 유지하면서 한 절의 변경을 비교할 때 유용합니다. 선택 시드와 설정을 숏 기획에 기록하세요. 화면 글자는 의도한 문구를 짧고 정확하게 쓰며 가이드는 문단, 작은 글씨와 라벨 있는 도표를 나중에 합성하도록 권장합니다. 문구가 정확히 재현됐다고 가정하지 말고 생성 제목의 모든 글자를 확인하세요.\n\n가이드는 긴 화면 텍스트, 꽃잎·종이·머리카락 같은 부드러운 유기적 움직임과 손으로 물체를 가까이 다루는 장면을 덜 안정적인 영역으로 식별합니다. 절차 설명에서는 명확하게 쓴 대사로 단계를 전달하고 화면에는 안정된 인물이나 물체를 보여 주세요. 물리적 조작 자체가 정확해야 할 때는 별도로 검증한 영상을 사용합니다. 숏 전체에서 물체 연속성, 접촉, 얼굴·손 디테일, 대사와 소리를 검토하세요. 다음 테이크에서 바꿀 내용을 간결하게 정리하면 상세한 제작 기획을 실용적으로 유지할 수 있습니다.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "ac510e5bf9b978e8737da048790e7c25dd89c776a2f097b8b7ccaa891892e744",
    "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\">HeyGen: HeyGen Video</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>HeyGen /</span><code>heygen/heygen-video-1</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|heygen%2Fheygen-video-1\">동영상</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\">HeyGen Video는 텍스트, 첫 이미지 또는 시각·오디오 참조에서 대사, 환경음과 효과음이 포함된 5–15초 장면을 생성합니다. 범용 heygen-video-1 모델은 참조 제어와 MP4 출력으로 제품·캐릭터 숏을 지원합니다. 명확하고 한정된 동작이 유용한 제작 기획이 됩니다.</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>HeyGen Video는 제조사가 heygen-video-1로 식별하는 HeyGen의 범용 장면 생성 모델입니다. 창작 기획에서 피사체, 배경, 빛과 소리를 함께 만듭니다. 각 클립은 5–15초이며 대사, 환경음과 효과음을 포함한 생성 오디오 트랙을 담습니다. 유용한 제작 입력으로는 장면 설명, 제품 사진 또는 인물·장소·움직임을 정하는 자료가 있습니다. 결과 에셋은 제품 소개, 온보딩 삽입 영상, 부동산 소개나 다른 영상 편집에 사용할 짧은 장면입니다.</p><p>세 모드는 입력에 서로 다른 역할을 줍니다. 텍스트-비디오는 프롬프트에서 장면을 만듭니다. 이미지-비디오는 실제로 제공 이미지에서 시작한 뒤 동작 기획을 따릅니다. 참조-비디오는 제공한 이미지·영상과 선택적 오디오로 새로 구성한 장면을 안내하며 이미지나 영상 참조가 최소 하나 필요합니다. 시작 구도가 정지 이미지와 일치해야 한다면 첫 프레임 이미지를, 알려진 물체가 다른 구도에 나와야 한다면 참조를 선택하세요. 이 장면 모델은 HeyGen 아바타 렌더링 엔진 및 Video Agent 구성 워크플로와 구별됩니다.</p><p>제작사 가이드는 피사체 하나, 장소 하나와 한정된 동작 하나를 고정 또는 부드럽게 움직이는 카메라로 담는 상세하고 구체적인 숏 지시를 권장합니다. 카메라 위치, 렌즈나 피사계 심도 의도, 빛, 표면 질감과 색 처리를 설명하세요. 접촉이 필요한 동작에서는 물체가 어디에서 닿는지 설명합니다. 직접 만든 제품 예시에서는 여행용 보온병 참조 사진을 쓰고 나무 카운터 위 보온병 옆에서 진행자가 말하며 카메라가 보온병 쪽으로 조금 이동하도록 요청할 수 있습니다. 결과에서 보온병 형태, 위치와 보이는 표식을 확인하세요.</p><p>참조 목록은 이미지 최대 9개, 영상 3개와 오디오 3개를 지원하며 총 최대 12개입니다. 제조사 프롬프트 형식에서 이미지, 영상과 오디오는 각각 번호를 매기며 첫 이미지는 &lt;Picture 1&gt;, 첫 영상은 &lt;Video 1&gt;입니다. 각 참조에 역할을 주고 기획에서 명시적으로 식별하세요. 모델은 각 참조 영상의 첫 5초를 읽으므로 관련 구간을 시작 부분에 배치합니다. API 참조는 참조 영상 화면비를 1:4–4:1로 명시합니다. 원하는 움직임이 끝에만 나오는 긴 클립은 이 5초 입력 구간에 맞지 않는 준비입니다.</p><p>문서상 참조 인터페이스는 직접 접근 가능한 HTTPS 리소스, 업로드 에셋 식별자 또는 인라인 base64를 받습니다. 가이드의 최대 이미지 크기는 URL 제공 시 16MB, 인라인은 5MB이며 영상·오디오는 URL 제공 시 32MB, 인라인은 16MB입니다. 중요한 피사체가 쉽게 구별되고 여러 참조가 서로 충돌하는 지시를 주지 않도록 원본을 준비하세요. 첫 프레임 이미지에서 의도한 방향을 유지합니다. 이 입력 세부사항은 제작사 참조 워크플로에 관한 것으로 선택 모드의 창작 자료 정리에 도움이 됩니다.</p><p>화면과 같은 기획에서 소리도 연출하세요. 대사, 발성, 실내 기본 소음과 특정 효과를 명시하고 소리가 가까운지 먼지도 설명합니다. 장면에 말과 환경음만 있어야 한다면 원하는 음악 처리도 지정하세요. 가이드는 계획 추정치로 초당 약 2.5개의 발화 단어를 제안하므로 멈춤과 보이는 동작을 위한 여유를 남깁니다. 짧은 소개는 한 문장 뒤 제품을 드러내는 잠깐의 여유로 계획할 수 있습니다. 실제 단어와 생성 소리가 공간·동작에 맞는지 들어 보세요.</p><p>출력 길이는 5–15초 사이의 정수 초로 선택하며 기본값은 5초입니다. 해상도는 480p, 768p, 1080p 또는 2k 크기 등급입니다. 문서상 구도 선택은 21:9, 16:9, 4:3, 1:1, 3:4, 9:16입니다. 1080p 또는 2k 텍스트-비디오와 참조-비디오에서는 16:9 또는 9:16을 선택하며 적응형 참조 구도는 480p와 768p에서 문서화되어 있습니다. 이미지-비디오는 첫 이미지 비율을 따르므로 필요한 형태가 달라지면 생성 전에 자릅니다. 크기 등급 이름이 통상적인 특정 픽셀 쌍을 뜻한다고 가정하지 말고 완성 결과의 실제 크기를 검토하세요.</p><p>모델 가이드는 H.264 영상 인코딩과 32kHz 스테레오 AAC 오디오의 MP4 영상을 명시합니다. 생성은 비동기로 처리되며 완료 작업은 재생 가능한 영상 위치, 길이와 크기를 제공합니다. 서명된 영상 위치는 작업을 다시 조회해 갱신할 수 있습니다. 편집 검토를 위해 실제 클립, 참조 자료와 기획을 보관하세요. 대기·처리 기록은 생성을 추적하며 완성 영상이 화면·음성·소리를 평가할 제작 에셋입니다.</p><p>제조사는 프롬프트 향상 옵션으로 turbo, quality, disabled를 문서화하며 disabled는 준비 문구를 그대로 유지합니다. 고정 시드는 다른 입력을 유지하면서 한 절의 변경을 비교할 때 유용합니다. 선택 시드와 설정을 숏 기획에 기록하세요. 화면 글자는 의도한 문구를 짧고 정확하게 쓰며 가이드는 문단, 작은 글씨와 라벨 있는 도표를 나중에 합성하도록 권장합니다. 문구가 정확히 재현됐다고 가정하지 말고 생성 제목의 모든 글자를 확인하세요.</p><p>가이드는 긴 화면 텍스트, 꽃잎·종이·머리카락 같은 부드러운 유기적 움직임과 손으로 물체를 가까이 다루는 장면을 덜 안정적인 영역으로 식별합니다. 절차 설명에서는 명확하게 쓴 대사로 단계를 전달하고 화면에는 안정된 인물이나 물체를 보여 주세요. 물리적 조작 자체가 정확해야 할 때는 별도로 검증한 영상을 사용합니다. 숏 전체에서 물체 연속성, 접촉, 얼굴·손 디테일, 대사와 소리를 검토하세요. 다음 테이크에서 바꿀 내용을 간결하게 정리하면 상세한 제작 기획을 실용적으로 유지할 수 있습니다.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Ailoot에서 사용 가능 · 입력 및 메서드</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · 동영상</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>입력</dt><dd><code>text</code>, <code>image</code>, <code>audio</code>, <code>video</code></dd></div><div><dt>출력</dt><dd><code>video</code></dd></div><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>heygen/heygen-video-1</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>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, 768p, 2K</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>21:9, 16:9, 4:3, 1:1, 3:4, 9:16</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</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>최대 항목 수: 1</div><div>입력 콘텐츠: 프레임 객체 배열입니다. 각 객체에는 type=image_url, url을 포함하는 image_url 및 frame_type이 있습니다. HTTPS 이미지 URL을 사용하고 frame_type을 first_frame으로 설정하세요. 각 프레임 역할은 최대 한 번만 나타날 수 있습니다.</div><div>정확한 키: type, image_url, frame_type</div><div>조건: 이 키는 각 프레임 객체를 설명합니다. image_url에는 url만 포함됩니다. 텍스트만 사용하는 요청에서는 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></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>prompt는 텍스트로, duration은 정수 단위 초로 제공하세요. 지원되는 해상도를 선택하고 필요한 경우 화면 비율을 지정하세요.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: 유형: string · heygen/heygen-video-1</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, frame_type이 있으며, image_url에는 url이 포함됩니다. type을 image_url로 설정하세요. first_frame을 사용하세요. 각 프레임 역할은 최대 한 번만 나타날 수 있습니다. 각 프레임에 공개 HTTPS 이미지 URL을 제공하세요. 지원되는 해상도를 선택하고 필요한 경우 화면 비율을 지정하세요.</code></p><p class=\"note-s\">정확한 키: type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: 유형: string · heygen/heygen-video-1</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, video_url, audio_url로 설정하고 url을 포함하는 해당 필드를 사용하세요. 공개 HTTPS URL을 사용하세요. 참조 모드를 선택하려면 frame_images를 생략하세요. 지원되는 해상도를 선택하고 필요한 경우 화면 비율을 지정하세요.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: 유형: string · heygen/heygen-video-1</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, video</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, 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>동영상 초당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>resolution: 2k</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격 · 비교 전용 추정치</span> <b>$0.2</b> <span class=\"price-unit\">동영상 초당</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>동영상 요금</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>동영상 초당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>resolution: 480p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격 · 비교 전용 추정치</span> <b>$0.04</b> <span class=\"price-unit\">동영상 초당</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>동영상 요금</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>동영상 초당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>resolution: 768p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격 · 비교 전용 추정치</span> <b>$0.072</b> <span class=\"price-unit\">동영상 초당</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>동영상 요금</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>동영상 초당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>생성 모드: reference; 해상도: 2k</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격 · 비교 전용 추정치</span> <b>$0.36</b> <span class=\"price-unit\">동영상 초당</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>동영상 요금</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>동영상 초당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>생성 모드: reference; 해상도: 480p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격 · 비교 전용 추정치</span> <b>$0.14</b> <span class=\"price-unit\">동영상 초당</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>동영상 요금</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>동영상 초당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>생성 모드: reference; 해상도: 768p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격 · 비교 전용 추정치</span> <b>$0.2</b> <span class=\"price-unit\">동영상 초당</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>참조용 입력 이미지</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>참조 입력 이미지당</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>—</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>입력 · 참조용 입력 이미지 · 비교 전용 추정치</span> <b>$0.08</b> <span class=\"price-unit\">참조 입력 이미지당</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>예상 생성 비용</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"예측 수량\"><span class=\"card-cell-label\">예측 수량</span>1회 생성 예상치</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>—</td><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>—</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 예상 생성 비용 · 비교 전용 추정치</span> <b>$0.2</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>resolution: 2k</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격</span> <b>$0.18</b> <span class=\"price-unit\">동영상 초당</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: 480p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격</span> <b>$0.04</b> <span class=\"price-unit\">동영상 초당</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: 768p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격</span> <b>$0.06</b> <span class=\"price-unit\">동영상 초당</span></div><p class=\"note-s\">표시된 구성의 공개 가격 참고값입니다. 최종 요금은 실제 청구된 구성을 따릅니다.</p></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>동영상 요금</th><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>생성 모드: reference; 해상도: 2k</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격</span> <b>$0.36</b> <span class=\"price-unit\">동영상 초당</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>생성 모드: reference; 해상도: 480p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격</span> <b>$0.08</b> <span class=\"price-unit\">동영상 초당</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>생성 모드: reference; 해상도: 768p</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 동영상 가격</span> <b>$0.12</b> <span class=\"price-unit\">동영상 초당</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-1713-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1713-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-1713-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1713-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;aspect_ratio&quot;:&quot;16:9&quot;,&quot;duration&quot;:8,&quot;model&quot;:&quot;heygen/heygen-video-1&quot;,&quot;prompt&quot;:&quot;A serene mountain landscape at sunset&quot;,&quot;resolution&quot;:&quot;480p&quot;}&#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-1714-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1714-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-1714-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1714-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-1715-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1715-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-1715-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1715-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=heygen%2Fheygen-video-1&amp;route=Ultra&amp;caller=heygen%2Fheygen-video-1&amp;fmt=videos\"><code>heygen/heygen-video-1</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\">위에 표시된 메서드 경로를 사용하세요.</p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=heygen%2Fheygen-video-1&amp;route=Ultra&amp;caller=heygen%2Fheygen-video-1&amp;fmt=videos\"><code>heygen/heygen-video-1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "heygen/heygen-video-1",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "heygen/heygen-video-1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|heygen%2Fheygen-video-1",
      "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": [
                    "heygen/heygen-video-1"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "prompt는 텍스트로, duration은 정수 단위 초로 제공하세요. 지원되는 해상도를 선택하고 필요한 경우 화면 비율을 지정하세요.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "작성한 프롬프트입니다."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "heygen/heygen-video-1"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images는 배열입니다. 각 프레임 객체에는 type, image_url, frame_type이 있으며, image_url에는 url이 포함됩니다. type을 image_url로 설정하세요. first_frame을 사용하세요. 각 프레임 역할은 최대 한 번만 나타날 수 있습니다. 각 프레임에 공개 HTTPS 이미지 URL을 제공하세요. 지원되는 해상도를 선택하고 필요한 경우 화면 비율을 지정하세요.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "작성한 프롬프트와 첫 프레임 이미지입니다."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "heygen/heygen-video-1"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references는 객체 배열입니다. type을 image_url, video_url, audio_url로 설정하고 url을 포함하는 해당 필드를 사용하세요. 공개 HTTPS URL을 사용하세요. 참조 모드를 선택하려면 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": [
                  "heygen/heygen-video-1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "heygen/heygen-video-1"
                },
                "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": [
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    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",
                  "768p",
                  "2K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "768p",
                    "2K"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "21:9",
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "이 키는 각 프레임 객체를 설명합니다. image_url에는 url만 포함됩니다. 텍스트만 사용하는 요청에서는 frame_images를 생략하세요.",
                "content": "프레임 객체 배열입니다. 각 객체에는 type=image_url, url을 포함하는 image_url 및 frame_type이 있습니다. HTTPS 이미지 URL을 사용하고 frame_type을 first_frame으로 설정하세요. 각 프레임 역할은 최대 한 번만 나타날 수 있습니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 1,
                "max_items": 1,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_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": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "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": {
                          "type": {
                            "const": "video_url"
                          },
                          "video_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"
                          }
                        },
                        "required": [
                          "type",
                          "video_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": 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": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "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": [
                    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"
                        ]
                      },
                      "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": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false
                  ],
                  "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": {
                          "type": {
                            "const": "video_url"
                          },
                          "video_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"
                          }
                        },
                        "required": [
                          "type",
                          "video_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": "heygen/heygen-video-1"
                },
                "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",
                    "768p",
                    "2K"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": false,
                "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."
              ]
            },
            "unsupported": [
              "size",
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 2k",
              "quoted_unit": "per video second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_2k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.04",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.04",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 768p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.072",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_768p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.072",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "생성 모드: reference; 해상도: 2k",
              "quoted_unit": "per video second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.36",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_2k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.36",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "생성 모드: reference; 해상도: 480p",
              "quoted_unit": "per video second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.14",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.14",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "생성 모드: reference; 해상도: 768p",
              "quoted_unit": "per video second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_768p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per reference input image"
            },
            "label": "reference input image",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_input_images",
                "label": "reference input image",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per reference input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "reference_input_images"
              }
            ]
          },
          {
            "basis": "이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "예상 생성 비용",
            "units": [
              {
                "amount": "0.2",
                "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.2",
                "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('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"heygen/heygen-video-1\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"480p\"}', 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",
          "video"
        ],
        "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 2k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_2k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.04",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.04",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 768p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.072",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_768p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.072",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "generation mode: reference; resolution: 2k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.36",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_2k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.36",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "generation mode: reference; resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.14",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.14",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "generation mode: reference; resolution: 768p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_768p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per reference input image"
            },
            "label": "reference input image",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_input_images",
                "label": "reference input image",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per reference input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "reference_input_images"
              }
            ]
          },
          {
            "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.2",
                "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.2",
                "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": "heygen/heygen-video-1",
        "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.2",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_2k",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.04",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_480p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.04",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.072",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_768p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.072",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.36",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "reference_duration_seconds_2k",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.36",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.14",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "reference_duration_seconds_480p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.14",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.2",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "reference_duration_seconds_768p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.08",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "reference_input_images",
            "label": "reference input image",
            "native_amount_usd_per_unit": "0.08",
            "native_quantity": 1,
            "public_unit_label": "per reference input image",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "reference_input_images"
          },
          {
            "amount": "0.2",
            "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.2",
            "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": "heygen/heygen-video-1",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "a54e49120f7afdd814008b2f2fb1d9a67271db373ccf13066fcfe1dcb3c03535",
    "input_html_sha256": "04a3529f4b1953cf1a39e5d54d3e9c07c749eea3430586ca9f86c951fb8f4b8e",
    "private_audit_sha256": "151439d5676f8c4e5efe3757e1d4626c684ddb503e03b25665ff2b890f85b99e",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/heygen-heygen-video-1/",
    "description": "HeyGen Video는 텍스트, 첫 이미지 또는 시각·오디오 참조에서 대사, 환경음과 효과음이 포함된 5–15초 장면을 생성합니다. 범용 heygen-video-1 모델은 참조 제어와 MP4 출력으로 제품·캐릭터 숏을 지원합니다. 명확하고 한정된 동작이 유용한 제작 기획이 됩니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/heygen-heygen-video-1/index.md",
    "title": "HeyGen: HeyGen Video — Ailoot",
    "url": "https://ailoot.ai/models/ko/heygen-heygen-video-1/"
  },
  "rawModel": {
    "about": "HeyGen Video는 제조사가 heygen-video-1로 식별하는 HeyGen의 범용 장면 생성 모델입니다. 창작 기획에서 피사체, 배경, 빛과 소리를 함께 만듭니다. 각 클립은 5–15초이며 대사, 환경음과 효과음을 포함한 생성 오디오 트랙을 담습니다. 유용한 제작 입력으로는 장면 설명, 제품 사진 또는 인물·장소·움직임을 정하는 자료가 있습니다. 결과 에셋은 제품 소개, 온보딩 삽입 영상, 부동산 소개나 다른 영상 편집에 사용할 짧은 장면입니다.\n\n세 모드는 입력에 서로 다른 역할을 줍니다. 텍스트-비디오는 프롬프트에서 장면을 만듭니다. 이미지-비디오는 실제로 제공 이미지에서 시작한 뒤 동작 기획을 따릅니다. 참조-비디오는 제공한 이미지·영상과 선택적 오디오로 새로 구성한 장면을 안내하며 이미지나 영상 참조가 최소 하나 필요합니다. 시작 구도가 정지 이미지와 일치해야 한다면 첫 프레임 이미지를, 알려진 물체가 다른 구도에 나와야 한다면 참조를 선택하세요. 이 장면 모델은 HeyGen 아바타 렌더링 엔진 및 Video Agent 구성 워크플로와 구별됩니다.\n\n제작사 가이드는 피사체 하나, 장소 하나와 한정된 동작 하나를 고정 또는 부드럽게 움직이는 카메라로 담는 상세하고 구체적인 숏 지시를 권장합니다. 카메라 위치, 렌즈나 피사계 심도 의도, 빛, 표면 질감과 색 처리를 설명하세요. 접촉이 필요한 동작에서는 물체가 어디에서 닿는지 설명합니다. 직접 만든 제품 예시에서는 여행용 보온병 참조 사진을 쓰고 나무 카운터 위 보온병 옆에서 진행자가 말하며 카메라가 보온병 쪽으로 조금 이동하도록 요청할 수 있습니다. 결과에서 보온병 형태, 위치와 보이는 표식을 확인하세요.\n\n참조 목록은 이미지 최대 9개, 영상 3개와 오디오 3개를 지원하며 총 최대 12개입니다. 제조사 프롬프트 형식에서 이미지, 영상과 오디오는 각각 번호를 매기며 첫 이미지는 <Picture 1>, 첫 영상은 <Video 1>입니다. 각 참조에 역할을 주고 기획에서 명시적으로 식별하세요. 모델은 각 참조 영상의 첫 5초를 읽으므로 관련 구간을 시작 부분에 배치합니다. API 참조는 참조 영상 화면비를 1:4–4:1로 명시합니다. 원하는 움직임이 끝에만 나오는 긴 클립은 이 5초 입력 구간에 맞지 않는 준비입니다.\n\n문서상 참조 인터페이스는 직접 접근 가능한 HTTPS 리소스, 업로드 에셋 식별자 또는 인라인 base64를 받습니다. 가이드의 최대 이미지 크기는 URL 제공 시 16MB, 인라인은 5MB이며 영상·오디오는 URL 제공 시 32MB, 인라인은 16MB입니다. 중요한 피사체가 쉽게 구별되고 여러 참조가 서로 충돌하는 지시를 주지 않도록 원본을 준비하세요. 첫 프레임 이미지에서 의도한 방향을 유지합니다. 이 입력 세부사항은 제작사 참조 워크플로에 관한 것으로 선택 모드의 창작 자료 정리에 도움이 됩니다.\n\n화면과 같은 기획에서 소리도 연출하세요. 대사, 발성, 실내 기본 소음과 특정 효과를 명시하고 소리가 가까운지 먼지도 설명합니다. 장면에 말과 환경음만 있어야 한다면 원하는 음악 처리도 지정하세요. 가이드는 계획 추정치로 초당 약 2.5개의 발화 단어를 제안하므로 멈춤과 보이는 동작을 위한 여유를 남깁니다. 짧은 소개는 한 문장 뒤 제품을 드러내는 잠깐의 여유로 계획할 수 있습니다. 실제 단어와 생성 소리가 공간·동작에 맞는지 들어 보세요.\n\n출력 길이는 5–15초 사이의 정수 초로 선택하며 기본값은 5초입니다. 해상도는 480p, 768p, 1080p 또는 2k 크기 등급입니다. 문서상 구도 선택은 21:9, 16:9, 4:3, 1:1, 3:4, 9:16입니다. 1080p 또는 2k 텍스트-비디오와 참조-비디오에서는 16:9 또는 9:16을 선택하며 적응형 참조 구도는 480p와 768p에서 문서화되어 있습니다. 이미지-비디오는 첫 이미지 비율을 따르므로 필요한 형태가 달라지면 생성 전에 자릅니다. 크기 등급 이름이 통상적인 특정 픽셀 쌍을 뜻한다고 가정하지 말고 완성 결과의 실제 크기를 검토하세요.\n\n모델 가이드는 H.264 영상 인코딩과 32kHz 스테레오 AAC 오디오의 MP4 영상을 명시합니다. 생성은 비동기로 처리되며 완료 작업은 재생 가능한 영상 위치, 길이와 크기를 제공합니다. 서명된 영상 위치는 작업을 다시 조회해 갱신할 수 있습니다. 편집 검토를 위해 실제 클립, 참조 자료와 기획을 보관하세요. 대기·처리 기록은 생성을 추적하며 완성 영상이 화면·음성·소리를 평가할 제작 에셋입니다.\n\n제조사는 프롬프트 향상 옵션으로 turbo, quality, disabled를 문서화하며 disabled는 준비 문구를 그대로 유지합니다. 고정 시드는 다른 입력을 유지하면서 한 절의 변경을 비교할 때 유용합니다. 선택 시드와 설정을 숏 기획에 기록하세요. 화면 글자는 의도한 문구를 짧고 정확하게 쓰며 가이드는 문단, 작은 글씨와 라벨 있는 도표를 나중에 합성하도록 권장합니다. 문구가 정확히 재현됐다고 가정하지 말고 생성 제목의 모든 글자를 확인하세요.\n\n가이드는 긴 화면 텍스트, 꽃잎·종이·머리카락 같은 부드러운 유기적 움직임과 손으로 물체를 가까이 다루는 장면을 덜 안정적인 영역으로 식별합니다. 절차 설명에서는 명확하게 쓴 대사로 단계를 전달하고 화면에는 안정된 인물이나 물체를 보여 주세요. 물리적 조작 자체가 정확해야 할 때는 별도로 검증한 영상을 사용합니다. 숏 전체에서 물체 연속성, 접촉, 얼굴·손 디테일, 대사와 소리를 검토하세요. 다음 테이크에서 바꿀 내용을 간결하게 정리하면 상세한 제작 기획을 실용적으로 유지할 수 있습니다.",
    "alias_of": null,
    "aliases": [],
    "author": "HeyGen",
    "available": null,
    "canonical_model": "heygen/heygen-video-1",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video",
        "audio"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.2",
            "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.2",
            "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": "48e35f6c3af54cdc8f715db2",
        "label": "동영상 설정별 요금 참조",
        "profiles": [
          {
            "basis": "표시된 구성의 공개 가격 참고값입니다. 최종 요금은 실제 청구된 구성을 따릅니다.",
            "dimensions": {
              "conditions": "resolution: 2k"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.18",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "표시된 구성의 공개 가격 참고값입니다. 최종 요금은 실제 청구된 구성을 따릅니다.",
            "dimensions": {
              "conditions": "resolution: 480p"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.04",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "표시된 구성의 공개 가격 참고값입니다. 최종 요금은 실제 청구된 구성을 따릅니다.",
            "dimensions": {
              "conditions": "resolution: 768p"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "표시된 구성의 공개 가격 참고값입니다. 최종 요금은 실제 청구된 구성을 따릅니다.",
            "dimensions": {
              "conditions": "생성 모드: reference; 해상도: 2k"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.36",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "표시된 구성의 공개 가격 참고값입니다. 최종 요금은 실제 청구된 구성을 따릅니다.",
            "dimensions": {
              "conditions": "생성 모드: reference; 해상도: 480p"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "표시된 구성의 공개 가격 참고값입니다. 최종 요금은 실제 청구된 구성을 따릅니다.",
            "dimensions": {
              "conditions": "생성 모드: reference; 해상도: 768p"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "heygen/heygen-video-1",
    "input": [
      "text",
      "image",
      "audio",
      "video"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "표시된 요율은 생성 전 비용을 예상하는 데 사용됩니다. 최종 청구액은 최초 생성에 기록된 비용으로 계산됩니다. 측정된 출력 길이와 예상 수량은 최종 청구 수량이 아닙니다.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "실제로 소유한 모든 출력과 함께 반환된 측정 메타데이터를 보존하세요.",
            "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": [
                    "heygen/heygen-video-1"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "prompt는 텍스트로, duration은 정수 단위 초로 제공하세요. 지원되는 해상도를 선택하고 필요한 경우 화면 비율을 지정하세요.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "작성한 프롬프트입니다."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "heygen/heygen-video-1"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images는 배열입니다. 각 프레임 객체에는 type, image_url, frame_type이 있으며, image_url에는 url이 포함됩니다. type을 image_url로 설정하세요. first_frame을 사용하세요. 각 프레임 역할은 최대 한 번만 나타날 수 있습니다. 각 프레임에 공개 HTTPS 이미지 URL을 제공하세요. 지원되는 해상도를 선택하고 필요한 경우 화면 비율을 지정하세요.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "작성한 프롬프트와 첫 프레임 이미지입니다."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "heygen/heygen-video-1"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references는 객체 배열입니다. type을 image_url, video_url, audio_url로 설정하고 url을 포함하는 해당 필드를 사용하세요. 공개 HTTPS URL을 사용하세요. 참조 모드를 선택하려면 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": [
                  "heygen/heygen-video-1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "heygen/heygen-video-1"
                },
                "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": [
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    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",
                  "768p",
                  "2K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "768p",
                    "2K"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "21:9",
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "이 키는 각 프레임 객체를 설명합니다. image_url에는 url만 포함됩니다. 텍스트만 사용하는 요청에서는 frame_images를 생략하세요.",
                "content": "프레임 객체 배열입니다. 각 객체에는 type=image_url, url을 포함하는 image_url 및 frame_type이 있습니다. HTTPS 이미지 URL을 사용하고 frame_type을 first_frame으로 설정하세요. 각 프레임 역할은 최대 한 번만 나타날 수 있습니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 1,
                "max_items": 1,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_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": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "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": {
                          "type": {
                            "const": "video_url"
                          },
                          "video_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"
                          }
                        },
                        "required": [
                          "type",
                          "video_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": 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": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "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": [
                    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"
                        ]
                      },
                      "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": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false
                  ],
                  "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": {
                          "type": {
                            "const": "video_url"
                          },
                          "video_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"
                          }
                        },
                        "required": [
                          "type",
                          "video_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": "heygen/heygen-video-1"
                },
                "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",
                    "768p",
                    "2K"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": false,
                "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."
              ]
            },
            "unsupported": [
              "size",
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 2k",
              "quoted_unit": "per video second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_2k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.04",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.04",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 768p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.072",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_768p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.072",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "생성 모드: reference; 해상도: 2k",
              "quoted_unit": "per video second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.36",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_2k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.36",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "생성 모드: reference; 해상도: 480p",
              "quoted_unit": "per video second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.14",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.14",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "생성 모드: reference; 해상도: 768p",
              "quoted_unit": "per video second"
            },
            "label": "동영상 요금",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_768p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per reference input image"
            },
            "label": "reference input image",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_input_images",
                "label": "reference input image",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per reference input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "reference_input_images"
              }
            ]
          },
          {
            "basis": "이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "예상 생성 비용",
            "units": [
              {
                "amount": "0.2",
                "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.2",
                "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('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"heygen/heygen-video-1\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"480p\"}', 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",
          "video"
        ],
        "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 2k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_2k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.04",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.04",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 768p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.072",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_768p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.072",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "generation mode: reference; resolution: 2k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.36",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_2k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.36",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "generation mode: reference; resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.14",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.14",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "generation mode: reference; resolution: 768p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_duration_seconds_768p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per reference input image"
            },
            "label": "reference input image",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_input_images",
                "label": "reference input image",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per reference input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "reference_input_images"
              }
            ]
          },
          {
            "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.2",
                "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.2",
                "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": "heygen/heygen-video-1",
        "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.2",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_2k",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.04",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_480p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.04",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.072",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_768p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.072",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.36",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "reference_duration_seconds_2k",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.36",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.14",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "reference_duration_seconds_480p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.14",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.2",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "reference_duration_seconds_768p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.08",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "reference_input_images",
            "label": "reference input image",
            "native_amount_usd_per_unit": "0.08",
            "native_quantity": 1,
            "public_unit_label": "per reference input image",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "reference_input_images"
          },
          {
            "amount": "0.2",
            "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.2",
            "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": "heygen/heygen-video-1",
        "request_model_id": "heygen/heygen-video-1",
        "route_label": "Ultra"
      }
    ],
    "name": "HeyGen: HeyGen Video",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.2,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.2,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "hosted_reference"
        },
        "dimensions": {
          "published_labels": [
            "2k"
          ],
          "variant": "duration_seconds_2k"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.18",
            "amount_unit": "usd_per_second",
            "conditions": {
              "published_labels": [
                "2k"
              ],
              "variant": "duration_seconds_2k"
            },
            "key": "duration_seconds_2k",
            "label": "duration seconds 2k",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "hosted_reference"
        },
        "dimensions": {
          "published_labels": [
            "480p"
          ],
          "variant": "duration_seconds_480p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.04",
            "amount_unit": "usd_per_second",
            "conditions": {
              "published_labels": [
                "480p"
              ],
              "variant": "duration_seconds_480p"
            },
            "key": "duration_seconds_480p",
            "label": "duration seconds 480p",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "hosted_reference"
        },
        "dimensions": {
          "published_labels": [
            "768p"
          ],
          "variant": "duration_seconds_768p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.06",
            "amount_unit": "usd_per_second",
            "conditions": {
              "published_labels": [
                "768p"
              ],
              "variant": "duration_seconds_768p"
            },
            "key": "duration_seconds_768p",
            "label": "duration seconds 768p",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "hosted_reference"
        },
        "dimensions": {
          "published_labels": [
            "2k"
          ],
          "variant": "reference_duration_seconds_2k"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.36",
            "amount_unit": "usd_per_second",
            "conditions": {
              "published_labels": [
                "2k"
              ],
              "variant": "reference_duration_seconds_2k"
            },
            "key": "reference_duration_seconds_2k",
            "label": "reference duration seconds 2k",
            "profile_index": 3,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "hosted_reference"
        },
        "dimensions": {
          "published_labels": [
            "480p"
          ],
          "variant": "reference_duration_seconds_480p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.08",
            "amount_unit": "usd_per_second",
            "conditions": {
              "published_labels": [
                "480p"
              ],
              "variant": "reference_duration_seconds_480p"
            },
            "key": "reference_duration_seconds_480p",
            "label": "reference duration seconds 480p",
            "profile_index": 4,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "hosted_reference"
        },
        "dimensions": {
          "published_labels": [
            "768p"
          ],
          "variant": "reference_duration_seconds_768p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.12",
            "amount_unit": "usd_per_second",
            "conditions": {
              "published_labels": [
                "768p"
              ],
              "variant": "reference_duration_seconds_768p"
            },
            "key": "reference_duration_seconds_768p",
            "label": "reference duration seconds 768p",
            "profile_index": 5,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.18",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=2k",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.18",
            "key": "duration_seconds_2k",
            "label": "output second",
            "native_amount_usd_per_unit": "0.18",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.04",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=480p",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.04",
            "key": "duration_seconds_480p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.04",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.06",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=768p",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.06",
            "key": "duration_seconds_768p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.36",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=2k · reference_to_video",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.36",
            "key": "reference_duration_seconds_2k",
            "label": "output second",
            "native_amount_usd_per_unit": "0.36",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.08",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=480p · reference_to_video",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.08",
            "key": "reference_duration_seconds_480p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.08",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=768p · reference_to_video",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.12",
            "key": "reference_duration_seconds_768p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          }
        ]
      }
    ],
    "public_id": "heygen/heygen-video-1",
    "short": "HeyGen Video는 텍스트, 첫 이미지 또는 시각·오디오 참조에서 대사, 환경음과 효과음이 포함된 5–15초 장면을 생성합니다. 범용 heygen-video-1 모델은 참조 제어와 MP4 출력으로 제품·캐릭터 숏을 지원합니다. 명확하고 한정된 동작이 유용한 제작 기획이 됩니다."
  },
  "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": "HeyGen Video는 텍스트, 첫 이미지 또는 시각·오디오 참조에서 대사, 환경음과 효과음이 포함된 5–15초 장면을 생성합니다. 범용 heygen-video-1 모델은 참조 제어와 MP4 출력으로 제품·캐릭터 숏을 지원합니다. 명확하고 한정된 동작이 유용한 제작 기획이 됩니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_exact_canonical_sha256": "ccdba97ae93292f4021dcc8675a4afcdfd843da475c14dab0eefe4e9cc8a11ba",
    "raw_model_js_projection_sha256": "c60e460645c661a3fcbb766ef2182c9f55f6dee92107286f0f8d2676d9e9f8f2",
    "raw_model_json_sha256": "ccdba97ae93292f4021dcc8675a4afcdfd843da475c14dab0eefe4e9cc8a11ba",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "32b79192080d715d43afcf2a89bc312ccca65afee086c07ee6cd0cbeeddde3af"
}
