{
  "aboutHtml": "<p>Seedance 2.0 — стандартная модель ByteDance Seed для мультимодального аудиовизуального творчества. Совместная архитектура объединяет текст, изображения, видео и аудио; отдельные сценарии создают сцены по референсам, редактируют и расширяют видео. Она полезна, когда нужны связное исполнение и конкретная визуальная или звуковая информация подготовленных материалов.</p><h4>Мультимодальные референсы и режиссёрское управление</h4><p>Изображения задают внешность, стиль и композицию; видео направляют действия, камеру и эффекты; аудио — тембр, музыку или диалог. Определите роль материала и опишите итоговую сцену. Производитель подчёркивает управление исполнением, светом, тенями и языком камеры.</p><p>Для продуктовой истории подготовьте фото продукта, референс камеры и звуковую подсказку. Пример: «Сохраните синюю стеклянную вазу из Image 1. Используйте медленное боковое движение камеры из Video 1. Ваза стоит на освещённой солнцем полке под мягкую инструментальную музыку на основе Audio 1». Результат — новая постановочная сцена из выбранных сведений референсов.</p><p>Можно сочетать изображение и аудио, изображение и видео, видео и аудио или все три типа. Только аудио и текст с аудио без изображения или видео не поддерживаются. Также документированы текст–видео, первый кадр и первый с последним. Если важны фиксированные начало и конец, используйте специальный сценарий: название референса граничным кадром в omni-reference-промпте управляет им лишь косвенно.</p><h4>Редактирование материала</h4><p>Модель заменяет объект, добавляет или удаляет предметы, меняет элементы, перерисовывает или исправляет части видео. Опишите конкретную правку и исходный материал. Для добавления укажите время и место появления; для удаления или замены — точный объект и сохраняемые детали.</p><p>Например: «Замените настольную лампу в Video 1 латунной лампой из Image 1. Сохраните движение камеры, расположение на столе и направление света». Нужный результат — изменённая сцена с заданной заменой. Проверяйте неизменяемые области и новый предмет, особенно при перекрытии, движении и смене планов.</p><h4>Расширение и соединение последовательности</h4><p>Seedance 2.0 расширяет видео вперёд или назад и соединяет до трёх клипов сгенерированными переходами. Задайте временное направление и новое событие. Для связки упорядочите клипы и опишите переход каждой пары, например вход камеры в дверной проём и появление в следующем окружении.</p><p>Простое расширение обычно возвращает продолжение вокруг исходника; явно укажите, если нужно повторить исходный сегмент. При соединении двух-трёх клипов сценарий может включать оригиналы и новый переход. Это помогает развить начало или конец либо связать подготовленные сцены с определённым действием стыка.</p><h4>Стандартный вывод и 4K</h4><p>Стандартная версия документирует MP4, 24 fps и длительность от 4 до 15 секунд. Уровни — 480p, 720p, 1080p с 8-битным цветом и 4K с 10-битным. Соотношения — 21:9, 16:9, 4:3, 1:1, 3:4 и 9:16. Также документированы адаптивное кадрирование и автоматическая длительность. У Fast отдельный более узкий профиль 480p/720p.</p><p>4K использует H.265/HEVC. Десятибитная кодировка сохраняет дополнительные тональные градации и плавность цвета, важные для тонких световых или цветовых переходов. Проверьте декодирование в целевой среде воспроизведения и монтажа: некоторые браузеры и устройства не воспроизводят напрямую. Совместимый контейнер сам по себе не обеспечивает совместимого видеодекодирования.</p><p>Модель создаёт синхронный звук или немое видео и возвращает последний сгенерированный кадр для следующей сцены. Звук монофонический. Семейство 2.0 не поддерживает отдельное двухэтапное превью Draft; не следует переносить его из другой версии Seedance.</p><h4>Подготовка референсов и существенные пределы</h4><p>Ёмкость — до девяти изображений, трёх видео и трёх аудио. Прямая загрузка изображений или видео с реальными лицами в этом профиле не принимается; используется поддерживаемый портретный сценарий. Каждый видео- и аудиоклип — 2–15 секунд. Все видео вместе — до 15 секунд, все аудио отдельно — до 15 секунд. Видео: MP4/MOV, 24–60 fps, до 200 MB каждое; аудио: WAV/MP3, до 15 MB каждое. Изображения: JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF, меньше 30 MB каждое; тело запроса — до 64 MB. В референсном профиле ширина и высота изображения строго между 300 и 6 000 пикселей, отношение ширины к высоте строго между 0,4 и 2,5. Видео допускают 300–6 000 пикселей по измерению, отношение 0,4–2,5 включительно и 407 696–8 295 044 пикселя всего. MP4/MOV используют H.264/AVC либо H.265/HEVC и аудио AAC либо MP3.</p><p>Упорядочите файлы и называйте тип с номером: Image 1, Video 1, Audio 1. Номер следует порядку внутри типа. Объясните переносимые черты и содержание, которое не должно задавать новую сцену. Документированные языки промпта — английский, испанский, индонезийский, португальский и японский. Сохраняйте один язык речи в диалоге; кроме имён собственных, смешение не рекомендуется. При работе с голосом отделяйте диктора, точную реплику и указание подачи.</p><p>Подготовьте первый и последний кадры с совместимым кадрированием. Несовпадение изображения и вывода может вызвать обрезку или резкую смену кадра; согласованные размеры и адаптивное кадрирование документированы как решения. Сосредоточьте описание на событии и ролях референсов. Производитель предупреждает: длинный промпт рассеивает информацию, детали могут игнорироваться. Проверяйте движение, непрерывность референсов, звук и стыки сцен отдельно.</p><h4>Планирование кадров и указания текста</h4><p>Сложную сцену организуйте как Shot 1, Shot 2 и Shot 3, задавая камеру, действие, положение и звук по порядку. Рекомендованы одно движение камеры на план и медленные связанные действия. Точные временные метки планов нестабильны; последовательность событий управляет лучше нескольких точных окон.</p><p>Модель генерирует обычный текст: слоганы, субтитры и речевые облачка. Можно задать цвет, оформление, место и появление. Используйте обычные символы вместо редких или специальных, проверяйте надпись в движении. Ясно привяжите каждый референс к персонажу или объекту. Ракурсы продукта дают разную информацию; коллажи разворотов персонажа могут путать узнаваемость лица. Документированная рекомендация — отдельные ясные портрет и изображение в полный рост.</p><h4>Поведение для проверки перед монтажом</h4><p>Руководство описывает нежелательные субтитры, логотипы, дубли персонажей и уход стиля. Чистые материалы, постоянные метки и явные ограничения уменьшают риск, но не гарантируют устранения текста или дублей. Более четырёх референсных людей — риск устойчивости, отдельный от числа файлов.</p><p>Расширение может дать скачок или откат на стыке; повторные продолжения накапливают потерю качества. Проверяйте граничные кадры и ограничивайте последовательные расширения. Референсный голос может отличаться тембром, повествование — оканчиваться щелчком или обрывом; документированное решение — затухание аудио. Китайские иероглифы с несколькими чтениями, редкие или похожие по начертанию знаки могут произноситься неверно. Для точного анимированного эффекта, например обратного отсчёта, референс движения информативнее словесного запроса. Это конкретные причины отдельно проверять соответствие внешности референсам, текст, движение и звук при выборе клипа.</p>",
  "aboutText": "Seedance 2.0 — стандартная модель ByteDance Seed для мультимодального аудиовизуального творчества. Совместная архитектура объединяет текст, изображения, видео и аудио; отдельные сценарии создают сцены по референсам, редактируют и расширяют видео. Она полезна, когда нужны связное исполнение и конкретная визуальная или звуковая информация подготовленных материалов.\n\n### Мультимодальные референсы и режиссёрское управление\n\nИзображения задают внешность, стиль и композицию; видео направляют действия, камеру и эффекты; аудио — тембр, музыку или диалог. Определите роль материала и опишите итоговую сцену. Производитель подчёркивает управление исполнением, светом, тенями и языком камеры.\n\nДля продуктовой истории подготовьте фото продукта, референс камеры и звуковую подсказку. Пример: «Сохраните синюю стеклянную вазу из Image 1. Используйте медленное боковое движение камеры из Video 1. Ваза стоит на освещённой солнцем полке под мягкую инструментальную музыку на основе Audio 1». Результат — новая постановочная сцена из выбранных сведений референсов.\n\nМожно сочетать изображение и аудио, изображение и видео, видео и аудио или все три типа. Только аудио и текст с аудио без изображения или видео не поддерживаются. Также документированы текст–видео, первый кадр и первый с последним. Если важны фиксированные начало и конец, используйте специальный сценарий: название референса граничным кадром в omni-reference-промпте управляет им лишь косвенно.\n\n### Редактирование материала\n\nМодель заменяет объект, добавляет или удаляет предметы, меняет элементы, перерисовывает или исправляет части видео. Опишите конкретную правку и исходный материал. Для добавления укажите время и место появления; для удаления или замены — точный объект и сохраняемые детали.\n\nНапример: «Замените настольную лампу в Video 1 латунной лампой из Image 1. Сохраните движение камеры, расположение на столе и направление света». Нужный результат — изменённая сцена с заданной заменой. Проверяйте неизменяемые области и новый предмет, особенно при перекрытии, движении и смене планов.\n\n### Расширение и соединение последовательности\n\nSeedance 2.0 расширяет видео вперёд или назад и соединяет до трёх клипов сгенерированными переходами. Задайте временное направление и новое событие. Для связки упорядочите клипы и опишите переход каждой пары, например вход камеры в дверной проём и появление в следующем окружении.\n\nПростое расширение обычно возвращает продолжение вокруг исходника; явно укажите, если нужно повторить исходный сегмент. При соединении двух-трёх клипов сценарий может включать оригиналы и новый переход. Это помогает развить начало или конец либо связать подготовленные сцены с определённым действием стыка.\n\n### Стандартный вывод и 4K\n\nСтандартная версия документирует MP4, 24 fps и длительность от 4 до 15 секунд. Уровни — 480p, 720p, 1080p с 8-битным цветом и 4K с 10-битным. Соотношения — 21:9, 16:9, 4:3, 1:1, 3:4 и 9:16. Также документированы адаптивное кадрирование и автоматическая длительность. У Fast отдельный более узкий профиль 480p/720p.\n\n4K использует H.265/HEVC. Десятибитная кодировка сохраняет дополнительные тональные градации и плавность цвета, важные для тонких световых или цветовых переходов. Проверьте декодирование в целевой среде воспроизведения и монтажа: некоторые браузеры и устройства не воспроизводят напрямую. Совместимый контейнер сам по себе не обеспечивает совместимого видеодекодирования.\n\nМодель создаёт синхронный звук или немое видео и возвращает последний сгенерированный кадр для следующей сцены. Звук монофонический. Семейство 2.0 не поддерживает отдельное двухэтапное превью Draft; не следует переносить его из другой версии Seedance.\n\n### Подготовка референсов и существенные пределы\n\nЁмкость — до девяти изображений, трёх видео и трёх аудио. Прямая загрузка изображений или видео с реальными лицами в этом профиле не принимается; используется поддерживаемый портретный сценарий. Каждый видео- и аудиоклип — 2–15 секунд. Все видео вместе — до 15 секунд, все аудио отдельно — до 15 секунд. Видео: MP4/MOV, 24–60 fps, до 200 MB каждое; аудио: WAV/MP3, до 15 MB каждое. Изображения: JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF, меньше 30 MB каждое; тело запроса — до 64 MB. В референсном профиле ширина и высота изображения строго между 300 и 6 000 пикселей, отношение ширины к высоте строго между 0,4 и 2,5. Видео допускают 300–6 000 пикселей по измерению, отношение 0,4–2,5 включительно и 407 696–8 295 044 пикселя всего. MP4/MOV используют H.264/AVC либо H.265/HEVC и аудио AAC либо MP3.\n\nУпорядочите файлы и называйте тип с номером: Image 1, Video 1, Audio 1. Номер следует порядку внутри типа. Объясните переносимые черты и содержание, которое не должно задавать новую сцену. Документированные языки промпта — английский, испанский, индонезийский, португальский и японский. Сохраняйте один язык речи в диалоге; кроме имён собственных, смешение не рекомендуется. При работе с голосом отделяйте диктора, точную реплику и указание подачи.\n\nПодготовьте первый и последний кадры с совместимым кадрированием. Несовпадение изображения и вывода может вызвать обрезку или резкую смену кадра; согласованные размеры и адаптивное кадрирование документированы как решения. Сосредоточьте описание на событии и ролях референсов. Производитель предупреждает: длинный промпт рассеивает информацию, детали могут игнорироваться. Проверяйте движение, непрерывность референсов, звук и стыки сцен отдельно.\n\n### Планирование кадров и указания текста\n\nСложную сцену организуйте как Shot 1, Shot 2 и Shot 3, задавая камеру, действие, положение и звук по порядку. Рекомендованы одно движение камеры на план и медленные связанные действия. Точные временные метки планов нестабильны; последовательность событий управляет лучше нескольких точных окон.\n\nМодель генерирует обычный текст: слоганы, субтитры и речевые облачка. Можно задать цвет, оформление, место и появление. Используйте обычные символы вместо редких или специальных, проверяйте надпись в движении. Ясно привяжите каждый референс к персонажу или объекту. Ракурсы продукта дают разную информацию; коллажи разворотов персонажа могут путать узнаваемость лица. Документированная рекомендация — отдельные ясные портрет и изображение в полный рост.\n\n### Поведение для проверки перед монтажом\n\nРуководство описывает нежелательные субтитры, логотипы, дубли персонажей и уход стиля. Чистые материалы, постоянные метки и явные ограничения уменьшают риск, но не гарантируют устранения текста или дублей. Более четырёх референсных людей — риск устойчивости, отдельный от числа файлов.\n\nРасширение может дать скачок или откат на стыке; повторные продолжения накапливают потерю качества. Проверяйте граничные кадры и ограничивайте последовательные расширения. Референсный голос может отличаться тембром, повествование — оканчиваться щелчком или обрывом; документированное решение — затухание аудио. Китайские иероглифы с несколькими чтениями, редкие или похожие по начертанию знаки могут произноситься неверно. Для точного анимированного эффекта, например обратного отсчёта, референс движения информативнее словесного запроса. Это конкретные причины отдельно проверять соответствие внешности референсам, текст, движение и звук при выборе клипа.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "0ec6e313b03ef957940f6ae227355098379e6275463bbf7c391a8ec7d546c580",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ru",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">ByteDance: Seedance 2.0</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Закрыть\">×</button></div><div class=\"idline\"><span>ByteDance /</span><code>bytedance/seedance-2.0</code><button type=\"button\" id=\"copy-id\">Скопировать ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Разделы карточки модели\"><button type=\"button\" data-card-jump=\"overview\">Начало</button><button type=\"button\" data-card-jump=\"methods\">Входные данные и методы</button><button type=\"button\" data-card-jump=\"pricing\">Тарифы</button><button type=\"button\" data-card-jump=\"examples\">Примеры</button><button type=\"button\" data-card-jump=\"results\">Результаты</button><button type=\"button\" data-card-jump=\"aliases\">Псевдонимы</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Методы API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|bytedance%2Fseedance-2.0\">Видео</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Начало</h3><p class=\"mdesc-full\">ByteDance Seedance 2.0 сочетает встроенную генерацию аудио и видео с референсами изображений, видео и звука. Создавайте новые сцены, редактируйте материал или расширяйте последовательность; стандартная версия включает документированный вывод 1080p и 10-битный 4K.</p><dl class=\"card-io\" data-card-io><div><dt>Допустимые входные данные</dt><dd>Текст · Картинки · Аудио</dd></div><div><dt>Результаты</dt><dd>Видео</dd></div></dl><details class=\"card-about\"><summary>О модели</summary><p class=\"note-s\" data-model-method-boundary>Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.</p><div class=\"mabout\" id=\"m-about\"><p>Seedance 2.0 — стандартная модель ByteDance Seed для мультимодального аудиовизуального творчества. Совместная архитектура объединяет текст, изображения, видео и аудио; отдельные сценарии создают сцены по референсам, редактируют и расширяют видео. Она полезна, когда нужны связное исполнение и конкретная визуальная или звуковая информация подготовленных материалов.</p><h4>Мультимодальные референсы и режиссёрское управление</h4><p>Изображения задают внешность, стиль и композицию; видео направляют действия, камеру и эффекты; аудио — тембр, музыку или диалог. Определите роль материала и опишите итоговую сцену. Производитель подчёркивает управление исполнением, светом, тенями и языком камеры.</p><p>Для продуктовой истории подготовьте фото продукта, референс камеры и звуковую подсказку. Пример: «Сохраните синюю стеклянную вазу из Image 1. Используйте медленное боковое движение камеры из Video 1. Ваза стоит на освещённой солнцем полке под мягкую инструментальную музыку на основе Audio 1». Результат — новая постановочная сцена из выбранных сведений референсов.</p><p>Можно сочетать изображение и аудио, изображение и видео, видео и аудио или все три типа. Только аудио и текст с аудио без изображения или видео не поддерживаются. Также документированы текст–видео, первый кадр и первый с последним. Если важны фиксированные начало и конец, используйте специальный сценарий: название референса граничным кадром в omni-reference-промпте управляет им лишь косвенно.</p><h4>Редактирование материала</h4><p>Модель заменяет объект, добавляет или удаляет предметы, меняет элементы, перерисовывает или исправляет части видео. Опишите конкретную правку и исходный материал. Для добавления укажите время и место появления; для удаления или замены — точный объект и сохраняемые детали.</p><p>Например: «Замените настольную лампу в Video 1 латунной лампой из Image 1. Сохраните движение камеры, расположение на столе и направление света». Нужный результат — изменённая сцена с заданной заменой. Проверяйте неизменяемые области и новый предмет, особенно при перекрытии, движении и смене планов.</p><h4>Расширение и соединение последовательности</h4><p>Seedance 2.0 расширяет видео вперёд или назад и соединяет до трёх клипов сгенерированными переходами. Задайте временное направление и новое событие. Для связки упорядочите клипы и опишите переход каждой пары, например вход камеры в дверной проём и появление в следующем окружении.</p><p>Простое расширение обычно возвращает продолжение вокруг исходника; явно укажите, если нужно повторить исходный сегмент. При соединении двух-трёх клипов сценарий может включать оригиналы и новый переход. Это помогает развить начало или конец либо связать подготовленные сцены с определённым действием стыка.</p><h4>Стандартный вывод и 4K</h4><p>Стандартная версия документирует MP4, 24 fps и длительность от 4 до 15 секунд. Уровни — 480p, 720p, 1080p с 8-битным цветом и 4K с 10-битным. Соотношения — 21:9, 16:9, 4:3, 1:1, 3:4 и 9:16. Также документированы адаптивное кадрирование и автоматическая длительность. У Fast отдельный более узкий профиль 480p/720p.</p><p>4K использует H.265/HEVC. Десятибитная кодировка сохраняет дополнительные тональные градации и плавность цвета, важные для тонких световых или цветовых переходов. Проверьте декодирование в целевой среде воспроизведения и монтажа: некоторые браузеры и устройства не воспроизводят напрямую. Совместимый контейнер сам по себе не обеспечивает совместимого видеодекодирования.</p><p>Модель создаёт синхронный звук или немое видео и возвращает последний сгенерированный кадр для следующей сцены. Звук монофонический. Семейство 2.0 не поддерживает отдельное двухэтапное превью Draft; не следует переносить его из другой версии Seedance.</p><h4>Подготовка референсов и существенные пределы</h4><p>Ёмкость — до девяти изображений, трёх видео и трёх аудио. Прямая загрузка изображений или видео с реальными лицами в этом профиле не принимается; используется поддерживаемый портретный сценарий. Каждый видео- и аудиоклип — 2–15 секунд. Все видео вместе — до 15 секунд, все аудио отдельно — до 15 секунд. Видео: MP4/MOV, 24–60 fps, до 200 MB каждое; аудио: WAV/MP3, до 15 MB каждое. Изображения: JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF, меньше 30 MB каждое; тело запроса — до 64 MB. В референсном профиле ширина и высота изображения строго между 300 и 6 000 пикселей, отношение ширины к высоте строго между 0,4 и 2,5. Видео допускают 300–6 000 пикселей по измерению, отношение 0,4–2,5 включительно и 407 696–8 295 044 пикселя всего. MP4/MOV используют H.264/AVC либо H.265/HEVC и аудио AAC либо MP3.</p><p>Упорядочите файлы и называйте тип с номером: Image 1, Video 1, Audio 1. Номер следует порядку внутри типа. Объясните переносимые черты и содержание, которое не должно задавать новую сцену. Документированные языки промпта — английский, испанский, индонезийский, португальский и японский. Сохраняйте один язык речи в диалоге; кроме имён собственных, смешение не рекомендуется. При работе с голосом отделяйте диктора, точную реплику и указание подачи.</p><p>Подготовьте первый и последний кадры с совместимым кадрированием. Несовпадение изображения и вывода может вызвать обрезку или резкую смену кадра; согласованные размеры и адаптивное кадрирование документированы как решения. Сосредоточьте описание на событии и ролях референсов. Производитель предупреждает: длинный промпт рассеивает информацию, детали могут игнорироваться. Проверяйте движение, непрерывность референсов, звук и стыки сцен отдельно.</p><h4>Планирование кадров и указания текста</h4><p>Сложную сцену организуйте как Shot 1, Shot 2 и Shot 3, задавая камеру, действие, положение и звук по порядку. Рекомендованы одно движение камеры на план и медленные связанные действия. Точные временные метки планов нестабильны; последовательность событий управляет лучше нескольких точных окон.</p><p>Модель генерирует обычный текст: слоганы, субтитры и речевые облачка. Можно задать цвет, оформление, место и появление. Используйте обычные символы вместо редких или специальных, проверяйте надпись в движении. Ясно привяжите каждый референс к персонажу или объекту. Ракурсы продукта дают разную информацию; коллажи разворотов персонажа могут путать узнаваемость лица. Документированная рекомендация — отдельные ясные портрет и изображение в полный рост.</p><h4>Поведение для проверки перед монтажом</h4><p>Руководство описывает нежелательные субтитры, логотипы, дубли персонажей и уход стиля. Чистые материалы, постоянные метки и явные ограничения уменьшают риск, но не гарантируют устранения текста или дублей. Более четырёх референсных людей — риск устойчивости, отдельный от числа файлов.</p><p>Расширение может дать скачок или откат на стыке; повторные продолжения накапливают потерю качества. Проверяйте граничные кадры и ограничивайте последовательные расширения. Референсный голос может отличаться тембром, повествование — оканчиваться щелчком или обрывом; документированное решение — затухание аудио. Китайские иероглифы с несколькими чтениями, редкие или похожие по начертанию знаки могут произноситься неверно. Для точного анимированного эффекта, например обратного отсчёта, референс движения информативнее словесного запроса. Это конкретные причины отдельно проверять соответствие внешности референсам, текст, движение и звук при выборе клипа.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Доступно в Ailoot · входные данные и методы</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Видео</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Входные данные</dt><dd><code>text</code>, <code>image</code>, <code>audio</code></dd></div><div><dt>Результат</dt><dd><code>video</code></dd></div><div><dt>Выходной формат</dt><dd>Исходные байты MP4; без нормализации и перекодирования</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Поле</th><th>Тип</th><th>Требование</th><th>Значения и ограничения</th><th>По умолчанию</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>bytedance/seedance-2.0</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>integer</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15</div><div>Минимум: 1</div><div>Максимум: 600</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>480p, 720p, 1080p, 4K</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>boolean</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>false, true</div><div>Условия: При 480p и 720p отсутствие generate_audio выбирает цену с аудио, а false — цену без аудио. При 1080p и 4K цена разрешения действует при обоих значениях. Проверьте has_audio в результате, чтобы узнать о возвращённой аудиодорожке.</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">frame_images</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>array</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Минимум элементов: 1</div><div>Максимум элементов: 2</div><div>Входное содержимое: Массив объектов кадров. Каждый содержит type=image_url, image_url с url и frame_type=first_frame или last_frame. Каждая роль встречается не более одного раза. Используйте публичные HTTPS-ссылки.</div><div>Точные ключи: type, image_url, frame_type</div><div>Условия: Эти ключи применяются к каждому объекту кадра. Не передавайте frame_images для запроса только с текстом.</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>array</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Входное содержимое: Массив объектов референсных изображений или аудио. Укажите image_url или audio_url в type и передайте соответствующий объект URL, содержащий url. Стоимость видеореференсов по-прежнему невозможно определить.</div><div>Условия: Не передавайте frame_images, чтобы использовать режим референсов. Используйте публичные HTTPS URL.</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">size</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>480x480, 480x640, 480x854, 640x480, 854x480, 1120x480, 720x720, 720x960, 720x1280, 720x1680, 960x720, 1280x720, 1680x720, 1080x1080, 1080x1440, 1080x1920, 1440x1080, 1920x1080, 2520x1080, 3840x2160, 2160x3840, 2160x2160, 2880x2160, 2160x2880, 5040x2160</div><div>Шаблон: ^[1-9][0-9]*x[1-9][0-9]*$</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">seed</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>integer</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Минимум: -9 223 372 036 854 775 808</div><div>Максимум: 9 223 372 036 854 775 807</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">callback_url</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Шаблон: ^https://</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>object</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Сочетания входных материалов</summary><p class=\"note-s\"><b>Из текста в видео</b> · Текстовый запрос. · Обязательно: model, prompt, duration</p><p class=\"note-s\"><code>Передайте текстовый запрос и поддерживаемую длительность в целых секундах. Используйте точный размер из списка либо разрешение и соотношение сторон, дающие указанные в списке размеры.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Тип: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Тип: string · Максимум байтов UTF-8: 10 000 · Нужен хотя бы один непробельный символ: Да</p><p class=\"note-s\"><b>Из изображения в видео</b> · Текстовый запрос и изображение кадра. · Обязательно: model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images — массив объектов с type=image_url, image_url, содержащим url, и frame_type. Используйте публичный HTTPS URL изображения; first_frame и last_frame могут встречаться по одному разу. Используйте перечисленный размер результата или совместимые размеры. Не добавляйте видеореференсы.</code></p><p class=\"note-s\">Точные ключи: type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Тип: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Тип: string · Максимум байтов UTF-8: 10 000 · Нужен хотя бы один непробельный символ: Да</p><p class=\"note-s\"><b>Reference to video</b> · Текстовый запрос и референсные изображения или аудио. · Обязательно: model, prompt, duration, input_references</p><p class=\"note-s\"><code>input_references — массив. Каждый объект содержит type=image_url или type=audio_url и соответствующий объект URL с url. Используйте публичные HTTPS-ссылки. Не передавайте frame_images, чтобы выбрать режим референсов. Стоимость видеореференсов определить невозможно.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Тип: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Тип: string · Максимум байтов UTF-8: 10 000 · Нужен хотя бы один непробельный символ: Да</p></details><details class=\"note-s\" data-method-contract><summary>Параметры и жизненный цикл метода</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Параметр</th><th>Контракт</th></tr></thead><tbody><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>content_type</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>application/json</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>required</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>model, prompt, duration</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>material_types</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>text, image, audio</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>additional_properties</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>false</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>optional_controls</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>resolution, aspect_ratio, generate_audio, frame_images, input_references, size, seed, callback_url, session_id, trace, user</td></tr></tbody></table></div><p>Жизненный цикл: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Тарифы</h3><div class=\"card-result-process\" data-billing-basis><h5>Как рассчитывается итоговая плата</h5><p class=\"note-s\">Отображаемые тарифы позволяют оценить стоимость до генерации. Итоговое списание рассчитывается по стоимости, записанной для исходной генерации. Измеренная длительность результата и прогнозные объёмы не являются итоговым оплачиваемым объёмом.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.</p><dl data-price-conditions><dt>Быстрый режим</dt><dd>Не указано <span class=\"note-s\">При выборе быстрого режима</span></dd><dt>Режим flex</dt><dd>Не указано <span class=\"note-s\">При выборе режима flex</span></dd><dt>Максимальная интенсивность рассуждений</dt><dd>Не указано <span class=\"note-s\">При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Оценочные ставки для сравнения</h4><h4>Цены по конфигурациям</h4><p class=\"note-s\">Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Конфигурация</th><th>Шкала ставок</th><th>Прогноз количества</th><th>Расчётная единица</th><th>Условия расчёта</th><th>Плата</th></tr></thead><tbody><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Базовые тарифы на токены</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>Базовая ставка</td><td data-cell-label=\"Прогноз количества\"><span class=\"card-cell-label\">Прогноз количества</span>—</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>—</td><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>—</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Вход · Входные токены · Оценка только для сравнения</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Выход · Выходные токены · Оценка только для сравнения</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Чтение кэша · Оценка только для сравнения</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш · Оценка только для сравнения</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш, 1 час · Оценка только для сравнения</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Прогноз количества\"><span class=\"card-cell-label\">Прогноз количества</span>—</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>за 1K видеотокенов</td><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>В этом ключе цены дополнительное условие не объявлено.</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Выход · Цена видеотокена · Оценка только для сравнения</span> <b>$0.014</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Прогноз количества\"><span class=\"card-cell-label\">Прогноз количества</span>—</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>за 1K видеотокенов</td><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>resolution: 1080p</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Выход · Цена видеотокена · Оценка только для сравнения</span> <b>$0.0154</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Прогноз количества\"><span class=\"card-cell-label\">Прогноз количества</span>—</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>за 1K видеотокенов</td><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>входные данные: with_video_input; разрешение: 1080p</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>reference · Цена видеотокена · Оценка только для сравнения</span> <b>$0.0094</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Прогноз количества\"><span class=\"card-cell-label\">Прогноз количества</span>—</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>за 1K видеотокенов</td><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>resolution: 4k</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Выход · Цена видеотокена · Оценка только для сравнения</span> <b>$0.008</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Прогноз количества\"><span class=\"card-cell-label\">Прогноз количества</span>—</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>за 1K видеотокенов</td><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>входные данные: with_video_input; разрешение: 4k</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>reference · Цена видеотокена · Оценка только для сравнения</span> <b>$0.0048</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Прогноз количества\"><span class=\"card-cell-label\">Прогноз количества</span>—</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>за 1K видеотокенов</td><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>входные данные: with_video_input</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>reference · Цена видеотокена · Оценка только для сравнения</span> <b>$0.0086</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Прогноз количества\"><span class=\"card-cell-label\">Прогноз количества</span>—</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>за 1K видеотокенов</td><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>аудио: without_audio</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Выход · Цена видеотокена · Оценка только для сравнения</span> <b>$0.014</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Ориентировочная стоимость генерации</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Прогноз количества\"><span class=\"card-cell-label\">Прогноз количества</span>Оценка для одной генерации</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>—</td><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>—</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Выход · Оценочная стоимость генерации · Оценка только для сравнения</span> <b>$0.3024</b> <span class=\"price-unit\">оценка до генерации</span></div><p class=\"note-s\">Эта оценка не является дополнительным списанием или фиксированным тарифом для завершённой генерации.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. <a href=\"/docs/ru/billing/reserve/\">Как работают резервирование и расчёт →</a></p><div data-declared-reference-pricing><h4>Сведения о справочном тарифе</h4><p class=\"note-s\">Справочные шкалы модели не меняют выбор метода, расчёт стоимости или списания. Действующая плата определяется ставками выбранного метода Ailoot.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Ссылки на цены конфигураций видео</summary><h4>Цены по конфигурациям</h4><p class=\"note-s\">Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Конфигурация</th><th>Условия расчёта</th><th>Плата</th></tr></thead><tbody><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>В этом ключе цены дополнительное условие не объявлено.</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Выход · Цена видеотокена</span> <b>$0.014</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>resolution: 4k</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Выход · Цена видеотокена</span> <b>$0.008</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>resolution: 1080p</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Выход · Цена видеотокена</span> <b>$0.0154</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>аудио: without_audio</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Выход · Цена видеотокена</span> <b>$0.014</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>входные данные: with_video_input</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>reference · Цена видеотокена</span> <b>$0.0086</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>входные данные: with_video_input; разрешение: 4k</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>reference · Цена видеотокена</span> <b>$0.0048</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Цена видеотокена</th><td data-cell-label=\"Условия расчёта\"><span class=\"card-cell-label\">Условия расчёта</span>входные данные: with_video_input; разрешение: 1080p</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>reference · Цена видеотокена</span> <b>$0.0094</b> <span class=\"price-unit\">за 1K видеотокенов</span></div><p class=\"note-s\">Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Примеры запросов</h3><h4>Ailoot Ultra · Видео</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Варианты кода\"><button class=\"cg-tab\" id=\"model-code-1131-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1131-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · создать видео</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Скопировать код\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1131-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1131-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nfrom pathlib import Path\nPath(&#39;request.json&#39;).write_text(&#39;{&quot;model&quot;:&quot;bytedance/seedance-2.0&quot;,&quot;prompt&quot;:&quot;A serene mountain landscape at sunset&quot;,&quot;duration&quot;:4,&quot;resolution&quot;:&quot;480p&quot;,&quot;size&quot;:&quot;480x480&quot;,&quot;generate_audio&quot;:false}&#39;, encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Получить и сохранить результаты</h3><h4>Ailoot Ultra · Видео</h4><p class=\"note-s\">подписанные ссылки на содержимое, принадлежащее Ailoot</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{public_id}</code></li><li><code>GET /v1/videos/{public_id}/content</code></li></ul><h5>Проверить статус задачи</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Варианты кода\"><button class=\"cg-tab\" id=\"model-code-1132-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1132-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET статус исходной операции</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Скопировать код\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1132-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1132-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_STATUS_URL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nif not isinstance(r.get(&#39;id&#39;),str) or not r[&#39;id&#39;]:raise SystemExit(&#39;Keep the original response and headers for reconciliation; no returned ID&#39;)\nPath(&#39;status-url.txt&#39;).write_text(&#39;https://api.ailoot.ai/v1/videos/&#39;+quote(r[&#39;id&#39;],safe=&#39;&#39;))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error &quot;$(cat status-url.txt)&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div><details class=\"card-about\"><summary>Чтение другого содержимого</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Варианты кода\"><button class=\"cg-tab\" id=\"model-code-1133-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1133-panel-0\" aria-selected=\"true\" tabindex=\"0\">Сохраняйте каждый готовый результат, принадлежащий вам</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Скопировать код\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1133-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1133-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nif r.get(&#39;status&#39;)!=&#39;completed&#39;:raise SystemExit(&#39;Keep the original ID and read its status; never recreate an unknown job&#39;)\nif not isinstance(r.get(&#39;data&#39;),list) or not r[&#39;data&#39;]:raise SystemExit(&#39;Keep the complete original status; no completed outputs supplied&#39;)\nurls=[]\nfor i,u in enumerate(r.get(&#39;data&#39;,[])):\n    if not isinstance(u,str):raise SystemExit(&#39;Keep the original response; unexpected asset shape&#39;)\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Сохраняйте все готовые результаты</h5><p class=\"note-s\">Сохраните каждое готовое видео или полученный файл; загрузите содержимое по каждому фактически полученному URL материала.</p><p class=\"note-s\">Сохраняйте каждый фактический результат, принадлежащий Ailoot, и возвращённые измеренные метаданные.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Если нужно проверить исходный ответ</h5><p class=\"note-s\">503 result_pending_check + исходный id + X-Should-Retry:false; никогда не отправляйте исходный запрос повторно</p></div><details class=\"card-about\" data-output-fields><summary>Поля ответа</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Поле</th><th>Тип</th><th>Значение</th></tr></thead><tbody><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">index</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>integer</td><td data-cell-label=\"Значение\"><span class=\"card-cell-label\">Значение</span>Позиция этого видео в списке результатов, начиная с нуля.</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">content_url</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>string</td><td data-cell-label=\"Значение\"><span class=\"card-cell-label\">Значение</span>Подписанный HTTPS URL для скачивания этого готового видео.</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">sha256</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>string | null</td><td data-cell-label=\"Значение\"><span class=\"card-cell-label\">Значение</span>Хэш SHA-256 исходных байтов видео; null, если недоступен.</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">size_bytes</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>integer | null</td><td data-cell-label=\"Значение\"><span class=\"card-cell-label\">Значение</span>Размер исходного видеофайла в байтах; null, если недоступен.</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">duration_ms</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>integer | null</td><td data-cell-label=\"Значение\"><span class=\"card-cell-label\">Значение</span>Измеренная длительность видео в миллисекундах; null, если недоступна.</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>integer | null</td><td data-cell-label=\"Значение\"><span class=\"card-cell-label\">Значение</span>Ширина видео в пикселях; null, если недоступна.</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>integer | null</td><td data-cell-label=\"Значение\"><span class=\"card-cell-label\">Значение</span>Высота видео в пикселях; null, если недоступна.</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">video_codec</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>string | null</td><td data-cell-label=\"Значение\"><span class=\"card-cell-label\">Значение</span>Идентификатор видеокодека; null, если не записан.</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">has_audio</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>boolean | null</td><td data-cell-label=\"Значение\"><span class=\"card-cell-label\">Значение</span>Есть ли у видео аудиодорожка; null, если не измерено.</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">audio_codec</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>string | null</td><td data-cell-label=\"Значение\"><span class=\"card-cell-label\">Значение</span>Идентификатор аудиокодека; null, если идентификатор не записан.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Ошибки и дальнейшие шаги</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Ответ</th><th>Условие</th><th>Следующий шаг</th></tr></thead><tbody><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Доступ к видео недоступен либо этот ID видео не найден.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Проверьте доступ к видео. Для существующего видео используйте исходный публичный ID и тот же ключ API.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Ключ API не соответствует авторизованному аккаунту.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Перед отправкой проверьте ключ API и доступ к аккаунту.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Не удалось прочитать запрос либо индекс скачивания недопустим.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Исправьте тело запроса. Для скачивания выберите индекс результата, возвращённый исходной задачей.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Невозможно определить цену выбранной конфигурации видео.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Выберите поддерживаемую конфигурацию видео и заполните обязательные параметры перед отправкой исправленного запроса.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Недопустимы входное видео или исходная задача продолжения.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Используйте корректные входные HTTPS-ссылки. Для продолжения используйте исходный публичный ID вашего готового видео и тот же ключ API.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>402 · <code>billing_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Доступный баланс или лимиты не позволяют зарезервировать средства.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Перед отправкой нового запроса проверьте доступный баланс и лимиты.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>503 · <code>server_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Проверка видео, хранилище или доступ к сервису временно недоступны.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Дождитесь доступности сервиса. Если у вас уже есть ID видео, проверяйте ту исходную задачу вместо создания новой генерации.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Нужно проверить результат исходного видео и начисление.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните возвращённый ID видео и проверьте эту задачу. Не отправляйте заменяющий запрос на генерацию, пока идёт проверка.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Скачивание существующего видео временно недоступно.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Проверьте ту же видеозадачу позже и скачайте её существующий результат. Новая генерация создаёт отдельную операцию.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Содержимое видео не опубликовано.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Проверьте исходный статус задачи. Скачайте результат после completed; при failed следуйте уведомлению о проверке начисления.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Псевдонимы</h3><h4>Псевдонимы моделей</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=bytedance%2Fseedance-2.0&amp;route=Ultra&amp;caller=bytedance%2Fseedance-2.0&amp;fmt=videos\"><code>bytedance/seedance-2.0</code></a></span></p><h4>Псевдонимы путей метода</h4><p class=\"note-s\">Используйте пути методов, указанные выше.</p><h4>Связанные ID для вызова</h4><p class=\"note-s\"><a href=\"#m=bytedance%2Fseedance-2.0&amp;route=Ultra&amp;caller=bytedance%2Fseedance-2.0&amp;fmt=videos\"><code>bytedance/seedance-2.0</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "bytedance/seedance-2.0",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "bytedance/seedance-2.0",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|bytedance%2Fseedance-2.0",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Отображаемые тарифы позволяют оценить стоимость до генерации. Итоговое списание рассчитывается по стоимости, записанной для исходной генерации. Измеренная длительность результата и прогнозные объёмы не являются итоговым оплачиваемым объёмом.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Сохраняйте каждый фактический результат, принадлежащий Ailoot, и возвращённые измеренные метаданные.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "Доступ к видео недоступен либо этот ID видео не найден.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Проверьте доступ к видео. Для существующего видео используйте исходный публичный ID и тот же ключ API.",
                "type": "not_found_error"
              },
              {
                "condition": "Ключ API не соответствует авторизованному аккаунту.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Перед отправкой проверьте ключ API и доступ к аккаунту.",
                "type": "authentication_error"
              },
              {
                "condition": "Не удалось прочитать запрос либо индекс скачивания недопустим.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Исправьте тело запроса. Для скачивания выберите индекс результата, возвращённый исходной задачей.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Невозможно определить цену выбранной конфигурации видео.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Выберите поддерживаемую конфигурацию видео и заполните обязательные параметры перед отправкой исправленного запроса.",
                "type": "price_unavailable"
              },
              {
                "condition": "Недопустимы входное видео или исходная задача продолжения.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Используйте корректные входные HTTPS-ссылки. Для продолжения используйте исходный публичный ID вашего готового видео и тот же ключ API.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Доступный баланс или лимиты не позволяют зарезервировать средства.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Перед отправкой нового запроса проверьте доступный баланс и лимиты.",
                "type": "billing_error"
              },
              {
                "condition": "Проверка видео, хранилище или доступ к сервису временно недоступны.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Дождитесь доступности сервиса. Если у вас уже есть ID видео, проверяйте ту исходную задачу вместо создания новой генерации.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Нужно проверить результат исходного видео и начисление.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Сохраните возвращённый ID видео и проверьте эту задачу. Не отправляйте заменяющий запрос на генерацию, пока идёт проверка.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Скачивание существующего видео временно недоступно.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Проверьте ту же видеозадачу позже и скачайте её существующий результат. Новая генерация создаёт отдельную операцию.",
                "type": "server_error"
              },
              {
                "condition": "Содержимое видео не опубликовано.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Проверьте исходный статус задачи. Скачайте результат после completed; при failed следуйте уведомлению о проверке начисления.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + исходный id + X-Should-Retry:false; никогда не отправляйте исходный запрос повторно"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Передайте текстовый запрос и поддерживаемую длительность в целых секундах. Используйте точный размер из списка либо разрешение и соотношение сторон, дающие указанные в списке размеры.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Текстовый запрос."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images — массив объектов с type=image_url, image_url, содержащим url, и frame_type. Используйте публичный HTTPS URL изображения; first_frame и last_frame могут встречаться по одному разу. Используйте перечисленный размер результата или совместимые размеры. Не добавляйте видеореференсы.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Текстовый запрос и изображение кадра."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references — массив. Каждый объект содержит type=image_url или type=audio_url и соответствующий объект URL с url. Используйте публичные HTTPS-ссылки. Не передавайте frame_images, чтобы выбрать режим референсов. Стоимость видеореференсов определить невозможно.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "Текстовый запрос и референсные изображения или аудио."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "reference_to_video"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Позиция этого видео в списке результатов, начиная с нуля.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "Подписанный HTTPS URL для скачивания этого готового видео.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "Хэш SHA-256 исходных байтов видео; null, если недоступен.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Размер исходного видеофайла в байтах; null, если недоступен.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Измеренная длительность видео в миллисекундах; null, если недоступна.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Ширина видео в пикселях; null, если недоступна.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Высота видео в пикселях; null, если недоступна.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Идентификатор видеокодека; null, если не записан.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Есть ли у видео аудиодорожка; null, если не измерено.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Идентификатор аудиокодека; null, если идентификатор не записан.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "подписанные ссылки на содержимое, принадлежащее Ailoot",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "bytedance/seedance-2.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "bytedance/seedance-2.0"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p",
                  "1080p",
                  "4K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "1:1",
                  "3:4",
                  "9:16",
                  "4:3",
                  "16:9",
                  "21:9",
                  "9:21"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "При 480p и 720p отсутствие generate_audio выбирает цену с аудио, а false — цену без аудио. При 1080p и 4K цена разрешения действует при обоих значениях. Проверьте has_audio в результате, чтобы узнать о возвращённой аудиодорожке.",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Эти ключи применяются к каждому объекту кадра. Не передавайте frame_images для запроса только с текстом.",
                "content": "Массив объектов кадров. Каждый содержит type=image_url, image_url с url и frame_type=first_frame или last_frame. Каждая роль встречается не более одного раза. Используйте публичные HTTPS-ссылки.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "Не передавайте frame_images, чтобы использовать режим референсов. Используйте публичные HTTPS URL.",
                "content": "Массив объектов референсных изображений или аудио. Укажите image_url или audio_url в type и передайте соответствующий объект URL, содержащий url. Стоимость видеореференсов по-прежнему невозможно определить.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480x480",
                  "480x640",
                  "480x854",
                  "640x480",
                  "854x480",
                  "1120x480",
                  "720x720",
                  "720x960",
                  "720x1280",
                  "720x1680",
                  "960x720",
                  "1280x720",
                  "1680x720",
                  "1080x1080",
                  "1080x1440",
                  "1080x1920",
                  "1440x1080",
                  "1920x1080",
                  "2520x1080",
                  "3840x2160",
                  "2160x3840",
                  "2160x2160",
                  "2880x2160",
                  "2160x2880",
                  "5040x2160"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "model": {
                  "const": "bytedance/seedance-2.0"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Request geometry is required for the pre-generation estimate and reserve. Returned geometry and track time describe the generated output; final charge follows the actual billed configuration.",
                "Video references with *_with_video_input quantity are rejected; image/audio references only where model reference types admit them."
              ]
            },
            "unsupported": [
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "seed",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "reference_to_video"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "входные данные: with_video_input; разрешение: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Эта оценка не является дополнительным списанием или фиксированным тарифом для завершённой генерации.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Ориентировочная стоимость генерации",
            "units": [
              {
                "amount": "0.3024",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.3024",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"model\":\"bytedance/seedance-2.0\",\"prompt\":\"A serene mountain landscape at sunset\",\"duration\":4,\"resolution\":\"480p\",\"size\":\"480x480\",\"generate_audio\":false}', encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.3024",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.3024",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "bytedance/seedance-2.0",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0154000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000154",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0094000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000094",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0048000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000048",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.0086000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000086",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_without_audio",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.3024",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.3024",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "bytedance/seedance-2.0",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "247b5638c405a251ea6f97e3df26349012e8310bf80697717bb2b54311260a3a",
    "input_html_sha256": "e8a3780e6bcd3810d5460cb604a4f85fcc439f9fc79b7b367956a1d8f8485a96",
    "private_audit_sha256": "fb1cf23178f110f655d277c393dadafbef1c394587a9ea5b2351059cada27b38",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ru/bytedance-seedance-2-0/",
    "description": "ByteDance Seedance 2.0 сочетает встроенную генерацию аудио и видео с референсами изображений, видео и звука. Создавайте новые сцены, редактируйте материал или расширяйте последовательность; стандартная версия включает документированный вывод 1080p и 10-битный 4K.",
    "locale": "ru",
    "md_url": "https://ailoot.ai/models/ru/bytedance-seedance-2-0/index.md",
    "title": "ByteDance: Seedance 2.0 — Ailoot",
    "url": "https://ailoot.ai/models/ru/bytedance-seedance-2-0/"
  },
  "rawModel": {
    "about": "Seedance 2.0 — стандартная модель ByteDance Seed для мультимодального аудиовизуального творчества. Совместная архитектура объединяет текст, изображения, видео и аудио; отдельные сценарии создают сцены по референсам, редактируют и расширяют видео. Она полезна, когда нужны связное исполнение и конкретная визуальная или звуковая информация подготовленных материалов.\n\n### Мультимодальные референсы и режиссёрское управление\n\nИзображения задают внешность, стиль и композицию; видео направляют действия, камеру и эффекты; аудио — тембр, музыку или диалог. Определите роль материала и опишите итоговую сцену. Производитель подчёркивает управление исполнением, светом, тенями и языком камеры.\n\nДля продуктовой истории подготовьте фото продукта, референс камеры и звуковую подсказку. Пример: «Сохраните синюю стеклянную вазу из Image 1. Используйте медленное боковое движение камеры из Video 1. Ваза стоит на освещённой солнцем полке под мягкую инструментальную музыку на основе Audio 1». Результат — новая постановочная сцена из выбранных сведений референсов.\n\nМожно сочетать изображение и аудио, изображение и видео, видео и аудио или все три типа. Только аудио и текст с аудио без изображения или видео не поддерживаются. Также документированы текст–видео, первый кадр и первый с последним. Если важны фиксированные начало и конец, используйте специальный сценарий: название референса граничным кадром в omni-reference-промпте управляет им лишь косвенно.\n\n### Редактирование материала\n\nМодель заменяет объект, добавляет или удаляет предметы, меняет элементы, перерисовывает или исправляет части видео. Опишите конкретную правку и исходный материал. Для добавления укажите время и место появления; для удаления или замены — точный объект и сохраняемые детали.\n\nНапример: «Замените настольную лампу в Video 1 латунной лампой из Image 1. Сохраните движение камеры, расположение на столе и направление света». Нужный результат — изменённая сцена с заданной заменой. Проверяйте неизменяемые области и новый предмет, особенно при перекрытии, движении и смене планов.\n\n### Расширение и соединение последовательности\n\nSeedance 2.0 расширяет видео вперёд или назад и соединяет до трёх клипов сгенерированными переходами. Задайте временное направление и новое событие. Для связки упорядочите клипы и опишите переход каждой пары, например вход камеры в дверной проём и появление в следующем окружении.\n\nПростое расширение обычно возвращает продолжение вокруг исходника; явно укажите, если нужно повторить исходный сегмент. При соединении двух-трёх клипов сценарий может включать оригиналы и новый переход. Это помогает развить начало или конец либо связать подготовленные сцены с определённым действием стыка.\n\n### Стандартный вывод и 4K\n\nСтандартная версия документирует MP4, 24 fps и длительность от 4 до 15 секунд. Уровни — 480p, 720p, 1080p с 8-битным цветом и 4K с 10-битным. Соотношения — 21:9, 16:9, 4:3, 1:1, 3:4 и 9:16. Также документированы адаптивное кадрирование и автоматическая длительность. У Fast отдельный более узкий профиль 480p/720p.\n\n4K использует H.265/HEVC. Десятибитная кодировка сохраняет дополнительные тональные градации и плавность цвета, важные для тонких световых или цветовых переходов. Проверьте декодирование в целевой среде воспроизведения и монтажа: некоторые браузеры и устройства не воспроизводят напрямую. Совместимый контейнер сам по себе не обеспечивает совместимого видеодекодирования.\n\nМодель создаёт синхронный звук или немое видео и возвращает последний сгенерированный кадр для следующей сцены. Звук монофонический. Семейство 2.0 не поддерживает отдельное двухэтапное превью Draft; не следует переносить его из другой версии Seedance.\n\n### Подготовка референсов и существенные пределы\n\nЁмкость — до девяти изображений, трёх видео и трёх аудио. Прямая загрузка изображений или видео с реальными лицами в этом профиле не принимается; используется поддерживаемый портретный сценарий. Каждый видео- и аудиоклип — 2–15 секунд. Все видео вместе — до 15 секунд, все аудио отдельно — до 15 секунд. Видео: MP4/MOV, 24–60 fps, до 200 MB каждое; аудио: WAV/MP3, до 15 MB каждое. Изображения: JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF, меньше 30 MB каждое; тело запроса — до 64 MB. В референсном профиле ширина и высота изображения строго между 300 и 6 000 пикселей, отношение ширины к высоте строго между 0,4 и 2,5. Видео допускают 300–6 000 пикселей по измерению, отношение 0,4–2,5 включительно и 407 696–8 295 044 пикселя всего. MP4/MOV используют H.264/AVC либо H.265/HEVC и аудио AAC либо MP3.\n\nУпорядочите файлы и называйте тип с номером: Image 1, Video 1, Audio 1. Номер следует порядку внутри типа. Объясните переносимые черты и содержание, которое не должно задавать новую сцену. Документированные языки промпта — английский, испанский, индонезийский, португальский и японский. Сохраняйте один язык речи в диалоге; кроме имён собственных, смешение не рекомендуется. При работе с голосом отделяйте диктора, точную реплику и указание подачи.\n\nПодготовьте первый и последний кадры с совместимым кадрированием. Несовпадение изображения и вывода может вызвать обрезку или резкую смену кадра; согласованные размеры и адаптивное кадрирование документированы как решения. Сосредоточьте описание на событии и ролях референсов. Производитель предупреждает: длинный промпт рассеивает информацию, детали могут игнорироваться. Проверяйте движение, непрерывность референсов, звук и стыки сцен отдельно.\n\n### Планирование кадров и указания текста\n\nСложную сцену организуйте как Shot 1, Shot 2 и Shot 3, задавая камеру, действие, положение и звук по порядку. Рекомендованы одно движение камеры на план и медленные связанные действия. Точные временные метки планов нестабильны; последовательность событий управляет лучше нескольких точных окон.\n\nМодель генерирует обычный текст: слоганы, субтитры и речевые облачка. Можно задать цвет, оформление, место и появление. Используйте обычные символы вместо редких или специальных, проверяйте надпись в движении. Ясно привяжите каждый референс к персонажу или объекту. Ракурсы продукта дают разную информацию; коллажи разворотов персонажа могут путать узнаваемость лица. Документированная рекомендация — отдельные ясные портрет и изображение в полный рост.\n\n### Поведение для проверки перед монтажом\n\nРуководство описывает нежелательные субтитры, логотипы, дубли персонажей и уход стиля. Чистые материалы, постоянные метки и явные ограничения уменьшают риск, но не гарантируют устранения текста или дублей. Более четырёх референсных людей — риск устойчивости, отдельный от числа файлов.\n\nРасширение может дать скачок или откат на стыке; повторные продолжения накапливают потерю качества. Проверяйте граничные кадры и ограничивайте последовательные расширения. Референсный голос может отличаться тембром, повествование — оканчиваться щелчком или обрывом; документированное решение — затухание аудио. Китайские иероглифы с несколькими чтениями, редкие или похожие по начертанию знаки могут произноситься неверно. Для точного анимированного эффекта, например обратного отсчёта, референс движения информативнее словесного запроса. Это конкретные причины отдельно проверять соответствие внешности референсам, текст, движение и звук при выборе клипа.",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance",
    "available": null,
    "canonical_model": "bytedance/seedance-2.0",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video",
        "audio"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.3024",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.3024",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "Полная информация о ценах конфигурации — в подробностях."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "cb128050bf8483dc92f31388",
        "label": "Ссылки на цены конфигураций видео",
        "profiles": [
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "В этом ключе цены дополнительное условие не объявлено."
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.014",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "resolution: 4k"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.008",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "resolution: 1080p"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0154",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "аудио: without_audio"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.014",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "входные данные: with_video_input"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0086",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "входные данные: with_video_input; разрешение: 4k"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0048",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "входные данные: with_video_input; разрешение: 1080p"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0094",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "bytedance/seedance-2.0",
    "input": [
      "text",
      "image",
      "audio"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Отображаемые тарифы позволяют оценить стоимость до генерации. Итоговое списание рассчитывается по стоимости, записанной для исходной генерации. Измеренная длительность результата и прогнозные объёмы не являются итоговым оплачиваемым объёмом.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Сохраняйте каждый фактический результат, принадлежащий Ailoot, и возвращённые измеренные метаданные.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "Доступ к видео недоступен либо этот ID видео не найден.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Проверьте доступ к видео. Для существующего видео используйте исходный публичный ID и тот же ключ API.",
                "type": "not_found_error"
              },
              {
                "condition": "Ключ API не соответствует авторизованному аккаунту.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Перед отправкой проверьте ключ API и доступ к аккаунту.",
                "type": "authentication_error"
              },
              {
                "condition": "Не удалось прочитать запрос либо индекс скачивания недопустим.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Исправьте тело запроса. Для скачивания выберите индекс результата, возвращённый исходной задачей.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Невозможно определить цену выбранной конфигурации видео.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Выберите поддерживаемую конфигурацию видео и заполните обязательные параметры перед отправкой исправленного запроса.",
                "type": "price_unavailable"
              },
              {
                "condition": "Недопустимы входное видео или исходная задача продолжения.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Используйте корректные входные HTTPS-ссылки. Для продолжения используйте исходный публичный ID вашего готового видео и тот же ключ API.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Доступный баланс или лимиты не позволяют зарезервировать средства.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Перед отправкой нового запроса проверьте доступный баланс и лимиты.",
                "type": "billing_error"
              },
              {
                "condition": "Проверка видео, хранилище или доступ к сервису временно недоступны.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Дождитесь доступности сервиса. Если у вас уже есть ID видео, проверяйте ту исходную задачу вместо создания новой генерации.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Нужно проверить результат исходного видео и начисление.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Сохраните возвращённый ID видео и проверьте эту задачу. Не отправляйте заменяющий запрос на генерацию, пока идёт проверка.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Скачивание существующего видео временно недоступно.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Проверьте ту же видеозадачу позже и скачайте её существующий результат. Новая генерация создаёт отдельную операцию.",
                "type": "server_error"
              },
              {
                "condition": "Содержимое видео не опубликовано.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Проверьте исходный статус задачи. Скачайте результат после completed; при failed следуйте уведомлению о проверке начисления.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + исходный id + X-Should-Retry:false; никогда не отправляйте исходный запрос повторно"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Передайте текстовый запрос и поддерживаемую длительность в целых секундах. Используйте точный размер из списка либо разрешение и соотношение сторон, дающие указанные в списке размеры.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Текстовый запрос."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images — массив объектов с type=image_url, image_url, содержащим url, и frame_type. Используйте публичный HTTPS URL изображения; first_frame и last_frame могут встречаться по одному разу. Используйте перечисленный размер результата или совместимые размеры. Не добавляйте видеореференсы.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Текстовый запрос и изображение кадра."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references — массив. Каждый объект содержит type=image_url или type=audio_url и соответствующий объект URL с url. Используйте публичные HTTPS-ссылки. Не передавайте frame_images, чтобы выбрать режим референсов. Стоимость видеореференсов определить невозможно.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "Текстовый запрос и референсные изображения или аудио."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "reference_to_video"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Позиция этого видео в списке результатов, начиная с нуля.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "Подписанный HTTPS URL для скачивания этого готового видео.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "Хэш SHA-256 исходных байтов видео; null, если недоступен.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Размер исходного видеофайла в байтах; null, если недоступен.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Измеренная длительность видео в миллисекундах; null, если недоступна.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Ширина видео в пикселях; null, если недоступна.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Высота видео в пикселях; null, если недоступна.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Идентификатор видеокодека; null, если не записан.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Есть ли у видео аудиодорожка; null, если не измерено.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Идентификатор аудиокодека; null, если идентификатор не записан.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "подписанные ссылки на содержимое, принадлежащее Ailoot",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "bytedance/seedance-2.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "bytedance/seedance-2.0"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p",
                  "1080p",
                  "4K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "1:1",
                  "3:4",
                  "9:16",
                  "4:3",
                  "16:9",
                  "21:9",
                  "9:21"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "При 480p и 720p отсутствие generate_audio выбирает цену с аудио, а false — цену без аудио. При 1080p и 4K цена разрешения действует при обоих значениях. Проверьте has_audio в результате, чтобы узнать о возвращённой аудиодорожке.",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Эти ключи применяются к каждому объекту кадра. Не передавайте frame_images для запроса только с текстом.",
                "content": "Массив объектов кадров. Каждый содержит type=image_url, image_url с url и frame_type=first_frame или last_frame. Каждая роль встречается не более одного раза. Используйте публичные HTTPS-ссылки.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "Не передавайте frame_images, чтобы использовать режим референсов. Используйте публичные HTTPS URL.",
                "content": "Массив объектов референсных изображений или аудио. Укажите image_url или audio_url в type и передайте соответствующий объект URL, содержащий url. Стоимость видеореференсов по-прежнему невозможно определить.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480x480",
                  "480x640",
                  "480x854",
                  "640x480",
                  "854x480",
                  "1120x480",
                  "720x720",
                  "720x960",
                  "720x1280",
                  "720x1680",
                  "960x720",
                  "1280x720",
                  "1680x720",
                  "1080x1080",
                  "1080x1440",
                  "1080x1920",
                  "1440x1080",
                  "1920x1080",
                  "2520x1080",
                  "3840x2160",
                  "2160x3840",
                  "2160x2160",
                  "2880x2160",
                  "2160x2880",
                  "5040x2160"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "model": {
                  "const": "bytedance/seedance-2.0"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Request geometry is required for the pre-generation estimate and reserve. Returned geometry and track time describe the generated output; final charge follows the actual billed configuration.",
                "Video references with *_with_video_input quantity are rejected; image/audio references only where model reference types admit them."
              ]
            },
            "unsupported": [
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "seed",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "reference_to_video"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "входные данные: with_video_input; разрешение: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Тариф за видеотокен — основной ориентир цены. Посекундные оценки в заголовке служат отдельными ориентирами, а не дополнительным списанием.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Цена видеотокена",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Эта оценка не является дополнительным списанием или фиксированным тарифом для завершённой генерации.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Ориентировочная стоимость генерации",
            "units": [
              {
                "amount": "0.3024",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.3024",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"model\":\"bytedance/seedance-2.0\",\"prompt\":\"A serene mountain landscape at sunset\",\"duration\":4,\"resolution\":\"480p\",\"size\":\"480x480\",\"generate_audio\":false}', encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.3024",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.3024",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "bytedance/seedance-2.0",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0154000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000154",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0094000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000094",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0048000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000048",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.0086000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000086",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_without_audio",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.3024",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.3024",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "bytedance/seedance-2.0",
        "request_model_id": "bytedance/seedance-2.0",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance: Seedance 2.0",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.3024,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.3024,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": false,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": false,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "480p/720p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000014",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": false,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": false,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "480p/720p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": true,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": true,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "480p/720p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000086",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": true,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": true,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "480p/720p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": false,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": false,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "1080p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000154",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": false,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": false,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "1080p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": true,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": true,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "1080p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000094",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": true,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": true,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "1080p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 3,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": false,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": false,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "4K"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000008",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": false,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": false,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "4K"
            },
            "key": "base",
            "label": "base",
            "profile_index": 4,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": true,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": true,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "4K"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000048",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": true,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": true,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "4K"
            },
            "key": "base",
            "label": "base",
            "profile_index": 5,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "video token",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.000014",
            "key": "video_tokens",
            "label": "video token",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=4k",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.000008",
            "key": "video_tokens_4k",
            "label": "video token",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0154000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=1080p",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000154",
            "key": "video_tokens_1080p",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000154",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "audio=false",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.000014",
            "key": "video_tokens_without_audio",
            "label": "video token",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0086000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "video_reference_present Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000086",
            "key": "video_tokens_with_video_input",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000086",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0048000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=4k · video_reference_present Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000048",
            "key": "video_tokens_4k_with_video_input",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000048",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0094000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=1080p · video_reference_present Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000094",
            "key": "video_tokens_1080p_with_video_input",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000094",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          }
        ]
      }
    ],
    "public_id": "bytedance/seedance-2.0",
    "short": "ByteDance Seedance 2.0 сочетает встроенную генерацию аудио и видео с референсами изображений, видео и звука. Создавайте новые сцены, редактируйте материал или расширяйте последовательность; стандартная версия включает документированный вывод 1080p и 10-битный 4K."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "ByteDance Seedance 2.0 сочетает встроенную генерацию аудио и видео с референсами изображений, видео и звука. Создавайте новые сцены, редактируйте материал или расширяйте последовательность; стандартная версия включает документированный вывод 1080p и 10-битный 4K.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_exact_canonical_sha256": "8f1ed70f92dfb18e0fba39445e583958be0366b79d604f0dfd36351677e3b810",
    "raw_model_js_projection_sha256": "91183839dc8343115f701d4c4a1aca515bf56ccc4900a3d503cb6e1d9612d2fe",
    "raw_model_json_sha256": "8f1ed70f92dfb18e0fba39445e583958be0366b79d604f0dfd36351677e3b810",
    "renderer_sha256": "aa692ffec412026bdeaf316df24a58e6c5083045e5246f6033f898d132afa5ff"
  },
  "sourceRevision": "b850a4ed9bd07292bc75ac09c9963c3d4689deb42207fdf856401af12945ea8e"
}
