При вызове Sora 2 API для генерации видео, если в параметре seconds передано неподдерживаемое значение, система мгновенно вернет ошибку invalid_value. В этой статье мы подробно разберем первопричину ошибки Invalid value: '10'. Supported values are: '4', '8', and '12' и предложим готовые варианты решения.
Главное: после прочтения статьи вы поймете разницу в параметрах длительности для стандартной и Pro-версий Sora 2, научитесь правильно настраивать параметр seconds и избежите отклонения запросов на генерацию.

Анализ причин ошибки параметра seconds в Sora 2 API
Когда вы обращаетесь к Sora 2 API, вы можете столкнуться со следующим сообщением об ошибке:
{
"message": "Invalid value: '10'. Supported values are: '4', '8', and '12'.",
"data": {
"error": {
"code": "invalid_value",
"message": "Invalid value: '10'. Supported values are: '4', '8', and '12'.",
"param": "seconds",
"type": "invalid_request_error"
}
}
}
Это означает, что переданное вами значение параметра seconds (в данном примере — 10) не входит в диапазон допустимых для API значений.
Механизм строгой валидации длительности в Sora 2 API
Sora 2 API использует валидацию по фиксированным значениям для длительности видео. Произвольное количество секунд задать нельзя:
| Поле ошибки | Значение | Описание |
|---|---|---|
| code | invalid_value |
Недопустимое значение параметра |
| param | seconds |
Имя параметра, вызвавшего ошибку |
| type | invalid_request_error |
Тип ошибки: ошибка в параметрах запроса |
| message | Список поддерживаемых значений | Подсказка, какие значения являются легитимными |
Почему Sora 2 API ограничивает длительность фиксированными значениями?
В превью-версии Sora 2 OpenAI намеренно ограничила выбор длительности видео по нескольким причинам:
- Оптимизация вычислительных ресурсов: фиксированная длительность упрощает предварительное распределение ресурсов GPU.
- Стабильность качества: предустановленные интервалы оптимизированы для обеспечения наилучшего результата генерации.
- Контроль затрат: ограничения помогают пользователям избежать случайных высоких расходов из-за слишком длинных роликов.
- Особенности модели: Sora 2 обеспечивает лучшую согласованность кадров именно на этих временных отрезках.
🎯 Важное примечание: список поддерживаемых значений длительности для стандартной версии Sora 2 и версии Pro полностью отличается. Необходимо выбирать значение в зависимости от используемой модели.

Сравнение параметров длительности: Sora 2 Standard vs. Pro
Это самая частая причина ошибок: путаница в параметрах стандартной и Pro-версий.
Поддерживаемая длительность для Sora 2 Standard (sora-2)
| Значение | Описание | Для чего подходит |
|---|---|---|
| 4 | 4-секундное видео (по умолчанию) | Короткие циклы, замена GIF, тесты |
| 8 | 8-секундное видео | Демонстрация продуктов, соцсети |
| 12 | 12-секундное видео | Полноценные сцены, рекламные вставки |
Поддерживаемая длительность для Sora 2 Pro (sora-2-pro)
| Значение | Описание | Для чего подходит |
|---|---|---|
| 10 | 10-секундное видео | Стандартный коммерческий контент |
| 15 | 15-секундное видео | Реклама в социальных сетях |
| 25 | 25-секундное видео (новинка) | Полноценное повествование, история бренда |
Полная таблица сравнения параметров
| Параметр | sora-2 (Standard) | sora-2-pro (Pro) |
|---|---|---|
| Длительность | 4, 8, 12 сек | 10, 15, 25 сек |
| По умолчанию | 4 сек | 10 сек |
| Макс. разрешение | 1280×720 (720p) | 1792×1024 (1080p) |
| Поддержка аудио | Нет | Синхронное аудио |
| Где доступно | APIYI apiyi.com, оригинал | APIYI apiyi.com, оригинал |
💡 Совет по выбору: Если вам нужно 10-секундное видео, используйте модель
sora-2-pro, а неsora-2. Мы рекомендуем тестировать различные комбинации моделей и длительности на платформе APIYI apiyi.com, чтобы быстро найти оптимальную конфигурацию под ваши задачи.

