sora-2
O Sora 2 cria vídeo com diálogos sincronizados, efeitos sonoros e áudio de fundo a partir de texto ou de uma imagem de referência. O perfil normal permite exploração visual e clips conceptuais, com fluxos separados do produtor para personagens não humanas reutilizáveis, continuação e edições de vídeo específicas.
- Ailoot Ultra · Chat Completions
POST /v1/chat/completionssora-2 - Ailoot Ultra · Anthropic Messages
POST /v1/messagessora-2
Sobre o modelo
Esta descrição apresenta as capacidades do modelo. As entradas, saídas e opções disponíveis no Ailoot para o método selecionado estão indicadas abaixo.
O Sora 2 é o modelo da OpenAI para geração de vídeo e áudio, destinado a clips dinâmicos criados a partir de uma descrição escrita da cena ou de uma imagem de referência. Gera a sequência visual juntamente com fala, efeitos e som de fundo sincronizados. O perfil normal do Sora 2 destina-se à exploração visual, ao desenvolvimento de conceitos, a protótipos e a montagens preliminares. O Sora 2 Pro é uma edição separada, orientada para maior fidelidade visual e acabamento em resolução superior.
Descreva um plano que se possa ver e ouvir
O guia de instruções do fabricante organiza um bom briefing em torno do enquadramento, sujeito, ação, cenário e luz. Dê à cena um estilo visual coerente e descreva o movimento em momentos claros. Um conceito original de produto pode mostrar um pequeno objeto mecânico a dar uma volta numa bancada enquanto a câmara se aproxima lentamente, com luz suave de uma janela e um som discreto de motor. Indique o que o espectador deve notar e como termina a ação.
Mantenha compreensíveis o movimento da câmara e a ação do sujeito em cada plano. Uma sequência complexa pode ser dividida em blocos de planos distintos, cada um com o seu enquadramento, ação e iluminação. Preserve os mesmos pormenores do sujeito e a paleta quando vários clips se destinam a formar uma sequência. O guia salienta que os planos mais curtos tendem a seguir as instruções de forma mais fiável e que a geração repetida do mesmo pedido produz diferentes tomadas.
O lançamento do modelo descreve melhorias no comportamento físico e na continuidade entre planos, incluindo estilos realistas, cinematográficos e anime. São capacidades pretendidas que devem ser dirigidas e inspecionadas. Reveja o movimento, o contacto entre objetos, as proporções e a continuidade, em vez de assumir que um primeiro fotograma plausível garante uma sequência coerente. Se uma ação for pouco clara, simplifique-a e dê-lhe um início e um fim visíveis.
Dirija o diálogo e o som separadamente
Especifique as falas separadamente da descrição visual e identifique os interlocutores de forma consistente. Mantenha o diálogo suficientemente curto para caber na ação e na duração pretendida do clip. Numa animação com duas personagens, alterne uma pergunta e uma resposta breves, em vez de pedir a um plano curto que comporte um discurso longo. O guia avisa que diálogos complexos e extensos podem prejudicar o ritmo e a sincronização.
Descreva o ambiente sonoro adequado à cena: o som de um pequeno movimento, a ambiência da sala ou o ritmo de um efeito ambiental. Explique que som deve coincidir com a ação. Ouça a fala e os efeitos resultantes juntamente com a imagem, verificando a atribuição das vozes, as palavras e os tempos. O áudio sincronizado faz parte do clip gerado, em vez de ser uma resposta de texto separada.
Dimensões, duração e abertura orientada por imagem
As dimensões de saída documentadas para o modelo normal são 720×1280 na vertical e 1280×720 na horizontal. As dimensões de maior resolução do perfil Pro não devem ser atribuídas ao Sora 2 normal. As dimensões e a duração são definições explícitas do pedido; escrever dimensões diferentes ou pedir um filme mais longo no texto não altera essas definições. A referência de criação enumera durações de clip de 4, 8 e 12 segundos, pelo que deve escolher um momento curto e definido ao preparar um plano. O fluxo alargado do produtor também documenta durações de 16 e 20 segundos.
Uma imagem de referência fixa o primeiro fotograma, e o texto descreve o que acontece a seguir. O produtor aceita referências JPEG, PNG e WebP e exige que a imagem corresponda às dimensões de destino do vídeo. Prepare o sujeito, o ambiente e a composição nessa imagem inicial e peça um movimento específico. É uma referência para o fotograma inicial, não uma garantia de que todos os pormenores se mantêm ao longo do clip.
Personagens não humanas reutilizáveis
O fluxo alargado do produtor permite criar um recurso de personagem reutilizável a partir de um pequeno vídeo de referência de um animal, mascote ou objeto. As instruções de preparação pedem um clip MP4 de cerca de dois a quatro segundos, entre 720p e 1080p, em 16:9 ou 9:16. Fazer coincidir as proporções da fonte e da saída ajuda a evitar um aspeto esticado. A geração pode referenciar até duas personagens.
Conserve o identificador da personagem e mencione o seu nome no pedido; passar apenas o identificador não constitui a preparação completa indicada pelo guia. Os recursos de personagem podem acompanhar uma geração orientada por imagem, mas as extensões de vídeo não os aceitam. Por predefinição, o produtor bloqueia o carregamento de personagens com semelhança humana e rejeita imagens de referência com rostos humanos no fluxo documentado da API. As funcionalidades de personagens pessoais da aplicação Sora constituem um fluxo de produto separado.
Continue ou edite um clip concluído
Uma extensão recebe um vídeo de origem concluído e um pedido de continuação, utilizando o clip completo como contexto para o movimento, a direção da câmara e a continuidade da cena. O guia descreve acréscimos de até 20 segundos por extensão. A entrada documentada para a extensão é o vídeo de origem e texto; referências adicionais de personagens ou imagens ficam excluídas desse modo. Descreva como prossegue a ação existente, em vez de introduzir uma cena sem relação nem transição.
A edição de vídeo visa uma alteração clara num clip existente. Uma revisão específica pode alterar a cor de um objeto ou a paleta da cena, conservando o resto do plano. O guia do produtor recomenda uma alteração bem definida de cada vez e distingue a edição de um vídeo gerado do carregamento de filmagens arbitrárias, sujeito a uma condição de elegibilidade separada. Conserve a fonte concluída e identifique a revisão exata necessária antes de fazer outra edição.
Tarefas de renderização e vídeo terminado
O fluxo de vídeo documentado pelo produtor é assíncrono: uma tarefa submetida pode ficar em fila ou em curso antes de ser concluída ou falhar. Uma tarefa concluída fornece um vídeo MP4; as miniaturas e as folhas de sprites permitem pré-visualizações e navegação. Mantenha a identidade da tarefa associada ao pedido, às referências e aos recursos devolvidos. Uma resposta inicial à tarefa não é o vídeo final reproduzível.
O fluxo normal de transferência descreve uma validade de uma hora para o URL de transferência. O fluxo alargado em lote prepara pedidos independentes de renderização em JSON com identificadores de item estáveis, referências carregadas e um resultado associado a cada plano; os seus recursos concluídos têm um período de transferência separado de até 24 horas. Guarde rapidamente o clip terminado e inspecione a imagem e o som reais antes de o considerar uma tomada selecionada.
As restrições de conteúdo documentadas para a API do produtor exigem material adequado a públicos com menos de 18 anos e rejeitam personagens ou música protegidas por direitos de autor e a geração de pessoas reais. Prepare a cena e as referências em conformidade. O resultado direto do modelo é vídeo com áudio, não imagens fixas geradas, uma resposta de ferramenta de conversação ou um filme ilimitado. Conserve a identidade exata do modelo normal e o clip de origem aceite ao continuar um conceito visual.
Ailoot Ultra · Chat Completions POST /v1/chat/completions sora-2
sora-2Introdução
O Sora 2 cria vídeo com diálogos sincronizados, efeitos sonoros e áudio de fundo a partir de texto ou de uma imagem de referência. O perfil normal permite exploração visual e clips conceptuais, com fluxos separados do produtor para personagens não humanas reutilizáveis, continuação e edições de vídeo específicas.
- Entradas aceites
- Texto
- Resultados
- json · sse
Disponível no Ailoot · entradas e métodos
Ailoot Ultra · Chat Completions POST /v1/chat/completions
- Entrada
text- Saída
json,sse- Formato de saída
- JSON ou text/event-stream
| Campo | Tipo | Requisito | Valores e limites | Predefinição |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObrigatório | Valores e limites sora-2 | Predefinição— |
Campomessages | Tipomessage[] | RequisitoObrigatório | Valores e limites | Predefinição— |
Campomessages[].role | Tipostring | RequisitoObrigatório | Valores e limites | Predefinição— |
Campomessages[].content | Tipostring | RequisitoObrigatório | Valores e limites | Predefinição— |
Campostream | Tipoboolean | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
Combinações de materiais de entrada
owned_text_messages
Parâmetros e ciclo de vida do método
| Parâmetro | Contrato |
|---|---|
Parâmetrocontent_type | Contratoapplication/json |
Parâmetrorequired | Contratomodel, messages |
Parâmetromaterial_types | Contratotext |
Parâmetromessages | Contratomatriz de mensagens com role e content como cadeia literal |
Parâmetrofile_material | ContratoO material UTF-8 real pode ser inserido como conteúdo de cadeia literal; não se deduz qualquer referência a ficheiro. |
Parâmetrooptional_controls | Contratostream |
Ciclo de vida: synchronous_json_or_sse
Tarifários
As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.
- Modo rápido
- Não especificado Quando o modo rápido está selecionado
- Modo flex
- Não especificado Quando o modo flex está selecionado
- Esforço máximo de raciocínio
- Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)
Tarifas Ailoot
Preços por configuração
| Configuração | Tabela de tarifas | Custo |
|---|---|---|
| ConfiguraçãoTarifas base dos tokens | Tabela de tarifasTarifa base | Custo Entrada · Tokens de entrada $0 / 1K tokens Saída · Tokens de saída $0.2 / 1K tokens Entrada · Leitura da cache $0 / 1K tokens Entrada · Escrita na cache $0 / 1K tokens Entrada · Escrita na cache, 1 hora — / 1K tokens |
O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →
Exemplos de pedidos
Ailoot Ultra · Chat Completions
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"sora-2","messages":[{"role":"user","content":"hello"}],"stream":false}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
from pathlib import Path
print(Path("result.json").read_text(encoding="utf-8"))
PY_RESULT
from openai import OpenAI
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="sora-2", messages=[{"role":"user","content":"hello"}], stream=False)
import json
from pathlib import Path
data = result.to_dict(mode="json")
Path("result.json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"sora-2","messages":[{"role":"user","content":"hello"}],"stream":true}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.sse
Receber e guardar os resultados
Ailoot Ultra · Chat Completions
JSON ou text/event-stream
Guardar todos os resultados concluídos
Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.
Conserve todos os bytes JSON ou SSE, os cabeçalhos da resposta, a utilização devolvida e todos os campos de resultado fornecidos. Não é afirmada qualquer família de resultados específica do modelo.
Se for necessário verificar a resposta original
Conserve a resposta original e a identidade da tentativa; não se deduz qualquer consulta periódica de nova tarefa ou reenvio.
Campos da resposta
| Campo | Tipo | Significado |
|---|---|---|
Campocomplete response JSON | Tipoobject | SignificadoConserve todos os campos devolvidos sem presumir uma família de resultados específica do modelo. |
CampoSSE data events | Tipostream | SignificadoConserve todos os eventos devolvidos e marcadores terminais sem selecionar apenas os campos de texto. |
Aliases
Aliases do modelo
Ailoot Ultra sora-2
Aliases dos caminhos dos métodos
Use os caminhos dos métodos indicados acima.
IDs de chamada relacionados
Ailoot Ultra · Anthropic Messages POST /v1/messages sora-2
sora-2Introdução
O Sora 2 cria vídeo com diálogos sincronizados, efeitos sonoros e áudio de fundo a partir de texto ou de uma imagem de referência. O perfil normal permite exploração visual e clips conceptuais, com fluxos separados do produtor para personagens não humanas reutilizáveis, continuação e edições de vídeo específicas.
- Entradas aceites
- Texto
- Resultados
- json · sse
Disponível no Ailoot · entradas e métodos
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Entrada
text- Saída
json,sse- Formato de saída
- JSON ou SSE
| Campo | Tipo | Requisito | Valores e limites | Predefinição |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObrigatório | Valores e limites sora-2 | Predefinição— |
Campomessages | Tipomessage[] | RequisitoObrigatório | Valores e limites | Predefinição— |
Campomessages[].role | Tipostring | RequisitoObrigatório | Valores e limites user, assistant | Predefinição— |
Campomessages[].content | Tipostring | RequisitoObrigatório | Valores e limites | Predefinição— |
Campomax_tokens | Tipointeger | RequisitoObrigatório | Valores e limites | Predefinição— |
Campostream | Tipoboolean | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
Combinações de materiais de entrada
Texto · Texto UTF-8
Cadeia de caracteres messages[].content
Parâmetros e ciclo de vida do método
| Parâmetro | Contrato |
|---|---|
Parâmetrocontent_type | Contratoapplication/json |
Parâmetrorequired | Contratomodel, messages, max_tokens |
Parâmetrooptional_controls | Contratostream |
Parâmetromaterial_types | Contratotext |
Parâmetrotext_file_material | ContratoLeia o documento UTF-8 real e coloque o texto na entrada indicada ou na cadeia de conteúdo da mensagem. |
Ciclo de vida: synchronous_or_streamed
Tarifários
As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.
- Modo rápido
- Não especificado Quando o modo rápido está selecionado
- Modo flex
- Não especificado Quando o modo flex está selecionado
- Esforço máximo de raciocínio
- Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)
Tarifas Ailoot
Preços por configuração
| Configuração | Tabela de tarifas | Custo |
|---|---|---|
| ConfiguraçãoTarifas base dos tokens | Tabela de tarifasTarifa base | Custo Entrada · Tokens de entrada $0 / 1K tokens Saída · Tokens de saída $0.2 / 1K tokens Entrada · Leitura da cache $0 / 1K tokens Entrada · Escrita na cache $0 / 1K tokens Entrada · Escrita na cache, 1 hora — / 1K tokens |
O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →
Exemplos de pedidos
Ailoot Ultra · Anthropic Messages
{
"model": "sora-2",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'sora-2', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
-H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'sora-2', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError
api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
with urlopen(request, timeout=120) as response:
raw = response.read()
Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
Path('result.json').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
Receber e guardar os resultados
Ailoot Ultra · Anthropic Messages
JSON ou SSE
Guardar todos os resultados concluídos
Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.
Conserve todos os blocos de conteúdo, as assinaturas de raciocínio e os ID reais de utilização de ferramentas. Junte todos os deltas de blocos SSE; o primeiro bloco de texto não é a saída completa.
Se for necessário verificar a resposta original
Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.
Campos da resposta
| Campo | Tipo |
|---|---|
Campoid | Tipostring |
Campomodel | Tipostring |
Campocontent[] | Tipotext|thinking|tool_use|other content block |
Campostop_reason | Tipostring|null |
Campousage | Tipoobject |
Erros e passos seguintes
| Resposta | Condição | Passo seguinte |
|---|---|---|
Resposta400 · invalid_request_error | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |
Aliases
Aliases do modelo
Ailoot Ultra sora-2
Aliases dos caminhos dos métodos
Use os caminhos dos métodos indicados acima.
IDs de chamada relacionados
FAQ · sora-2
- Que entradas e resultados estão disponíveis?
POST /v1/chat/completions·sora-2:text→json,ssePOST /v1/messages·sora-2:text→json,sse- Que campos utiliza o pedido?
POST /v1/chat/completions·sora-2:model,messages,streamPOST /v1/messages·sora-2:model,messages,max_tokens,stream