Ao chamar a API do Sora 2 para gerar vídeos, se o parâmetro seconds receber um valor não suportado, um erro invalid_value será retornado imediatamente. Este artigo analisa detalhadamente a causa raiz do erro Invalid value: '10'. Supported values are: '4', '8', and '12' e fornece uma solução completa de correção.
Valor Principal: Ao ler este artigo, você dominará as diferenças nos parâmetros de duração entre as versões Padrão e Pro do Sora 2 e aprenderá a configurar corretamente o parâmetro seconds, evitando que suas solicitações de geração de vídeo sejam rejeitadas.

Análise da Causa do Erro no Parâmetro seconds da API Sora 2
Ao chamar a API do Sora 2, se você visualizar a seguinte mensagem de erro:
{
"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"
}
}
}
Isso significa que o valor passado para o parâmetro seconds (neste exemplo, 10) não está dentro do intervalo permitido pela API.
Mecanismo de Validação Estrita da Duração na API Sora 2
A API do Sora 2 utiliza uma validação de valor fixo para a duração do vídeo, não suportando qualquer número de segundos:
| Campo de erro | Significado | Descrição |
|---|---|---|
| code | invalid_value |
Valor do parâmetro inválido |
| param | seconds |
Nome do parâmetro com erro |
| type | invalid_request_error |
Tipo de erro de solicitação inválida |
| message | Lista de valores suportados | Indica quais valores são legítimos |
Por que a API do Sora 2 restringe durações fixas?
Na versão preview do Sora 2, a OpenAI restringiu intencionalmente os valores selecionáveis para a duração do vídeo:
- Otimização de Recursos Computacionais: Durações fixas facilitam a pré-alocação de recursos de GPU.
- Consistência de Qualidade: As durações predefinidas foram otimizadas para garantir resultados mais estáveis.
- Controle de Custos: Limitar o comprimento evita que os usuários gerem custos altos inesperadamente.
- Características do Modelo: O Sora 2 apresenta melhor consistência entre quadros em durações específicas.
🎯 Dica Importante: Os valores de duração suportados pelas versões Padrão e Pro do Sora 2 são completamente diferentes. Você deve escolher o valor correto com base no modelo utilizado.

Comparação de parâmetros de duração: Sora 2 Padrão vs. Versão Pro
Este é o motivo mais comum de erros: confundir os parâmetros das versões Padrão e Pro.
Durações suportadas no Sora 2 Padrão (sora-2)
| Valor de Duração | Descrição | Cenários Recomendados |
|---|---|---|
| 4 | Vídeo de 4 segundos (Padrão) | Loops curtos, substitutos de GIF, testes |
| 8 | Vídeo de 8 segundos | Demonstração de produtos, redes sociais |
| 12 | Vídeo de 12 segundos | Cenas completas, clipes publicitários |
Durações suportadas no Sora 2 Pro (sora-2-pro)
| Valor de Duração | Descrição | Cenários Recomendados |
|---|---|---|
| 10 | Vídeo de 10 segundos | Conteúdo comercial padrão |
| 15 | Vídeo de 15 segundos | Anúncios para redes sociais |
| 25 | Vídeo de 25 segundos (Novo) | Narrativas completas, brand storytelling |
Tabela comparativa completa de parâmetros
| Item de Comparação | sora-2 (Versão Padrão) | sora-2-pro (Versão Pro) |
|---|---|---|
| Duração Suportada | 4, 8, 12 segundos | 10, 15, 25 segundos |
| Duração Padrão | 4 segundos | 10 segundos |
| Resolução Máxima | 1280×720 (720p) | 1792×1024 (1080p) |
| Suporte a Áudio | Nenhum | Áudio sincronizado |
| Plataformas Disponíveis | APIYI apiyi.com, Oficial | APIYI apiyi.com, Oficial |
💡 Sugestão de escolha: Se você precisa de um vídeo de 10 segundos, deve usar o modelo
sora-2-proem vez dosora-2. Recomendamos testar diferentes combinações de modelos e durações através da plataforma APIYI (apiyi.com) para encontrar rapidamente a configuração que melhor atende às suas necessidades.