3 способа исправить ошибку параметра seconds в Sora 2 API
Способ 1: Использование корректных значений seconds (Standard-версия)
Если вы используете стандартную модель sora-2, вы должны указывать только 4, 8 или 12 секунд:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # 使用 APIYI 统一接口
)
# ✅ 正确:使用标准版支持的时长值
response = client.videos.create(
model="sora-2", # 标准版模型
prompt="A cat playing with a ball in a sunny garden",
seconds=8, # 只能是 4, 8, 或 12
size="1280x720"
)
print(f"视频生成任务: {response.id}")
🚀 Быстрый старт: Рекомендуем использовать платформу APIYI (apiyi.com) для быстрого тестирования Sora 2 API. Платформа предоставляет готовые интерфейсы и поддерживает переключение между стандартной и Pro-версиями моделей.
Способ 2: Переход на Pro-версию для более длинных видео
Если вам нужны видео длительностью 10, 15 или 25 секунд, необходимо переключиться на модель sora-2-pro:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # 使用 APIYI 统一接口
)
# ✅ 正确:使用 Pro 版获得更长时长
response = client.videos.create(
model="sora-2-pro", # Pro 版模型
prompt="A cinematic sunrise over mountains with birds flying",
seconds=15, # Pro 版支持 10, 15, 25
size="1792x1024" # Pro 版支持更高分辨率
)
print(f"视频生成任务: {response.id}")
Способ 3: Реализация инструмента для умной адаптации длительности
Ниже представлен вспомогательный инструмент промышленного уровня для адаптации параметров. Он автоматически сопоставляет выбранную модель с допустимой длительностью:
import openai
from typing import Literal, Optional
class SoraVideoGenerator:
"""Sora 2 API 视频生成工具,自动适配时长参数"""
# 模型支持的时长配置
MODEL_DURATIONS = {
"sora-2": {
"supported": [4, 8, 12],
"default": 4,
"max_resolution": "1280x720"
},
"sora-2-pro": {
"supported": [10, 15, 25],
"default": 10,
"max_resolution": "1792x1024"
}
}
def __init__(self, api_key: str, base_url: str = "https://api.apiyi.com/v1"):
self.client = openai.OpenAI(api_key=api_key, base_url=base_url)
def get_valid_duration(self, model: str, desired_seconds: int) -> int:
"""获取最接近期望值的有效时长"""
if model not in self.MODEL_DURATIONS:
raise ValueError(f"不支持的模型: {model}")
supported = self.MODEL_DURATIONS[model]["supported"]
# 如果期望值有效,直接返回
if desired_seconds in supported:
return desired_seconds
# 否则返回最接近的有效值
closest = min(supported, key=lambda x: abs(x - desired_seconds))
print(f"⚠️ 时长 {desired_seconds}s 不支持,已自动调整为 {closest}s")
return closest
def suggest_model(self, desired_seconds: int) -> str:
"""根据期望时长推荐合适的模型"""
if desired_seconds <= 12:
return "sora-2"
else:
return "sora-2-pro"
def create_video(
self,
prompt: str,
seconds: int,
model: Optional[str] = None,
size: Optional[str] = None,
auto_adjust: bool = True
):
"""
创建视频,支持自动调整参数
Args:
prompt: 视频描述
seconds: 期望时长
model: 模型名称,不指定则自动选择
size: 分辨率
auto_adjust: 是否自动调整不支持的参数
"""
# 自动选择模型
if model is None:
model = self.suggest_model(seconds)
print(f"📌 自动选择模型: {model}")
# 验证并调整时长
if auto_adjust:
seconds = self.get_valid_duration(model, seconds)
elif seconds not in self.MODEL_DURATIONS[model]["supported"]:
supported = self.MODEL_DURATIONS[model]["supported"]
raise ValueError(
f"模型 {model} 不支持 {seconds}s,"
f"支持的值: {supported}"
)
# 设置默认分辨率
if size is None:
size = self.MODEL_DURATIONS[model]["max_resolution"]
# 调用 API
response = self.client.videos.create(
model=model,
prompt=prompt,
seconds=seconds,
size=size
)
return {
"task_id": response.id,
"model": model,
"seconds": seconds,
"size": size
}
# 使用示例
generator = SoraVideoGenerator(api_key="YOUR_API_KEY")
# 示例1:自动选择模型和调整时长
result = generator.create_video(
prompt="Ocean waves crashing on a beach at sunset",
seconds=10 # 自动选择 sora-2-pro
)
print(f"生成结果: {result}")
# 示例2:指定模型,自动调整时长
result = generator.create_video(
prompt="A coffee cup with steam rising",
seconds=10, # 10s 对 sora-2 无效
model="sora-2", # 指定标准版
auto_adjust=True # 自动调整为 12s 或 8s
)
print(f"生成结果: {result}")
Посмотреть полный код (с поддержкой асинхронности и механизмом повторов)
import openai
import asyncio
from typing import Literal, Optional, Dict, Any
from dataclasses import dataclass
from enum import Enum
class SoraModel(Enum):
"""Sora 模型枚举"""
STANDARD = "sora-2"
PRO = "sora-2-pro"
@dataclass
class ModelConfig:
"""模型配置"""
supported_durations: list[int]
default_duration: int
max_resolution: str
has_audio: bool
class SoraVideoGenerator:
"""
Sora 2 API 视频生成工具
功能:
- 自动适配时长参数
- 模型自动选择
- 参数校验
- 重试机制
"""
MODELS: Dict[str, ModelConfig] = {
"sora-2": ModelConfig(
supported_durations=[4, 8, 12],
default_duration=4,
max_resolution="1280x720",
has_audio=False
),
"sora-2-pro": ModelConfig(
supported_durations=[10, 15, 25],
default_duration=10,
max_resolution="1792x1024",
has_audio=True
)
}
RESOLUTIONS = {
"720p_landscape": "1280x720",
"720p_portrait": "720x1280",
"1080p_landscape": "1792x1024",
"1080p_portrait": "1024x1792",
}
def __init__(
self,
api_key: str,
base_url: str = "https://api.apiyi.com/v1",
max_retries: int = 3
):
self.client = openai.OpenAI(api_key=api_key, base_url=base_url)
self.max_retries = max_retries
def validate_model(self, model: str) -> ModelConfig:
"""验证模型并返回配置"""
if model not in self.MODELS:
available = list(self.MODELS.keys())
raise ValueError(f"不支持的模型: {model},可用模型: {available}")
return self.MODELS[model]
def get_valid_duration(self, model: str, desired: int) -> int:
"""获取最接近期望值的有效时长"""
config = self.validate_model(model)
supported = config.supported_durations
if desired in supported:
return desired
closest = min(supported, key=lambda x: abs(x - desired))
return closest
def suggest_model_for_duration(self, seconds: int) -> str:
"""根据期望时长推荐模型"""
# 检查标准版是否支持
if seconds in self.MODELS["sora-2"].supported_durations:
return "sora-2"
# 检查 Pro 版是否支持
if seconds in self.MODELS["sora-2-pro"].supported_durations:
return "sora-2-pro"
# 默认根据时长选择
return "sora-2" if seconds <= 12 else "sora-2-pro"
def create_video(
self,
prompt: str,
seconds: int,
model: Optional[str] = None,
size: Optional[str] = None,
auto_adjust: bool = True
) -> Dict[str, Any]:
"""
创建视频
Args:
prompt: 视频描述提示词
seconds: 期望视频时长(秒)
model: 模型名称,None 则自动选择
size: 分辨率,None 则使用模型默认值
auto_adjust: 是否自动调整不支持的参数
Returns:
包含任务信息的字典
Raises:
ValueError: 参数无效且 auto_adjust=False
"""
# 自动选择模型
if model is None:
model = self.suggest_model_for_duration(seconds)
config = self.validate_model(model)
# 处理时长参数
original_seconds = seconds
if seconds not in config.supported_durations:
if auto_adjust:
seconds = self.get_valid_duration(model, seconds)
print(f"⚠️ 时长已调整: {original_seconds}s → {seconds}s")
else:
raise ValueError(
f"模型 {model} 不支持 {seconds}s,"
f"支持的值: {config.supported_durations}"
)
# 设置分辨率
if size is None:
size = config.max_resolution
# 调用 API(带重试)
last_error = None
for attempt in range(self.max_retries):
try:
response = self.client.videos.create(
model=model,
prompt=prompt,
seconds=seconds,
size=size
)
return {
"success": True,
"task_id": response.id,
"model": model,
"seconds": seconds,
"size": size,
"has_audio": config.has_audio,
"adjusted": original_seconds != seconds
}
except Exception as e:
last_error = e
if attempt < self.max_retries - 1:
wait_time = 2 ** attempt
print(f"⏳ 请求失败,{wait_time}s 后重试...")
import time
time.sleep(wait_time)
return {
"success": False,
"error": str(last_error),
"model": model,
"seconds": seconds
}
@staticmethod
def get_duration_info() -> str:
"""获取时长参数帮助信息"""
info = ["Sora 2 API 时长参数说明:", ""]
for model, config in SoraVideoGenerator.MODELS.items():
durations = ", ".join(map(str, config.supported_durations))
info.append(f" {model}: {durations} 秒")
info.append(f" 默认: {config.default_duration}s")
info.append(f" 最大分辨率: {config.max_resolution}")
info.append(f" 音频: {'支持' if config.has_audio else '不支持'}")
info.append("")
return "\n".join(info)
# 使用示例
if __name__ == "__main__":
# 打印帮助信息
print(SoraVideoGenerator.get_duration_info())
# 初始化生成器
generator = SoraVideoGenerator(api_key="YOUR_API_KEY")
# 示例1:让工具自动选择最佳配置
result = generator.create_video(
prompt="A serene lake reflecting autumn trees",
seconds=10
)
print(f"结果: {result}")
# 示例2:强制使用特定模型
result = generator.create_video(
prompt="Quick product showcase",
seconds=5,
model="sora-2",
auto_adjust=True # 5s 会被调整为 4s
)
print(f"结果: {result}")
Лучшие практики использования параметров длительности в Sora 2 API
Выбор подходящей длительности в зависимости от сценария
| Сценарий использования | Рекомендуемая модель | Рекомендуемая длительность | Описание |
|---|---|---|---|
| Тестирование API | sora-2 | 4с | Быстрая проверка, экономия квот |
| Соцсети | sora-2 | 8с | Адаптация под Instagram/TikTok |
| Презентация продукта | sora-2 | 12с | Полная демонстрация характеристик продукта |
| Брендовая реклама | sora-2-pro | 15с | Стандартный рекламный хронометраж |
| Сторителлинг | sora-2-pro | 25с | Полноценная сюжетная линия |
Связь длительности и качества генерации
На основе официальных рекомендаций OpenAI и практического опыта:
| Длительность | Консистентность кадров | Плавность движений | Индекс рекомендации |
|---|---|---|---|
| 4с | ★★★★★ | ★★★★★ | Идеально для тестов |
| 8с | ★★★★☆ | ★★★★☆ | Оптимально на каждый день |
| 12с | ★★★★☆ | ★★★☆☆ | Требуется оптимизация промпта |
| 15с (Pro) | ★★★★☆ | ★★★★☆ | Рекомендуется для бизнеса |
| 25с (Pro) | ★★★☆☆ | ★★★☆☆ | Нужны детальные промпты |
💰 Оптимизация затрат: Для проектов с ограниченным бюджетом советуем сначала протестировать эффект промпта на 4-секундном ролике. Когда результат вас устроит, можно генерировать более длинную версию. Через платформу APIYI (apiyi.com) можно получить более выгодные цены на запросы.
Альтернативные варианты для длинных видео
Если вам нужно видео длиннее 25 секунд, можно использовать стратегию разделения на сегменты:
def create_long_video_segments(generator, prompt_segments, model="sora-2"):
"""
Создает схему сегментированной генерации для длинных видео
Args:
generator: Экземпляр SoraVideoGenerator
prompt_segments: Список промптов для каждого сегмента
model: Используемая модель
"""
results = []
config = generator.MODELS[model]
max_duration = max(config.supported_durations)
for i, segment_prompt in enumerate(prompt_segments):
print(f"Генерация фрагмента {i+1}/{len(prompt_segments)}...")
result = generator.create_video(
prompt=segment_prompt,
seconds=max_duration,
model=model
)
results.append(result)
return results
# Пример использования: генерация 36-секундного видео (3 фрагмента по 12 секунд)
prompt_segments = [
"Opening shot: A sunrise over a mountain range, golden light spreading",
"Middle shot: Birds taking flight from the trees, camera follows",
"Closing shot: The sun fully risen, peaceful valley below"
]
generator = SoraVideoGenerator(api_key="YOUR_API_KEY")
segments = create_long_video_segments(generator, prompt_segments)
# Далее используйте FFmpeg для склейки фрагментов
Часто задаваемые вопросы по ошибкам длительности в Sora 2 API
Q1: Почему при передаче seconds=10 возникает ошибка?
Это происходит потому, что вы используете стандартную модель sora-2, которая поддерживает только 4, 8 и 12 секунд. Если вам нужно именно 10-секундное видео, есть два пути:
- Сменить модель: Используйте
sora-2-pro, она поддерживает 10, 15 и 25 секунд. - Изменить длительность: Установите значение 8 или 12 секунд.
На платформе APIYI (apiyi.com) можно удобно переключаться между разными моделями для тестирования.
Q2: Почему значения длительности у sora-2 и sora-2-pro не пересекаются?
OpenAI намеренно разделила параметры длительности для двух версий:
- sora-2: 4, 8, 12 секунд (для коротких роликов).
- sora-2-pro: 10, 15, 25 секунд (для коммерческого контента).
Такой подход помогает пользователям четко выбирать модель под свои задачи и избегать путаницы. Начальная длительность версии Pro (10 сек) специально перекрывает популярные сценарии использования стандартной версии.
Q3: В каком формате передавать параметр длительности — строкой или числом?
Согласно спецификации OpenAI API, параметр seconds должен быть целым числом (integer):
# ✅ Правильно: используем целое число
seconds=8
# ❌ Неправильно: используем строку
seconds="8"
Хотя некоторые SDK выполняют автоматическое преобразование, во избежание проблем с совместимостью лучше всегда использовать целые числа.
Q4: Как избежать ошибок с параметром seconds?
Лучшая практика — проверять параметры перед вызовом API:
VALID_DURATIONS = {
"sora-2": [4, 8, 12],
"sora-2-pro": [10, 15, 25]
}
def validate_seconds(model, seconds):
valid = VALID_DURATIONS.get(model, [])
if seconds not in valid:
raise ValueError(f"Поддерживаемая длительность для {model}: {valid}")
return True
При работе через платформу APIYI (apiyi.com) все ограничения моделей подробно описаны в документации, что позволяет заранее изучить лимиты.
Q5: Появится ли в будущем поддержка произвольной длительности?
На данный момент OpenAI официально не анонсировала планы по введению произвольной длительности. Фиксированные значения в превью-версии Sora 2 — это расчетное ограничение, связанное с:
- Управлением вычислительными ресурсами.
- Гарантией качества генерации.
- Контролем затрат.
Рекомендуем следить за обновлениями в официальном блоге OpenAI.
Шпаргалка по параметру seconds для Sora 2 API
Для удобства поиска ниже приведена полная таблица параметров длительности:
| Модель | Поддерживаемая длительность | По умолчанию | Макс. разрешение | Аудио |
|---|---|---|---|---|
| sora-2 | 4, 8, 12 сек. | 4 сек. | 1280×720 | Нет |
| sora-2-pro | 10, 15, 25 сек. | 10 сек. | 1792×1024 | Есть |
Типичные ошибки и рекомендации по исправлению
| Некорректное значение seconds | Для sora-2 | Для sora-2-pro |
|---|---|---|
| 5 | Измените на 4 или 8 | Измените на 10 |
| 6 | Измените на 8 | Измените на 10 |
| 10 | Измените на 8 или 12 | ✅ Валидно |
| 15 | Измените на 12 | ✅ Валидно |
| 20 | Измените на 12 | Измените на 15 или 25 |
| 30 | Измените на 12 | Измените на 25 |
📌 Совет: Доступные платформы включают APIYI (apiyi.com), официальный OpenAI API и другие. На этапе разработки и тестирования рекомендуем использовать платформы с более выгодными ценами.
Итоги
Ошибки в параметре seconds в Sora 2 API — это частая проблема, с которой сталкиваются разработчики. Вот основные способы её решения:
- Различайте модели: sora-2 поддерживает 4/8/12 сек., а sora-2-pro — 10/15/25 сек.
- Подбирайте параметры: выбирайте правильное значение длительности в соответствии с используемой моделью.
- Валидация параметров: проверяйте корректность значений перед отправкой запроса.
- Автоматическая адаптация: используйте вспомогательные функции для автоматического сопоставления модели и допустимой длительности.
Рекомендуем быстро протестировать различные комбинации моделей и длительности через APIYI (apiyi.com), чтобы найти оптимальную конфигурацию для вашего проекта.
Автор: APIYI Team | Больше советов по разработке ИИ на apiyi.com
Справочные материалы:
- Документация OpenAI Sora API: Описание параметров генерации видео
- Ссылка:
platform.openai.com/docs/api-reference/videos
- Ссылка:
- Описание моделей OpenAI Sora 2: Спецификации и ограничения
- Ссылка:
platform.openai.com/docs/models/sora-2
- Ссылка:
- Руководство по кодам ошибок OpenAI: Обработка ошибок API
- Ссылка:
platform.openai.com/docs/guides/error-codes
- Ссылка:
