{
  "aboutHtml": "<p>DOP Lite는 Higgsfield가 문서화한 이미지 동영상 변환 워크플로를 통해 제공된 이미지에 움직임을 부여합니다. 정확한 모델 선택 값은 dop-lite입니다. 최상위 모델 선택 값과 문서화된 params 객체 안의 model 값 모두에 dop-lite를 사용하세요. 이미지는 시각 자료를 제공하고, 모션 템플릿과 서면 지시는 요청한 움직임과 효과를 제어합니다.</p><p>의도한 피사체, 중요한 세부 사항, 주변 공간이 잘 보이는 참조 이미지를 준비하세요. 가이드는 세부 사항을 더 선명하게 표현하기 위해 고해상도 이미지를 권장합니다. 제품 장면이라면 물체의 형태와 움직이는 동안에도 알아볼 수 있어야 하는 표면이 드러나는 구도를 선택하세요. 인물이나 환경이라면 움직임으로 강조할 시각적 특징을 지정하세요. 메서드 예제에서 사용하는 이미지 입력을 통해 실제 참조 이미지 URL을 제공하세요.</p><p>이 작업에는 모션 템플릿을 하나 또는 두 개 사용하는 방식이 문서화되어 있습니다. 두 개를 제공하면 가이드는 그 효과가 결합된다고 설명합니다. 프리셋 설명에는 카메라 움직임, 피사체 회전, 시각적 변형이 포함됩니다. 예를 들어 Dolly In은 카메라가 다가가는 움직임을, 3D Rotation은 피사체나 제품이 제자리에서 회전하는 움직임을 뜻합니다. 의도한 순서에 맞는 문서화된 템플릿 식별자를 선택하고, 각 식별자를 해당 강도 값과 함께 보관하세요.</p><p>모션 강도는 0부터 1까지의 숫자이며, 문서화된 기본값은 0.8입니다. 가이드는 0.3을 미묘한 효과로, 1을 강한 움직임으로 설명합니다. 알아볼 수 있게 유지해야 하는 세부 사항에 따라 강도를 선택하고, 생성된 움직임 전체를 검토하세요. 모션 설명과 강도는 서로 다른 역할을 합니다. 템플릿이 효과를 선택하고, 강도는 그 효과의 세기를 제어합니다.</p><p>설명에 따르면 prompt 필드는 반드시 있어야 하지만 빈 문자열도 허용됩니다. 템플릿 중심 효과에는 prompt를 비워 두는 것이 권장됩니다. 텍스트를 제공한다면 프롬프트가 결과를 크게 바꿀 수 있으므로 템플릿 설명을 포함하는 것이 권장됩니다. enhance_prompt 설정은 프롬프트 최적화를 활성화하며, 문서화된 기본값은 true입니다. 버전을 비교할 때는 텍스트와 이 설정을 참조 이미지 및 선택한 템플릿과 함께 보관하세요.</p><p>seed 설정은 1부터 1000000까지의 정수를 받습니다. 선택한 seed를 생성 설정과 함께 기록하세요. 요청에는 정수형 seconds 필드도 있습니다. 사용한 값을 결과 클립과 함께 보관하고, 클립의 실제 길이와 프레이밍을 확인하세요. 불리언 check_nsfw는 문서화된 콘텐츠 필터를 활성화하며 기본값은 true입니다. 이 설정들은 이미지 동영상 변환 요청에 속하므로, 실제 선택한 정확한 모델과 연결해 두어야 합니다.</p><p>생성은 비동기 방식입니다. 설정된 상태 및 결과 조회를 진행하는 동안 반환된 작업 식별자를 유지하세요. 완료 결과 매핑은 완료된 작업 항목과 그 원본 결과 URL을 읽습니다. 완료된 동영상 결과를 모두 저장하고, 각 작업 식별자를 반환된 URL과 함께 보관하세요. 완료된 모든 항목을 해당 작업의 결과로 함께 유지하세요.</p><p>동영상 전체를 제공된 이미지, 선택한 효과, 서면 지시와 대조해 검토하세요. 확인할 항목은 피사체의 모습, 움직임, 프레이밍, 마지막 장면입니다. 수정할 때는 바꿀 구체적인 시각적 세부 사항을 지정하고 요청에서 잘된 부분은 유지하세요. 원본 이미지 참조, 정확한 모델 선택 값, prompt, 모션 식별자, 강도, seed, 요청 설정, 완료된 결과물을 함께 보관하면 다음 비교에서 실제 생성 기록을 사용할 수 있습니다.</p>",
  "aboutText": "DOP Lite는 Higgsfield가 문서화한 이미지 동영상 변환 워크플로를 통해 제공된 이미지에 움직임을 부여합니다. 정확한 모델 선택 값은 dop-lite입니다. 최상위 모델 선택 값과 문서화된 params 객체 안의 model 값 모두에 dop-lite를 사용하세요. 이미지는 시각 자료를 제공하고, 모션 템플릿과 서면 지시는 요청한 움직임과 효과를 제어합니다.\n\n의도한 피사체, 중요한 세부 사항, 주변 공간이 잘 보이는 참조 이미지를 준비하세요. 가이드는 세부 사항을 더 선명하게 표현하기 위해 고해상도 이미지를 권장합니다. 제품 장면이라면 물체의 형태와 움직이는 동안에도 알아볼 수 있어야 하는 표면이 드러나는 구도를 선택하세요. 인물이나 환경이라면 움직임으로 강조할 시각적 특징을 지정하세요. 메서드 예제에서 사용하는 이미지 입력을 통해 실제 참조 이미지 URL을 제공하세요.\n\n이 작업에는 모션 템플릿을 하나 또는 두 개 사용하는 방식이 문서화되어 있습니다. 두 개를 제공하면 가이드는 그 효과가 결합된다고 설명합니다. 프리셋 설명에는 카메라 움직임, 피사체 회전, 시각적 변형이 포함됩니다. 예를 들어 Dolly In은 카메라가 다가가는 움직임을, 3D Rotation은 피사체나 제품이 제자리에서 회전하는 움직임을 뜻합니다. 의도한 순서에 맞는 문서화된 템플릿 식별자를 선택하고, 각 식별자를 해당 강도 값과 함께 보관하세요.\n\n모션 강도는 0부터 1까지의 숫자이며, 문서화된 기본값은 0.8입니다. 가이드는 0.3을 미묘한 효과로, 1을 강한 움직임으로 설명합니다. 알아볼 수 있게 유지해야 하는 세부 사항에 따라 강도를 선택하고, 생성된 움직임 전체를 검토하세요. 모션 설명과 강도는 서로 다른 역할을 합니다. 템플릿이 효과를 선택하고, 강도는 그 효과의 세기를 제어합니다.\n\n설명에 따르면 prompt 필드는 반드시 있어야 하지만 빈 문자열도 허용됩니다. 템플릿 중심 효과에는 prompt를 비워 두는 것이 권장됩니다. 텍스트를 제공한다면 프롬프트가 결과를 크게 바꿀 수 있으므로 템플릿 설명을 포함하는 것이 권장됩니다. enhance_prompt 설정은 프롬프트 최적화를 활성화하며, 문서화된 기본값은 true입니다. 버전을 비교할 때는 텍스트와 이 설정을 참조 이미지 및 선택한 템플릿과 함께 보관하세요.\n\nseed 설정은 1부터 1000000까지의 정수를 받습니다. 선택한 seed를 생성 설정과 함께 기록하세요. 요청에는 정수형 seconds 필드도 있습니다. 사용한 값을 결과 클립과 함께 보관하고, 클립의 실제 길이와 프레이밍을 확인하세요. 불리언 check_nsfw는 문서화된 콘텐츠 필터를 활성화하며 기본값은 true입니다. 이 설정들은 이미지 동영상 변환 요청에 속하므로, 실제 선택한 정확한 모델과 연결해 두어야 합니다.\n\n생성은 비동기 방식입니다. 설정된 상태 및 결과 조회를 진행하는 동안 반환된 작업 식별자를 유지하세요. 완료 결과 매핑은 완료된 작업 항목과 그 원본 결과 URL을 읽습니다. 완료된 동영상 결과를 모두 저장하고, 각 작업 식별자를 반환된 URL과 함께 보관하세요. 완료된 모든 항목을 해당 작업의 결과로 함께 유지하세요.\n\n동영상 전체를 제공된 이미지, 선택한 효과, 서면 지시와 대조해 검토하세요. 확인할 항목은 피사체의 모습, 움직임, 프레이밍, 마지막 장면입니다. 수정할 때는 바꿀 구체적인 시각적 세부 사항을 지정하고 요청에서 잘된 부분은 유지하세요. 원본 이미지 참조, 정확한 모델 선택 값, prompt, 모션 식별자, 강도, seed, 요청 설정, 완료된 결과물을 함께 보관하면 다음 비교에서 실제 생성 기록을 사용할 수 있습니다.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "b6b1f851142b791fcf76e93317e3eca48231d154fb941c6a0b19fba8ade7024e",
    "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\">Higgsfield: DOP Lite</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>Higgsfield /</span><code>dop-lite</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|dop-lite\">동영상</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\">DOP Lite는 문서화된 모션 템플릿, 조절 가능한 강도, 서면 지시로 제공된 이미지에 움직임을 부여합니다. 정확한 dop-lite 선택 값은 이미지 동영상 변환 요청을 사용하며, 비동기 작업을 통해 동영상을 반환합니다.</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>DOP Lite는 Higgsfield가 문서화한 이미지 동영상 변환 워크플로를 통해 제공된 이미지에 움직임을 부여합니다. 정확한 모델 선택 값은 dop-lite입니다. 최상위 모델 선택 값과 문서화된 params 객체 안의 model 값 모두에 dop-lite를 사용하세요. 이미지는 시각 자료를 제공하고, 모션 템플릿과 서면 지시는 요청한 움직임과 효과를 제어합니다.</p><p>의도한 피사체, 중요한 세부 사항, 주변 공간이 잘 보이는 참조 이미지를 준비하세요. 가이드는 세부 사항을 더 선명하게 표현하기 위해 고해상도 이미지를 권장합니다. 제품 장면이라면 물체의 형태와 움직이는 동안에도 알아볼 수 있어야 하는 표면이 드러나는 구도를 선택하세요. 인물이나 환경이라면 움직임으로 강조할 시각적 특징을 지정하세요. 메서드 예제에서 사용하는 이미지 입력을 통해 실제 참조 이미지 URL을 제공하세요.</p><p>이 작업에는 모션 템플릿을 하나 또는 두 개 사용하는 방식이 문서화되어 있습니다. 두 개를 제공하면 가이드는 그 효과가 결합된다고 설명합니다. 프리셋 설명에는 카메라 움직임, 피사체 회전, 시각적 변형이 포함됩니다. 예를 들어 Dolly In은 카메라가 다가가는 움직임을, 3D Rotation은 피사체나 제품이 제자리에서 회전하는 움직임을 뜻합니다. 의도한 순서에 맞는 문서화된 템플릿 식별자를 선택하고, 각 식별자를 해당 강도 값과 함께 보관하세요.</p><p>모션 강도는 0부터 1까지의 숫자이며, 문서화된 기본값은 0.8입니다. 가이드는 0.3을 미묘한 효과로, 1을 강한 움직임으로 설명합니다. 알아볼 수 있게 유지해야 하는 세부 사항에 따라 강도를 선택하고, 생성된 움직임 전체를 검토하세요. 모션 설명과 강도는 서로 다른 역할을 합니다. 템플릿이 효과를 선택하고, 강도는 그 효과의 세기를 제어합니다.</p><p>설명에 따르면 prompt 필드는 반드시 있어야 하지만 빈 문자열도 허용됩니다. 템플릿 중심 효과에는 prompt를 비워 두는 것이 권장됩니다. 텍스트를 제공한다면 프롬프트가 결과를 크게 바꿀 수 있으므로 템플릿 설명을 포함하는 것이 권장됩니다. enhance_prompt 설정은 프롬프트 최적화를 활성화하며, 문서화된 기본값은 true입니다. 버전을 비교할 때는 텍스트와 이 설정을 참조 이미지 및 선택한 템플릿과 함께 보관하세요.</p><p>seed 설정은 1부터 1000000까지의 정수를 받습니다. 선택한 seed를 생성 설정과 함께 기록하세요. 요청에는 정수형 seconds 필드도 있습니다. 사용한 값을 결과 클립과 함께 보관하고, 클립의 실제 길이와 프레이밍을 확인하세요. 불리언 check_nsfw는 문서화된 콘텐츠 필터를 활성화하며 기본값은 true입니다. 이 설정들은 이미지 동영상 변환 요청에 속하므로, 실제 선택한 정확한 모델과 연결해 두어야 합니다.</p><p>생성은 비동기 방식입니다. 설정된 상태 및 결과 조회를 진행하는 동안 반환된 작업 식별자를 유지하세요. 완료 결과 매핑은 완료된 작업 항목과 그 원본 결과 URL을 읽습니다. 완료된 동영상 결과를 모두 저장하고, 각 작업 식별자를 반환된 URL과 함께 보관하세요. 완료된 모든 항목을 해당 작업의 결과로 함께 유지하세요.</p><p>동영상 전체를 제공된 이미지, 선택한 효과, 서면 지시와 대조해 검토하세요. 확인할 항목은 피사체의 모습, 움직임, 프레이밍, 마지막 장면입니다. 수정할 때는 바꿀 구체적인 시각적 세부 사항을 지정하고 요청에서 잘된 부분은 유지하세요. 원본 이미지 참조, 정확한 모델 선택 값, prompt, 모션 식별자, 강도, seed, 요청 설정, 완료된 결과물을 함께 보관하면 다음 비교에서 실제 생성 기록을 사용할 수 있습니다.</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>image</code>, <code>text</code></dd></div><div><dt>출력</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>필드</th><th>유형</th><th>요건</th><th>값과 한도</th><th>기본값</th></tr></thead><tbody><tr 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>dop-lite</div><div>조건: Ailoot 모델 선택자입니다.</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\">params</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><div>조건: 이미지 동영상 변환 매개변수입니다. 이 바깥 구조를 유지하세요.</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\">params.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>dop-lite</div><div>조건: 최상위 model과 동일한 선택자를 사용하세요.</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\">params.prompt</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>조건: 이 필드를 반드시 포함하세요. 문서에는 빈 문자열도 명시되어 있습니다. 작성한 안내 문구는 선택한 모션 효과에 큰 영향을 줍니다.</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\">params.seconds</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>조건: 요청한 길이입니다. 문서에 명시된 범위나 기본값을 단정하지 않습니다.</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\">params.motions</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>조건: 문서에 명시된 모션 템플릿을 하나 또는 두 개 선택하세요.</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\">params.motions[].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><div>조건: 문서에 명시된 동작이 확인된 요청 예제의 모션 식별자입니다.</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\">params.motions[].strength</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>number</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>최솟값: 0</div><div>최댓값: 1</div><div>조건: 모션 강도: 0.3은 미세한 움직임, 1은 강한 움직임으로 설명되어 있습니다.</div></td><td data-cell-label=\"기본값\" data-default=\"known\"><span class=\"card-cell-label\">기본값</span>0.8</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\">params.input_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>조건: 동작이 확인된 예제의 image_url 객체 배열을 사용하는 참조 이미지입니다.</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">params.input_images[].type</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>image_url</div><div>조건: 참조 자료의 표현 형식입니다.</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\">params.input_images[].image_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>조건: 실제로 접근 가능한 참조 이미지 URL입니다.</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">params.enhance_prompt</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>조건: 프롬프트 개선입니다.</div></td><td data-cell-label=\"기본값\" data-default=\"known\"><span class=\"card-cell-label\">기본값</span>true</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\">params.check_nsfw</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>조건: 콘텐츠 필터링입니다.</div></td><td data-cell-label=\"기본값\" data-default=\"known\"><span class=\"card-cell-label\">기본값</span>true</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\">params.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>최솟값: 1</div><div>최댓값: 1,000,000</div><div>조건: 일관된 출력을 위한 시드입니다.</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\">webhook</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><div>조건: 문서에 명시된 선택 사항인 webhook 설정입니다. 소유한 결과를 가져올 때는 Ailoot 작업 경로를 사용합니다.</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\">webhook.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>조건: 수신 대상 URL입니다.</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">webhook.secret</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>조건: 수신 대상의 비밀값입니다.</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</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>조건: 선택 사항인 callback 수신 대상입니다. 문서에 명시된 수신 대상은 HTTP 200으로 응답합니다.</div></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></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, params</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>optional</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>params.seconds, params.motions, params.input_images, params.enhance_prompt, params.check_nsfw, params.seed, webhook, webhook.url, webhook.secret, callback</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>image, text</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>true</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>validation_scope</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>model이 요청 경로를 결정합니다. parameters 바깥 구조는 제시된 이미지 동영상 변환 요청을 따릅니다.</td></tr></tbody></table></div><p>메서드 별칭: <code>/v1/videos/generations</code></p><p>수명 주기: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}/content</code></p><p class=\"note-s\">최상위 수준과 params 안에서 동일한 모델 선택자를 사용하세요.</p><p class=\"note-s\">한 번 생성한 다음 반환된 공개 id와 polling_url로 원래 작업을 처리하세요.</p><p class=\"note-s\">완료된 소유 동영상을 모두 가져오고 결과에서 실제 길이와 크기를 확인하세요.</p><p class=\"note-s\">예제의 YOUR_ACCESSIBLE_IMAGE_URL을 실제 참조 이미지 URL로 바꾸세요.</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></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><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>1회 생성 예상치</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 예상 생성 비용 · 비교 전용 추정치</span> <b>$1.24</b> <span class=\"price-unit\">생성 전 추정치</span></div><p class=\"note-s\">이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. <a href=\"/docs/ko/billing/reserve/\">금액 확보와 정산 방식 →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">요청 예제</h3><h4>Ailoot Ultra · 동영상</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"코드 예제 형식\"><button class=\"cg-tab\" id=\"model-code-2783-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2783-panel-0\" aria-selected=\"true\" tabindex=\"0\">JSON · 동영상 생성</button><button class=\"cg-tab\" id=\"model-code-2783-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2783-panel-1\" aria-selected=\"false\" tabindex=\"-1\">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-2783-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2783-tab-0\"><pre data-lang=\"json\"><code>{\n  &quot;model&quot;: &quot;dop-lite&quot;,\n  &quot;params&quot;: {\n    &quot;model&quot;: &quot;dop-lite&quot;,\n    &quot;prompt&quot;: &quot;a cat&quot;,\n    &quot;seed&quot;: 500000,\n    &quot;motions&quot;: [\n      {\n        &quot;id&quot;: &quot;2bae49e6-ffe7-42a8-a73f-d44632c4acaa&quot;,\n        &quot;strength&quot;: 0.5\n      }\n    ],\n    &quot;input_images&quot;: [\n      {\n        &quot;type&quot;: &quot;image_url&quot;,\n        &quot;image_url&quot;: &quot;YOUR_ACCESSIBLE_IMAGE_URL&quot;\n      }\n    ],\n    &quot;enhance_prompt&quot;: true,\n    &quot;check_nsfw&quot;: true\n  }\n}</code></pre></div><div class=\"cg-pane\" id=\"model-code-2783-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2783-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_POLL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\ni=r.get(&quot;id&quot;)\nif not isinstance(i,str) or not i:raise SystemExit(&quot;Keep original response/headers/id; do not resubmit creation.&quot;)\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r.get(&quot;polling_url&quot;) or &quot;/v1/videos/&quot;+quote(i,safe=&quot;&quot;))\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/videos/&quot;):raise SystemExit(&quot;Use the actual Ailoot lookup path.&quot;)\nPath(&quot;poll-url.txt&quot;).write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error &quot;$(cat poll-url.txt)&quot; -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\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\">반환된 작업과 각 상태를 보존하세요. 완료된 소유 동영상 결과를 모두 조회하세요.</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/videos/generations/{request_id}/content</code></li></ul><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\">원본 응답과 반환된 작업 식별자를 보존하세요. 알 수 없는 상태나 불명확한 전송 결과는 새로운 생성을 허용하는 근거가 되지 않습니다.</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\">id</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>공개 Ailoot 작업 또는 연산 식별자입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">provider_task_id</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>공개 id와 별개인 원래 작업 식별자입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">polling_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>반환된 Ailoot 조회 경로입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">jobs[].id</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>실제로 반환된 작업 식별자입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">jobs[].status</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>반환된 각 작업의 상태입니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">jobs[].results.raw.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>완료된 각 동영상은 Ailoot가 소유한 서명된 URL로 제공됩니다.</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>400 · <code>invalid_request_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>JSON/모델 또는 콘텐츠 인덱스가 유효하지 않습니다.</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>401 · <code>authentication_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>유효하지 않은 Ailoot API 키입니다.</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>403 · <code>permission_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></td></tr><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>원래 작업 또는 요청한 출력이 없거나 동일한 사용자/API 키/그룹의 소유가 아닙니다.</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>502 · <code>result_pending_check</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>최초 제출 또는 상태 정보가 불완전하거나 대조하여 확인할 수 없습니다. 원래 ID를 보존하고 다시 제출하지 마세요.</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>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></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></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=dop-lite&amp;route=Ultra&amp;caller=dop-lite&amp;fmt=videos\"><code>dop-lite</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\"><code>/v1/videos/generations</code></p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=dop-lite&amp;route=Ultra&amp;caller=dop-lite&amp;fmt=videos\"><code>dop-lite</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "dop-lite",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "dop-lite",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|dop-lite",
      "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": {
            "errors": [
              {
                "condition": "JSON/모델 또는 콘텐츠 인덱스가 유효하지 않습니다.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "유효하지 않은 Ailoot API 키입니다.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "이 API 키 그룹은 해당 미디어 경로에 접근하도록 허용되지 않았습니다.",
                "http_status": 403,
                "type": "permission_error"
              },
              {
                "condition": "원래 작업 또는 요청한 출력이 없거나 동일한 사용자/API 키/그룹의 소유가 아닙니다.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "최초 제출 또는 상태 정보가 불완전하거나 대조하여 확인할 수 없습니다. 원래 ID를 보존하고 다시 제출하지 마세요.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "원래 연결, 경로 또는 소유 미디어를 아직 확인 중입니다. 해당 원래 작업을 계속 확인하세요.",
                "http_status": 503,
                "type": "result_pending_check"
              },
              {
                "condition": "미디어 서비스 또는 원래 작업 저장소를 사용할 수 없습니다.",
                "http_status": 503,
                "type": "server_error"
              }
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "completed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "queued"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "state_field": "jobs[].status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "원본 응답과 반환된 작업 식별자를 보존하세요. 알 수 없는 상태나 불명확한 전송 결과는 새로운 생성을 허용하는 근거가 되지 않습니다.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "image",
                "text"
              ]
            ],
            "operation_modes": [
              "image_to_video"
            ],
            "outputs": {
              "all_results": "실제로 완료된 모든 출력을 가져오세요. 출력 수가 고정되어 있다고 가정하지 마세요.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": "공개 Ailoot 작업 또는 연산 식별자입니다.",
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": "공개 id와 별개인 원래 작업 식별자입니다.",
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": "반환된 Ailoot 조회 경로입니다.",
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": "실제로 반환된 작업 식별자입니다.",
                  "name": "jobs[].id",
                  "type": "string"
                },
                {
                  "description": "반환된 각 작업의 상태입니다.",
                  "name": "jobs[].status",
                  "type": "string"
                },
                {
                  "description": "완료된 각 동영상은 Ailoot가 소유한 서명된 URL로 제공됩니다.",
                  "name": "jobs[].results.raw.url",
                  "type": "string"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Selected outputs are copied and verified before owned publication.",
              "result": "반환된 작업과 각 상태를 보존하세요. 완료된 소유 동영상 결과를 모두 조회하세요."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "conditions": "Ailoot 모델 선택자입니다.",
                "default": null,
                "default_known": false,
                "enum": [
                  "dop-lite"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "이미지 동영상 변환 매개변수입니다. 이 바깥 구조를 유지하세요.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "conditions": "최상위 model과 동일한 선택자를 사용하세요.",
                "default": null,
                "default_known": false,
                "enum": [
                  "dop-lite"
                ],
                "enum_known": true,
                "name": "params.model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "이 필드를 반드시 포함하세요. 문서에는 빈 문자열도 명시되어 있습니다. 작성한 안내 문구는 선택한 모션 효과에 큰 영향을 줍니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params.prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "요청한 길이입니다. 문서에 명시된 범위나 기본값을 단정하지 않습니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params.seconds",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "문서에 명시된 모션 템플릿을 하나 또는 두 개 선택하세요.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxItems": 2,
                "minItems": 1,
                "name": "params.motions",
                "required": false,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "문서에 명시된 동작이 확인된 요청 예제의 모션 식별자입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params.motions[].id",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "모션 강도: 0.3은 미세한 움직임, 1은 강한 움직임으로 설명되어 있습니다.",
                "default": 0.8,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 1,
                "minimum": 0,
                "name": "params.motions[].strength",
                "required": true,
                "type": "number"
              },
              {
                "availability": "source_interface",
                "conditions": "동작이 확인된 예제의 image_url 객체 배열을 사용하는 참조 이미지입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params.input_images",
                "required": false,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "참조 자료의 표현 형식입니다.",
                "default": null,
                "default_known": false,
                "enum": [
                  "image_url"
                ],
                "enum_known": true,
                "name": "params.input_images[].type",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "실제로 접근 가능한 참조 이미지 URL입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params.input_images[].image_url",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "프롬프트 개선입니다.",
                "default": true,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "params.enhance_prompt",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "콘텐츠 필터링입니다.",
                "default": true,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "params.check_nsfw",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "일관된 출력을 위한 시드입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 1000000,
                "minimum": 1,
                "name": "params.seed",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "문서에 명시된 선택 사항인 webhook 설정입니다. 소유한 결과를 가져올 때는 Ailoot 작업 경로를 사용합니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "webhook",
                "required": false,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "conditions": "수신 대상 URL입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "webhook.url",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "수신 대상의 비밀값입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "webhook.secret",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "선택 사항인 callback 수신 대상입니다. 문서에 명시된 수신 대상은 HTTP 200으로 응답합니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "callback": {
                  "type": "string"
                },
                "model": {
                  "const": "dop-lite",
                  "type": "string"
                },
                "params": {
                  "additionalProperties": true,
                  "properties": {
                    "check_nsfw": {
                      "default": true,
                      "type": "boolean"
                    },
                    "enhance_prompt": {
                      "default": true,
                      "type": "boolean"
                    },
                    "input_images": {
                      "items": {
                        "properties": {
                          "image_url": {
                            "type": "string"
                          },
                          "type": {
                            "const": "image_url",
                            "type": "string"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "model": {
                      "const": "dop-lite",
                      "type": "string"
                    },
                    "motions": {
                      "items": {
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "strength": {
                            "default": 0.8,
                            "maximum": 1,
                            "minimum": 0,
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "strength"
                        ],
                        "type": "object"
                      },
                      "maxItems": 2,
                      "minItems": 1,
                      "type": "array"
                    },
                    "prompt": {
                      "type": "string"
                    },
                    "seconds": {
                      "type": "integer"
                    },
                    "seed": {
                      "maximum": 1000000,
                      "minimum": 1,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "model",
                    "prompt"
                  ],
                  "type": "object"
                },
                "webhook": {
                  "properties": {
                    "secret": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "required": [
                "model",
                "params"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              {
                "field": "params.motions[].id",
                "meaning": "The demonstrated request uses id; the generated schema names motion_id. This card follows the working example."
              },
              {
                "field": "params.input_images",
                "meaning": "The demonstrated request uses an array of image_url objects; the generated schema shows a different object shape. This card follows the working example."
              }
            ],
            "unsupported": []
          },
          "hints": [
            "최상위 수준과 params 안에서 동일한 모델 선택자를 사용하세요.",
            "한 번 생성한 다음 반환된 공개 id와 polling_url로 원래 작업을 처리하세요.",
            "완료된 소유 동영상을 모두 가져오고 결과에서 실제 길이와 크기를 확인하세요.",
            "예제의 YOUR_ACCESSIBLE_IMAGE_URL을 실제 참조 이미지 URL로 바꾸세요."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_types": [
              "image",
              "text"
            ],
            "optional": [
              "params.seconds",
              "params.motions",
              "params.input_images",
              "params.enhance_prompt",
              "params.check_nsfw",
              "params.seed",
              "webhook",
              "webhook.url",
              "webhook.secret",
              "callback"
            ],
            "required": [
              "model",
              "params"
            ],
            "validation_scope": "model이 요청 경로를 결정합니다. parameters 바깥 구조는 제시된 이미지 동영상 변환 요청을 따릅니다."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "completed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "queued"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "state_field": "jobs[].status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "Keep the original response and returned task identity; an unrecognized state or ambiguous send does not authorize a new creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "image",
              "text"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "image_to_video"
          ],
          "output": {
            "all_results": "Fetch every actual completed output; do not assume a fixed count.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": "Public Ailoot task or operation identifier.",
                "name": "id",
                "type": "string"
              },
              {
                "description": "Original task identifier, separate from the public id.",
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": "Returned Ailoot lookup path.",
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": "Actual returned job identifier.",
                "name": "jobs[].id",
                "type": "string"
              },
              {
                "description": "State of each returned job.",
                "name": "jobs[].status",
                "type": "string"
              },
              {
                "description": "Each completed video is exposed through an Ailoot-owned signed URL.",
                "name": "jobs[].results.raw.url",
                "type": "string"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Selected outputs are copied and verified before owned publication.",
            "result": "Keep the returned jobs and their states. Read every completed owned video result."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "예상 생성 비용",
            "units": [
              {
                "amount": "1.24",
                "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": "1.24",
                "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": "{\n  \"model\": \"dop-lite\",\n  \"params\": {\n    \"model\": \"dop-lite\",\n    \"prompt\": \"a cat\",\n    \"seed\": 500000,\n    \"motions\": [\n      {\n        \"id\": \"2bae49e6-ffe7-42a8-a73f-d44632c4acaa\",\n        \"strength\": 0.5\n      }\n    ],\n    \"input_images\": [\n      {\n        \"type\": \"image_url\",\n        \"image_url\": \"YOUR_ACCESSIBLE_IMAGE_URL\"\n      }\n    ],\n    \"enhance_prompt\": true,\n    \"check_nsfw\": true\n  }\n}",
            "label": "JSON · create video",
            "language": "json"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i:raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use the actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the same model selector at the top level and inside params.",
          "Create once, then use the returned public id and polling_url for the original operation.",
          "Retrieve every completed owned video; inspect actual duration and dimensions in the result.",
          "Replace YOUR_ACCESSIBLE_IMAGE_URL in the example with your actual reference image URL."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "image",
          "text"
        ],
        "label": "동영상",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "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": "1.24",
                "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": "1.24",
                "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": "dop-lite",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_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": "1.24",
            "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": "1.24",
            "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": "dop-lite",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "8808fb2d0a91fdcadef6194151e177a4b30aede04c33c9ed9658da25cd176ee1",
    "input_html_sha256": "7a75cf0bc2ef339d9c8f1460064a75f3f2416249f834d50351230546cd70d249",
    "private_audit_sha256": "f008eaf2c32353e9798f72ef784df1d7ac6dfd459d3a36ecd37370ba4c0df86e",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/dop-lite/",
    "description": "DOP Lite는 문서화된 모션 템플릿, 조절 가능한 강도, 서면 지시로 제공된 이미지에 움직임을 부여합니다. 정확한 dop-lite 선택 값은 이미지 동영상 변환 요청을 사용하며, 비동기 작업을 통해 동영상을 반환합니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/dop-lite/index.md",
    "title": "Higgsfield: DOP Lite — Ailoot",
    "url": "https://ailoot.ai/models/ko/dop-lite/"
  },
  "rawModel": {
    "about": "DOP Lite는 Higgsfield가 문서화한 이미지 동영상 변환 워크플로를 통해 제공된 이미지에 움직임을 부여합니다. 정확한 모델 선택 값은 dop-lite입니다. 최상위 모델 선택 값과 문서화된 params 객체 안의 model 값 모두에 dop-lite를 사용하세요. 이미지는 시각 자료를 제공하고, 모션 템플릿과 서면 지시는 요청한 움직임과 효과를 제어합니다.\n\n의도한 피사체, 중요한 세부 사항, 주변 공간이 잘 보이는 참조 이미지를 준비하세요. 가이드는 세부 사항을 더 선명하게 표현하기 위해 고해상도 이미지를 권장합니다. 제품 장면이라면 물체의 형태와 움직이는 동안에도 알아볼 수 있어야 하는 표면이 드러나는 구도를 선택하세요. 인물이나 환경이라면 움직임으로 강조할 시각적 특징을 지정하세요. 메서드 예제에서 사용하는 이미지 입력을 통해 실제 참조 이미지 URL을 제공하세요.\n\n이 작업에는 모션 템플릿을 하나 또는 두 개 사용하는 방식이 문서화되어 있습니다. 두 개를 제공하면 가이드는 그 효과가 결합된다고 설명합니다. 프리셋 설명에는 카메라 움직임, 피사체 회전, 시각적 변형이 포함됩니다. 예를 들어 Dolly In은 카메라가 다가가는 움직임을, 3D Rotation은 피사체나 제품이 제자리에서 회전하는 움직임을 뜻합니다. 의도한 순서에 맞는 문서화된 템플릿 식별자를 선택하고, 각 식별자를 해당 강도 값과 함께 보관하세요.\n\n모션 강도는 0부터 1까지의 숫자이며, 문서화된 기본값은 0.8입니다. 가이드는 0.3을 미묘한 효과로, 1을 강한 움직임으로 설명합니다. 알아볼 수 있게 유지해야 하는 세부 사항에 따라 강도를 선택하고, 생성된 움직임 전체를 검토하세요. 모션 설명과 강도는 서로 다른 역할을 합니다. 템플릿이 효과를 선택하고, 강도는 그 효과의 세기를 제어합니다.\n\n설명에 따르면 prompt 필드는 반드시 있어야 하지만 빈 문자열도 허용됩니다. 템플릿 중심 효과에는 prompt를 비워 두는 것이 권장됩니다. 텍스트를 제공한다면 프롬프트가 결과를 크게 바꿀 수 있으므로 템플릿 설명을 포함하는 것이 권장됩니다. enhance_prompt 설정은 프롬프트 최적화를 활성화하며, 문서화된 기본값은 true입니다. 버전을 비교할 때는 텍스트와 이 설정을 참조 이미지 및 선택한 템플릿과 함께 보관하세요.\n\nseed 설정은 1부터 1000000까지의 정수를 받습니다. 선택한 seed를 생성 설정과 함께 기록하세요. 요청에는 정수형 seconds 필드도 있습니다. 사용한 값을 결과 클립과 함께 보관하고, 클립의 실제 길이와 프레이밍을 확인하세요. 불리언 check_nsfw는 문서화된 콘텐츠 필터를 활성화하며 기본값은 true입니다. 이 설정들은 이미지 동영상 변환 요청에 속하므로, 실제 선택한 정확한 모델과 연결해 두어야 합니다.\n\n생성은 비동기 방식입니다. 설정된 상태 및 결과 조회를 진행하는 동안 반환된 작업 식별자를 유지하세요. 완료 결과 매핑은 완료된 작업 항목과 그 원본 결과 URL을 읽습니다. 완료된 동영상 결과를 모두 저장하고, 각 작업 식별자를 반환된 URL과 함께 보관하세요. 완료된 모든 항목을 해당 작업의 결과로 함께 유지하세요.\n\n동영상 전체를 제공된 이미지, 선택한 효과, 서면 지시와 대조해 검토하세요. 확인할 항목은 피사체의 모습, 움직임, 프레이밍, 마지막 장면입니다. 수정할 때는 바꿀 구체적인 시각적 세부 사항을 지정하고 요청에서 잘된 부분은 유지하세요. 원본 이미지 참조, 정확한 모델 선택 값, prompt, 모션 식별자, 강도, seed, 요청 설정, 완료된 결과물을 함께 보관하면 다음 비교에서 실제 생성 기록을 사용할 수 있습니다.",
    "alias_of": null,
    "aliases": [],
    "author": "Higgsfield",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "image",
        "text"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "1.24",
            "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": "1.24",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "구성의 전체 요금 정보는 상세 정보에서 확인할 수 있습니다."
      }
    ],
    "ctx": null,
    "formats": [
      "videos"
    ],
    "id": "dop-lite",
    "input": [
      "image",
      "text"
    ],
    "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": {
            "errors": [
              {
                "condition": "JSON/모델 또는 콘텐츠 인덱스가 유효하지 않습니다.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "유효하지 않은 Ailoot API 키입니다.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "이 API 키 그룹은 해당 미디어 경로에 접근하도록 허용되지 않았습니다.",
                "http_status": 403,
                "type": "permission_error"
              },
              {
                "condition": "원래 작업 또는 요청한 출력이 없거나 동일한 사용자/API 키/그룹의 소유가 아닙니다.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "최초 제출 또는 상태 정보가 불완전하거나 대조하여 확인할 수 없습니다. 원래 ID를 보존하고 다시 제출하지 마세요.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "원래 연결, 경로 또는 소유 미디어를 아직 확인 중입니다. 해당 원래 작업을 계속 확인하세요.",
                "http_status": 503,
                "type": "result_pending_check"
              },
              {
                "condition": "미디어 서비스 또는 원래 작업 저장소를 사용할 수 없습니다.",
                "http_status": 503,
                "type": "server_error"
              }
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "completed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "queued"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "state_field": "jobs[].status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "원본 응답과 반환된 작업 식별자를 보존하세요. 알 수 없는 상태나 불명확한 전송 결과는 새로운 생성을 허용하는 근거가 되지 않습니다.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "image",
                "text"
              ]
            ],
            "operation_modes": [
              "image_to_video"
            ],
            "outputs": {
              "all_results": "실제로 완료된 모든 출력을 가져오세요. 출력 수가 고정되어 있다고 가정하지 마세요.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": "공개 Ailoot 작업 또는 연산 식별자입니다.",
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": "공개 id와 별개인 원래 작업 식별자입니다.",
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": "반환된 Ailoot 조회 경로입니다.",
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": "실제로 반환된 작업 식별자입니다.",
                  "name": "jobs[].id",
                  "type": "string"
                },
                {
                  "description": "반환된 각 작업의 상태입니다.",
                  "name": "jobs[].status",
                  "type": "string"
                },
                {
                  "description": "완료된 각 동영상은 Ailoot가 소유한 서명된 URL로 제공됩니다.",
                  "name": "jobs[].results.raw.url",
                  "type": "string"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Selected outputs are copied and verified before owned publication.",
              "result": "반환된 작업과 각 상태를 보존하세요. 완료된 소유 동영상 결과를 모두 조회하세요."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "conditions": "Ailoot 모델 선택자입니다.",
                "default": null,
                "default_known": false,
                "enum": [
                  "dop-lite"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "이미지 동영상 변환 매개변수입니다. 이 바깥 구조를 유지하세요.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "conditions": "최상위 model과 동일한 선택자를 사용하세요.",
                "default": null,
                "default_known": false,
                "enum": [
                  "dop-lite"
                ],
                "enum_known": true,
                "name": "params.model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "이 필드를 반드시 포함하세요. 문서에는 빈 문자열도 명시되어 있습니다. 작성한 안내 문구는 선택한 모션 효과에 큰 영향을 줍니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params.prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "요청한 길이입니다. 문서에 명시된 범위나 기본값을 단정하지 않습니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params.seconds",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "문서에 명시된 모션 템플릿을 하나 또는 두 개 선택하세요.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxItems": 2,
                "minItems": 1,
                "name": "params.motions",
                "required": false,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "문서에 명시된 동작이 확인된 요청 예제의 모션 식별자입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params.motions[].id",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "모션 강도: 0.3은 미세한 움직임, 1은 강한 움직임으로 설명되어 있습니다.",
                "default": 0.8,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 1,
                "minimum": 0,
                "name": "params.motions[].strength",
                "required": true,
                "type": "number"
              },
              {
                "availability": "source_interface",
                "conditions": "동작이 확인된 예제의 image_url 객체 배열을 사용하는 참조 이미지입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params.input_images",
                "required": false,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "참조 자료의 표현 형식입니다.",
                "default": null,
                "default_known": false,
                "enum": [
                  "image_url"
                ],
                "enum_known": true,
                "name": "params.input_images[].type",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "실제로 접근 가능한 참조 이미지 URL입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "params.input_images[].image_url",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "프롬프트 개선입니다.",
                "default": true,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "params.enhance_prompt",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "콘텐츠 필터링입니다.",
                "default": true,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "params.check_nsfw",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "일관된 출력을 위한 시드입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 1000000,
                "minimum": 1,
                "name": "params.seed",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "문서에 명시된 선택 사항인 webhook 설정입니다. 소유한 결과를 가져올 때는 Ailoot 작업 경로를 사용합니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "webhook",
                "required": false,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "conditions": "수신 대상 URL입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "webhook.url",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "수신 대상의 비밀값입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "webhook.secret",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "선택 사항인 callback 수신 대상입니다. 문서에 명시된 수신 대상은 HTTP 200으로 응답합니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "callback": {
                  "type": "string"
                },
                "model": {
                  "const": "dop-lite",
                  "type": "string"
                },
                "params": {
                  "additionalProperties": true,
                  "properties": {
                    "check_nsfw": {
                      "default": true,
                      "type": "boolean"
                    },
                    "enhance_prompt": {
                      "default": true,
                      "type": "boolean"
                    },
                    "input_images": {
                      "items": {
                        "properties": {
                          "image_url": {
                            "type": "string"
                          },
                          "type": {
                            "const": "image_url",
                            "type": "string"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "model": {
                      "const": "dop-lite",
                      "type": "string"
                    },
                    "motions": {
                      "items": {
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "strength": {
                            "default": 0.8,
                            "maximum": 1,
                            "minimum": 0,
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "strength"
                        ],
                        "type": "object"
                      },
                      "maxItems": 2,
                      "minItems": 1,
                      "type": "array"
                    },
                    "prompt": {
                      "type": "string"
                    },
                    "seconds": {
                      "type": "integer"
                    },
                    "seed": {
                      "maximum": 1000000,
                      "minimum": 1,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "model",
                    "prompt"
                  ],
                  "type": "object"
                },
                "webhook": {
                  "properties": {
                    "secret": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "required": [
                "model",
                "params"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              {
                "field": "params.motions[].id",
                "meaning": "The demonstrated request uses id; the generated schema names motion_id. This card follows the working example."
              },
              {
                "field": "params.input_images",
                "meaning": "The demonstrated request uses an array of image_url objects; the generated schema shows a different object shape. This card follows the working example."
              }
            ],
            "unsupported": []
          },
          "hints": [
            "최상위 수준과 params 안에서 동일한 모델 선택자를 사용하세요.",
            "한 번 생성한 다음 반환된 공개 id와 polling_url로 원래 작업을 처리하세요.",
            "완료된 소유 동영상을 모두 가져오고 결과에서 실제 길이와 크기를 확인하세요.",
            "예제의 YOUR_ACCESSIBLE_IMAGE_URL을 실제 참조 이미지 URL로 바꾸세요."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_types": [
              "image",
              "text"
            ],
            "optional": [
              "params.seconds",
              "params.motions",
              "params.input_images",
              "params.enhance_prompt",
              "params.check_nsfw",
              "params.seed",
              "webhook",
              "webhook.url",
              "webhook.secret",
              "callback"
            ],
            "required": [
              "model",
              "params"
            ],
            "validation_scope": "model이 요청 경로를 결정합니다. parameters 바깥 구조는 제시된 이미지 동영상 변환 요청을 따릅니다."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "completed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "queued"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "state_field": "jobs[].status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "Keep the original response and returned task identity; an unrecognized state or ambiguous send does not authorize a new creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "image",
              "text"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "image_to_video"
          ],
          "output": {
            "all_results": "Fetch every actual completed output; do not assume a fixed count.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": "Public Ailoot task or operation identifier.",
                "name": "id",
                "type": "string"
              },
              {
                "description": "Original task identifier, separate from the public id.",
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": "Returned Ailoot lookup path.",
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": "Actual returned job identifier.",
                "name": "jobs[].id",
                "type": "string"
              },
              {
                "description": "State of each returned job.",
                "name": "jobs[].status",
                "type": "string"
              },
              {
                "description": "Each completed video is exposed through an Ailoot-owned signed URL.",
                "name": "jobs[].results.raw.url",
                "type": "string"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Selected outputs are copied and verified before owned publication.",
            "result": "Keep the returned jobs and their states. Read every completed owned video result."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "예상 생성 비용",
            "units": [
              {
                "amount": "1.24",
                "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": "1.24",
                "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": "{\n  \"model\": \"dop-lite\",\n  \"params\": {\n    \"model\": \"dop-lite\",\n    \"prompt\": \"a cat\",\n    \"seed\": 500000,\n    \"motions\": [\n      {\n        \"id\": \"2bae49e6-ffe7-42a8-a73f-d44632c4acaa\",\n        \"strength\": 0.5\n      }\n    ],\n    \"input_images\": [\n      {\n        \"type\": \"image_url\",\n        \"image_url\": \"YOUR_ACCESSIBLE_IMAGE_URL\"\n      }\n    ],\n    \"enhance_prompt\": true,\n    \"check_nsfw\": true\n  }\n}",
            "label": "JSON · create video",
            "language": "json"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i:raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use the actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the same model selector at the top level and inside params.",
          "Create once, then use the returned public id and polling_url for the original operation.",
          "Retrieve every completed owned video; inspect actual duration and dimensions in the result.",
          "Replace YOUR_ACCESSIBLE_IMAGE_URL in the example with your actual reference image URL."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "image",
          "text"
        ],
        "label": "동영상",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "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": "1.24",
                "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": "1.24",
                "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": "dop-lite",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_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": "1.24",
            "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": "1.24",
            "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": "dop-lite",
        "request_model_id": "dop-lite",
        "route_label": "Ultra"
      }
    ],
    "name": "Higgsfield: DOP Lite",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 1.24,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 1.24,
      "varies": false
    },
    "short": "DOP Lite는 문서화된 모션 템플릿, 조절 가능한 강도, 서면 지시로 제공된 이미지에 움직임을 부여합니다. 정확한 dop-lite 선택 값은 이미지 동영상 변환 요청을 사용하며, 비동기 작업을 통해 동영상을 반환합니다."
  },
  "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": "DOP Lite는 문서화된 모션 템플릿, 조절 가능한 강도, 서면 지시로 제공된 이미지에 움직임을 부여합니다. 정확한 dop-lite 선택 값은 이미지 동영상 변환 요청을 사용하며, 비동기 작업을 통해 동영상을 반환합니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "2280937b690bee292a2428cdfd49055ef82d582c8104ec942b1f4e70b0138f3c",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "7d37c25349bedc44d9520291f47a4043574be375979a9df8b3258bed0dd76de9"
}