3 soluções para corrigir o erro 'seconds' na API do Sora 2
Solução 1: Use o valor correto de "seconds" (Versão Standard)
Se você estiver usando o modelo sora-2 na versão Standard, deve utilizar obrigatoriamente os valores 4, 8 ou 12:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # Usando a interface unificada da APIYI
)
# ✅ Correto: usando um valor de duração suportado pela versão Standard
response = client.videos.create(
model="sora-2", # Modelo versão Standard
prompt="A cat playing with a ball in a sunny garden",
seconds=8, # Só pode ser 4, 8 ou 12
size="1280x720"
)
print(f"Tarefa de geração de vídeo: {response.id}")
🚀 Início Rápido: Recomendamos usar a plataforma APIYI (apiyi.com) para testar rapidamente a API do Sora 2. A plataforma oferece uma interface pronta para uso e suporte para alternar entre os modelos Standard e Pro.
Solução 2: Mude para a versão Pro para durações maiores
Se você precisar de vídeos com 10, 15 ou 25 segundos, deve alternar para o modelo sora-2-pro:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # Usando a interface unificada da APIYI
)
# ✅ Correto: use a versão Pro para obter durações maiores
response = client.videos.create(
model="sora-2-pro", # Modelo versão Pro
prompt="A cinematic sunrise over mountains with birds flying",
seconds=15, # A versão Pro suporta 10, 15, 25
size="1792x1024" # A versão Pro suporta resoluções mais altas
)
print(f"Tarefa de geração de vídeo: {response.id}")
Solução 3: Implementando uma classe utilitária para adaptação inteligente de duração
Abaixo, apresento uma ferramenta de adaptação de parâmetros de duração de nível de produção, que lida automaticamente com a correspondência entre o modelo e o tempo de vídeo:
import openai
from typing import Literal, Optional
class SoraVideoGenerator:
"""Ferramenta de geração de vídeo da API Sora 2, que adapta automaticamente os parâmetros de duração"""
# Configurações de duração suportadas por cada modelo
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:
"""Obtém a duração válida mais próxima do valor desejado"""
if model not in self.MODEL_DURATIONS:
raise ValueError(f"Modelo não suportado: {model}")
supported = self.MODEL_DURATIONS[model]["supported"]
# Se o valor desejado for válido, retorna diretamente
if desired_seconds in supported:
return desired_seconds
# Caso contrário, retorna o valor válido mais próximo
closest = min(supported, key=lambda x: abs(x - desired_seconds))
print(f"⚠️ Duração de {desired_seconds}s não suportada, ajustada automaticamente para {closest}s")
return closest
def suggest_model(self, desired_seconds: int) -> str:
"""Recomenda o modelo adequado com base na duração desejada"""
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
):
"""
Cria o vídeo, com suporte para ajuste automático de parâmetros
Args:
prompt: comando de descrição do vídeo
seconds: duração desejada
model: nome do modelo; se não for especificado, será escolhido automaticamente
size: resolução
auto_adjust: se deve ajustar automaticamente parâmetros não suportados
"""
# Seleção automática de modelo
if model is None:
model = self.suggest_model(seconds)
print(f"📌 Modelo selecionado automaticamente: {model}")
# Valida e ajusta a duração
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"O modelo {model} não suporta {seconds}s, "
f"valores suportados: {supported}"
)
# Define a resolução padrão
if size is None:
size = self.MODEL_DURATIONS[model]["max_resolution"]
# Chama a 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
}
# Exemplo de uso
generator = SoraVideoGenerator(api_key="YOUR_API_KEY")
# Exemplo 1: Seleção automática de modelo e ajuste de duração
result = generator.create_video(
prompt="Ocean waves crashing on a beach at sunset",
seconds=10 # Selecionará automaticamente o sora-2-pro
)
print(f"Resultado da geração: {result}")
# Exemplo 2: Especificando o modelo e ajustando a duração automaticamente
result = generator.create_video(
prompt="A coffee cup with steam rising",
seconds=10, # 10s é inválido para o sora-2
model="sora-2", # Especifica a versão Standard
auto_adjust=True # Ajustará automaticamente para 12s ou 8s
)
print(f"Resultado da geração: {result}")
Ver código completo (incluindo suporte assíncrono e mecanismo de tentativa)
import openai
import asyncio
from typing import Literal, Optional, Dict, Any
from dataclasses import dataclass
from enum import Enum
class SoraModel(Enum):
"""Enumeração de modelos Sora"""
STANDARD = "sora-2"
PRO = "sora-2-pro"
@dataclass
class ModelConfig:
"""Configuração do modelo"""
supported_durations: list[int]
default_duration: int
max_resolution: str
has_audio: bool
class SoraVideoGenerator:
"""
Ferramenta de geração de vídeo da API Sora 2
Funcionalidades:
- Adaptação automática de parâmetros de duração
- Seleção automática de modelo
- Validação de parâmetros
- Mecanismo de tentativa (retry)
"""
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:
"""Valida o modelo e retorna a configuração"""
if model not in self.MODELS:
available = list(self.MODELS.keys())
raise ValueError(f"Modelo não suportado: {model}. Modelos disponíveis: {available}")
return self.MODELS[model]
def get_valid_duration(self, model: str, desired: int) -> int:
"""Obtém a duração válida mais próxima da desejada"""
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:
"""Recomenda o modelo com base na duração desejada"""
# Verifica se a versão Standard suporta
if seconds in self.MODELS["sora-2"].supported_durations:
return "sora-2"
# Verifica se a versão Pro suporta
if seconds in self.MODELS["sora-2-pro"].supported_durations:
return "sora-2-pro"
# Seleção padrão baseada no tempo
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]:
"""
Cria o vídeo
Args:
prompt: comando de descrição do vídeo
seconds: duração desejada do vídeo (em segundos)
model: nome do modelo; None para escolha automática
size: resolução; None para usar o padrão do modelo
auto_adjust: se deve ajustar automaticamente parâmetros não suportados
Returns:
Dicionário contendo as informações da tarefa
Raises:
ValueError: Se os parâmetros forem inválidos e auto_adjust=False
"""
# Seleção automática de modelo
if model is None:
model = self.suggest_model_for_duration(seconds)
config = self.validate_model(model)
# Trata os parâmetros de duração
original_seconds = seconds
if seconds not in config.supported_durations:
if auto_adjust:
seconds = self.get_valid_duration(model, seconds)
print(f"⚠️ Duração ajustada: {original_seconds}s → {seconds}s")
else:
raise ValueError(
f"O modelo {model} não suporta {seconds}s. "
f"Valores suportados: {config.supported_durations}"
)
# Define a resolução
if size is None:
size = config.max_resolution
# Chama a API (com tentativas de repetição)
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"⏳ Falha na requisição, tentando novamente em {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:
"""Obtém informações de ajuda sobre os parâmetros de duração"""
info = ["Explicação dos parâmetros de duração da API Sora 2:", ""]
for model, config in SoraVideoGenerator.MODELS.items():
durations = ", ".join(map(str, config.supported_durations))
info.append(f" {model}: {durations} segundos")
info.append(f" Padrão: {config.default_duration}s")
info.append(f" Resolução Máxima: {config.max_resolution}")
info.append(f" Áudio: {'Suportado' if config.has_audio else 'Não suportado'}")
info.append("")
return "\n".join(info)
# Exemplo de uso
if __name__ == "__main__":
# Imprime informações de ajuda
print(SoraVideoGenerator.get_duration_info())
# Inicializa o gerador
generator = SoraVideoGenerator(api_key="YOUR_API_KEY")
# Exemplo 1: Permite que a ferramenta escolha a melhor configuração
result = generator.create_video(
prompt="A serene lake reflecting autumn trees",
seconds=10
)
print(f"Resultado: {result}")
# Exemplo 2: Força o uso de um modelo específico
result = generator.create_video(
prompt="Quick product showcase",
seconds=5,
model="sora-2",
auto_adjust=True # 5s será ajustado para 4s
)
print(f"Resultado: {result}")
Melhores práticas para o parâmetro de duração da API Sora 2
Escolhendo a duração certa para cada cenário
| Cenário de uso | Modelo recomendado | Duração recomendada | Descrição |
|---|---|---|---|
| Teste de API | sora-2 | 4s | Validação rápida, economiza cota |
| Mídias sociais | sora-2 | 8s | Adaptado para Instagram/TikTok |
| Demonstração de produto | sora-2 | 12s | Exibição completa das características do produto |
| Publicidade de marca | sora-2-pro | 15s | Duração padrão de anúncio |
| Narrativa | sora-2-pro | 25s | Arco narrativo completo |
Relação entre duração e qualidade de geração
De acordo com as recomendações oficiais da OpenAI e experiência prática:
| Duração | Consistência entre frames | Coerência do movimento | Nível de recomendação |
|---|---|---|---|
| 4s | ★★★★★ | ★★★★★ | Preferido para testes |
| 8s | ★★★★☆ | ★★★★☆ | Recomendação diária |
| 12s | ★★★★☆ | ★★★☆☆ | Exige otimização do comando |
| 15s (Pro) | ★★★★☆ | ★★★★☆ | Recomendação comercial |
| 25s (Pro) | ★★★☆☆ | ★★★☆☆ | Exige comandos detalhados |
💰 Otimização de custos: Para projetos com orçamento limitado, sugerimos testar o efeito do comando primeiro com uma duração de 4 segundos e gerar versões mais longas somente após a confirmação do resultado. Através da plataforma APIYI (apiyi.com), você pode obter preços mais vantajosos para as chamadas.
Alternativas para vídeos longos
Se você precisar de vídeos com mais de 25 segundos, pode adotar a seguinte estratégia:
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 x 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 拼接片段
Perguntas frequentes sobre erros de duração na API Sora 2
Q1: Por que ocorre erro ao passar seconds=10?
Isso acontece porque você está usando o modelo padrão sora-2, que suporta apenas 4, 8 e 12 segundos. Se precisar de um vídeo de 10 segundos, você tem duas opções:
- Trocar o modelo: Use o
sora-2-pro, que suporta 10, 15 e 25 segundos. - Ajustar a duração: Mude para 8 ou 12 segundos.
Através da plataforma APIYI (apiyi.com), você pode alternar facilmente entre diferentes modelos para realizar seus testes.
Q2: Por que as durações do sora-2 e do sora-2-pro não se sobrepõem?
A OpenAI projetou intencionalmente os parâmetros de duração das duas versões para serem não sobrepostos:
- sora-2: 4, 8, 12 segundos (focado em vídeos curtos).
- sora-2-pro: 10, 15, 25 segundos (focado em conteúdo comercial).
Esse design permite que os usuários escolham o modelo de forma clara com base em suas necessidades, evitando confusões. O ponto de partida da versão Pro (10s) foi propositalmente definido para cobrir cenários acima do valor máximo da versão padrão (12s).
Q3: O parâmetro de duração deve ser uma string ou um número inteiro?
De acordo com as especificações da API da OpenAI, o parâmetro seconds deve ser do tipo inteiro (integer):
# ✅ Correto: usando inteiro
seconds=8
# ❌ Incorreto: usando string
seconds="8"
Embora alguns SDKs façam a conversão automática, recomenda-se sempre usar números inteiros para evitar problemas de compatibilidade.
Q4: Como evitar erros no parâmetro seconds?
A melhor prática é realizar uma validação de parâmetros antes da chamada:
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
Ao fazer chamadas através da plataforma APIYI (apiyi.com), a documentação contém a descrição completa dos parâmetros, permitindo que você conheça as limitações de cada modelo com antecedência.
Q5: Haverá suporte para durações personalizadas no futuro?
Até o momento, a OpenAI não anunciou planos para durações personalizadas. As durações fixas são uma limitação de design da versão preview do Sora 2, principalmente por motivos de:
- Gerenciamento de recursos computacionais.
- Garantia de qualidade da geração.
- Controle de custos.
Recomendamos acompanhar o blog oficial da OpenAI para obter as atualizações mais recentes.
Tabela de Referência Rápida do Parâmetro seconds na API do Sora 2
Para facilitar a sua consulta rápida, aqui está a tabela completa com os parâmetros de duração:
| Modelo | Duração Suportada | Valor Padrão | Resolução Máxima | Áudio |
|---|---|---|---|---|
| sora-2 | 4, 8, 12 segundos | 4 segundos | 1280×720 | Não |
| sora-2-pro | 10, 15, 25 segundos | 10 segundos | 1792×1024 | Sim |
Erros Comuns e Sugestões de Correção
Valor de seconds incorreto |
Usando sora-2 | Usando sora-2-pro |
|---|---|---|
| 5 | Mudar para 4 ou 8 | Mudar para 10 |
| 6 | Mudar para 8 | Mudar para 10 |
| 10 | Mudar para 8 ou 12 | ✅ Válido |
| 15 | Mudar para 12 | ✅ Válido |
| 20 | Mudar para 12 | Mudar para 15 ou 25 |
| 30 | Mudar para 12 | Mudar para 25 |
📌 Dica: As plataformas disponíveis incluem a APIYI (apiyi.com), API oficial da OpenAI, entre outras. Recomendamos usar plataformas com preços mais acessíveis durante a fase de desenvolvimento e testes.
Resumo
O erro no parâmetro seconds da API do Sora 2 é um problema comum que os desenvolvedores enfrentam. A lógica principal para resolver isso é:
- Distinguir os modelos: O
sora-2suporta 4/8/12 segundos, enquanto osora-2-prosuporta 10/15/25 segundos. - Corresponder os parâmetros: Escolha o valor de duração correto de acordo com o modelo que você está utilizando.
- Validação de parâmetros: Valide se o parâmetro é válido antes de realizar a chamada da API.
- Adaptação automática: Use classes utilitárias para lidar automaticamente com a correspondência entre modelo e duração.
Recomendamos testar rapidamente diferentes combinações de modelos e durações através da APIYI (apiyi.com) para encontrar a melhor configuração para o seu projeto.
Autor: APIYI Team | Para mais dicas de desenvolvimento de IA, visite apiyi.com
Referências:
- Documentação da API OpenAI Sora: Explicação dos parâmetros de geração de vídeo
- Link:
platform.openai.com/docs/api-reference/videos
- Link:
- Descrição do Modelo OpenAI Sora 2: Especificações e limitações do modelo
- Link:
platform.openai.com/docs/models/sora-2
- Link:
- Guia de Códigos de Erro da OpenAI: Tratamento de erros da API
- Link:
platform.openai.com/docs/guides/error-codes
- Link:
