modelos

sora-2

Markdown · JSON

sora-2

Sora 2 crea vídeo con diálogos, efectos de sonido y audio de fondo sincronizados a partir de texto o de una imagen de referencia. El perfil estándar permite explorar ideas visuales y crear clips conceptuales, con flujos separados del productor para personajes no humanos reutilizables, continuaciones y ediciones de vídeo específicas.

Sobre el modelo

Esta descripción cubre las capacidades del modelo. Las entradas, salidas y opciones disponibles en Ailoot se indican a continuación para el método seleccionado.

Sora 2 es el modelo de generación de vídeo y audio de OpenAI para crear clips dinámicos a partir de la descripción escrita de una escena o de una imagen de referencia. Genera la secuencia visual junto con voces, efectos y sonido de fondo sincronizados. El perfil estándar de Sora 2 está orientado a la exploración visual, el desarrollo de conceptos, los prototipos y los primeros montajes. Sora 2 Pro es una edición separada orientada a una mayor fidelidad visual y a acabados de mayor resolución.

Describe un plano que pueda verse y oírse

La guía de prompts del fabricante organiza un brief útil en torno al encuadre, el sujeto, la acción, el escenario y la luz. Da a la escena un estilo visual coherente y describe después el movimiento en momentos claros. Un concepto original de producto podría mostrar un pequeño objeto mecánico que gira una vez sobre un banco de trabajo mientras la cámara se acerca lentamente, con luz suave de una ventana y un sutil sonido de motor. Indica en qué debe fijarse el espectador y cómo termina la acción.

Haz que el movimiento de cámara y la acción del sujeto de cada plano sean comprensibles. Una secuencia complicada puede dividirse en bloques de planos diferenciados, cada uno con su propio encuadre, acción e iluminación. Conserva los mismos detalles del sujeto y la misma paleta cuando varios clips deban formar una única secuencia. La guía destaca que los planos más cortos suelen seguir las instrucciones con mayor fiabilidad y que generar repetidamente con el mismo prompt produce tomas diferentes.

La presentación del modelo describe mejoras en el comportamiento físico y la continuidad entre planos, con estilos realistas, cinematográficos y de anime. Son capacidades previstas que deben dirigirse y comprobarse. Revisa el movimiento, el contacto entre objetos, las proporciones y la continuidad, en lugar de dar por hecho que un primer fotograma verosímil garantiza una secuencia coherente. Si una acción no resulta clara, simplifícala y dale un comienzo y un final visibles.

Dirige el diálogo y el sonido por separado

Especifica las frases habladas por separado de la descripción visual y etiqueta a los hablantes de forma coherente. Mantén el diálogo lo bastante breve para encajar en la acción y en la duración prevista del clip. Para una animación con dos personajes, alterna una pregunta y una respuesta breves en lugar de pedir que un plano corto incluya un discurso largo. La guía advierte de que un diálogo complejo y extenso puede alterar el ritmo y la sincronización.

Describe el paisaje sonoro propio de la escena: el sonido de un pequeño movimiento, el ambiente de una habitación o el ritmo de un efecto del entorno. Explica qué sonido debe coincidir con la acción. Escucha las voces y los efectos resultantes junto con la imagen y comprueba la asignación de hablantes, las palabras y la sincronización. El audio sincronizado forma parte del clip generado, en lugar de constituir una respuesta de texto separada.

Tamaño, duración y un inicio guiado por una imagen

Los tamaños de salida documentados para el modelo estándar son 720×1280 en vertical y 1280×720 en horizontal. Los tamaños de mayor resolución del perfil Pro no deben atribuirse a Sora 2 estándar. El tamaño y la duración son ajustes explícitos de la petición; escribir otro tamaño o pedir una película más larga en el prompt no modifica esos ajustes. La referencia de creación enumera opciones de clips de 4, 8 y 12 segundos, por lo que conviene elegir un momento breve y definido al preparar un plano. El flujo ampliado del productor también documenta opciones de clips de 16 y 20 segundos.

Una imagen de referencia fija el punto de partida del primer fotograma, y el texto describe lo que sucede después. El productor admite referencias JPEG, PNG y WebP y exige que la imagen coincida con el tamaño de vídeo de destino. Prepara el sujeto, el entorno y la composición en esa imagen inicial, y pide después un movimiento específico. Se trata de una referencia para el fotograma de apertura, no de una garantía de que todos sus detalles se mantengan durante todo el clip.

Personajes no humanos reutilizables

El flujo ampliado del productor puede crear un recurso de personaje reutilizable a partir de un vídeo breve de referencia de un animal, una mascota de marca o un objeto. Sus indicaciones de preparación piden un clip MP4 de unos dos a cuatro segundos, de 720p a 1080p, en 16:9 o 9:16. Hacer coincidir la relación de aspecto del origen y de la salida ayuda a evitar una apariencia estirada. La generación puede utilizar hasta dos personajes como referencia.

Conserva el identificador del personaje y menciona su nombre en el prompt; pasar solo el identificador no completa la preparación que indica la guía. Los recursos de personaje pueden acompañar una generación guiada por una imagen, pero las extensiones de vídeo no los admiten. El productor bloquea por defecto la subida de personajes con apariencia humana y rechaza las imágenes de referencia que contienen rostros humanos en el flujo de API documentado. Las funciones de personajes personales de la aplicación Sora constituyen un flujo de producto separado.

Continúa o edita un clip terminado

Una extensión utiliza un vídeo de origen terminado y un prompt de continuación, tomando el clip completo como contexto para el movimiento, la dirección de cámara y la continuidad de la escena. La guía describe ampliaciones de hasta 20 segundos por extensión. La entrada documentada de una extensión consiste en el vídeo de origen y el texto; ese modo excluye referencias adicionales de personajes o imágenes. Describe cómo continúa la acción existente, en lugar de introducir una escena sin relación y sin transición.

La edición de vídeo se centra en un cambio claro sobre un clip existente. Una revisión concreta puede modificar el color de un objeto o la paleta de la escena conservando el resto del plano. La guía del productor recomienda un cambio bien definido cada vez y distingue la edición de un vídeo generado de la subida de metraje arbitrario, que tiene una condición de admisión separada. Conserva el original terminado e identifica la revisión exacta necesaria antes de hacer otra edición.

Trabajos de renderizado y vídeo terminado

El flujo de vídeo documentado del productor es asíncrono: un trabajo enviado puede quedar en cola o en curso antes de completarse o fallar. Un trabajo completado produce un vídeo MP4; las miniaturas y las hojas de sprites sirven para las vistas previas y la exploración. Mantén la identidad del trabajo asociada al prompt, las referencias y los recursos recibidos. Una respuesta inicial del trabajo no es el vídeo final reproducible.

El flujo de descarga ordinario describe una validez de una hora para la URL de descarga. El flujo ampliado por lotes prepara peticiones de renderizado JSON independientes con identificadores estables de elementos, referencias subidas y un resultado asociado a cada plano; sus recursos completados tienen un periodo de descarga separado de hasta 24 horas. Guarda el clip terminado cuanto antes y comprueba la imagen y el sonido reales antes de considerarlo una toma seleccionada.

Las restricciones de contenido documentadas de la API del productor exigen material adecuado para menores de 18 años y rechazan personajes o música protegidos por derechos de autor, así como la generación de personas reales. Prepara la escena y las referencias de acuerdo con ello. El resultado directo del modelo es vídeo con audio, no imágenes fijas generadas, una respuesta conversacional de herramienta ni una película de duración ilimitada. Conserva la identidad exacta del modelo estándar y el clip de origen aceptado al continuar un concepto visual.

Ailoot Ultra · Chat Completions POST /v1/chat/completions sora-2

sora-2

Otros /sora-2

Primeros pasos

Sora 2 crea vídeo con diálogos, efectos de sonido y audio de fondo sincronizados a partir de texto o de una imagen de referencia. El perfil estándar permite explorar ideas visuales y crear clips conceptuales, con flujos separados del productor para personajes no humanos reutilizables, continuaciones y ediciones de vídeo específicas.

Entradas aceptadas
Texto
Resultados
json · sse

Disponible en Ailoot · entradas y métodos

Ailoot Ultra · Chat Completions POST /v1/chat/completions
Tipos de entrada
text
Tipos de salida
json, sse
Formato de salida
JSON o text/event-stream
CampoTipoRequisitoValores y límitesPredeterminado
CampomodelTipostringRequisitoObligatorioValores y límites
sora-2
Predeterminado—
CampomessagesTipomessage[]RequisitoObligatorioValores y límitesPredeterminado—
Campomessages[].roleTipostringRequisitoObligatorioValores y límitesPredeterminado—
Campomessages[].contentTipostringRequisitoObligatorioValores y límitesPredeterminado—
CampostreamTipobooleanRequisitoOpcionalValores y límitesPredeterminadofalse
Combinaciones de materiales de entrada

owned_text_messages

Parámetros del método y ciclo de vida
ParámetroContrato
Parámetrocontent_typeContratoapplication/json
ParámetrorequiredContratomodel, messages
Parámetromaterial_typesContratotext
ParámetromessagesContratolista de mensajes con role y content como cadena literal
Parámetrofile_materialContratoEl material UTF-8 real puede insertarse como contenido de cadena literal; no se deduce ninguna referencia a archivo.
Parámetrooptional_controlsContratostream

Ciclo de vida: synchronous_json_or_sse

Planes

Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.

Modo rápido
Sin especificar Cuando se selecciona el modo rápido
Modo flex
Sin especificar Cuando se selecciona el modo flex
Esfuerzo máximo de razonamiento
Sin especificar Cuando el esfuerzo máximo de razonamiento utiliza el ajuste predeterminado (default)

Tarifas de Ailoot

Precios por configuración

ConfiguraciónTabla de tarifasCargo
ConfiguraciónTarifas base por tokenTabla de tarifasTarifa baseCargo
Entrada · Tokens de entrada $0 / 1K tokens
Salida · Tokens de salida $0.2 / 1K tokens
Entrada · Lectura de caché $0 / 1K tokens
Entrada · Escritura en caché $0 / 1K tokens
Entrada · Escritura en caché, 1 hora — / 1K tokens

Ailoot reserva un importe estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. Cómo funcionan la reserva y la liquidación →

Solicitudes de ejemplo

Ailoot Ultra · Chat Completions

curl · respuesta JSON completaPython SDK · respuesta JSON completacurl · conserva el flujo SSE
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

Recibir y guardar resultados

Ailoot Ultra · Chat Completions

JSON o text/event-stream

Conserva todos los resultados completados

Conserva todas las respuestas, archivos y partes de contenido completos recibidos.

Conserva todos los bytes del JSON o SSE, las cabeceras de respuesta, el uso devuelto y todos los campos de resultado proporcionados. No se establece una familia de resultados específica del modelo.

Si es necesario revisar la respuesta original

Conserva la respuesta original y la identidad del intento; no se deduce ninguna consulta periódica de un trabajo nuevo ni un reenvío.

Campos de respuesta
CampoTipoSignificado
Campocomplete response JSONTipoobjectSignificadoConserva todos los campos devueltos sin presuponer una familia de resultados específica del modelo.
CampoSSE data eventsTipostreamSignificadoConserva todos los eventos devueltos y los marcadores terminales, sin seleccionar únicamente los campos de texto.

Alias

Alias del modelo

Ailoot Ultra sora-2

Alias de rutas de métodos

Usa las rutas de método indicadas arriba.

ID de modelo relacionados

sora-2

Ailoot Ultra · Anthropic Messages POST /v1/messages sora-2

sora-2

Otros /sora-2

Primeros pasos

Sora 2 crea vídeo con diálogos, efectos de sonido y audio de fondo sincronizados a partir de texto o de una imagen de referencia. El perfil estándar permite explorar ideas visuales y crear clips conceptuales, con flujos separados del productor para personajes no humanos reutilizables, continuaciones y ediciones de vídeo específicas.

Entradas aceptadas
Texto
Resultados
json · sse

Disponible en Ailoot · entradas y métodos

Ailoot Ultra · Anthropic Messages POST /v1/messages
Tipos de entrada
text
Tipos de salida
json, sse
Formato de salida
JSON o SSE
CampoTipoRequisitoValores y límitesPredeterminado
CampomodelTipostringRequisitoObligatorioValores y límites
sora-2
Predeterminado—
CampomessagesTipomessage[]RequisitoObligatorioValores y límitesPredeterminado—
Campomessages[].roleTipostringRequisitoObligatorioValores y límites
user, assistant
Predeterminado—
Campomessages[].contentTipostringRequisitoObligatorioValores y límitesPredeterminado—
Campomax_tokensTipointegerRequisitoObligatorioValores y límitesPredeterminado—
CampostreamTipobooleanRequisitoOpcionalValores y límitesPredeterminadofalse
Combinaciones de materiales de entrada

Texto · Texto UTF-8

cadena messages[].content

Parámetros del método y ciclo de vida
ParámetroContrato
Parámetrocontent_typeContratoapplication/json
ParámetrorequiredContratomodel, messages, max_tokens
Parámetrooptional_controlsContratostream
Parámetromaterial_typesContratotext
Parámetrotext_file_materialContratoLee el documento real en UTF-8 y coloca su texto en el campo input indicado o en la cadena de contenido del mensaje.

Ciclo de vida: synchronous_or_streamed

Planes

Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.

Modo rápido
Sin especificar Cuando se selecciona el modo rápido
Modo flex
Sin especificar Cuando se selecciona el modo flex
Esfuerzo máximo de razonamiento
Sin especificar Cuando el esfuerzo máximo de razonamiento utiliza el ajuste predeterminado (default)

Tarifas de Ailoot

Precios por configuración

ConfiguraciónTabla de tarifasCargo
ConfiguraciónTarifas base por tokenTabla de tarifasTarifa baseCargo
Entrada · Tokens de entrada $0 / 1K tokens
Salida · Tokens de salida $0.2 / 1K tokens
Entrada · Lectura de caché $0 / 1K tokens
Entrada · Escritura en caché $0 / 1K tokens
Entrada · Escritura en caché, 1 hora — / 1K tokens

Ailoot reserva un importe estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. Cómo funcionan la reserva y la liquidación →

Solicitudes de ejemplo

Ailoot Ultra · Anthropic Messages

Cuerpo JSON mínimo completocurl · usa tu documento en UTF-8Python · guarda el resultado completo
{
  "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))

Recibir y guardar resultados

Ailoot Ultra · Anthropic Messages

JSON o SSE

Conserva todos los resultados completados

Conserva todas las respuestas, archivos y partes de contenido completos recibidos.

Conserva todos los bloques de contenido, las firmas de razonamiento y los ID reales de uso de herramientas. Ensambla todos los fragmentos incrementales de los bloques SSE; el primer bloque de texto no constituye la salida completa.

Si es necesario revisar la respuesta original

Conserva los ID de solicitud y respuesta y las cabeceras. No se proporciona una URL genérica para recuperar tareas de texto.

Campos de respuesta
CampoTipo
CampoidTipostring
CampomodelTipostring
Campocontent[]Tipotext|thinking|tool_use|other content block
Campostop_reasonTipostring|null
CampousageTipoobject
Errores y siguientes pasos
RespuestaCondiciónSiguiente paso
Respuesta400 · invalid_request_errorCondiciónCampos obligatorios, representación del material o valor del parámetro no válidosSiguiente pasoCorrige los campos indicados antes de una nueva solicitud de creación.

Alias

Alias del modelo

Ailoot Ultra sora-2

Alias de rutas de métodos

Usa las rutas de método indicadas arriba.

ID de modelo relacionados

sora-2

FAQ · sora-2
¿Qué entradas y resultados están disponibles?

POST /v1/chat/completions · sora-2: text → json, sse

POST /v1/messages · sora-2: text → json, sse

¿Qué campos utiliza la solicitud?

POST /v1/chat/completions · sora-2: model, messages, stream

POST /v1/messages · sora-2: model, messages, max_tokens, stream

Más detalles

Conecta Ailoot a Claude Code, OpenCode, Hermes o tu aplicación.

La empresa y su cartera de proyectos

La empresa y su cartera de proyectos: millones de clientes; ventas por miles de millones al mes.

Compra tokens con descuento.

Ahorro por suscripción para trabajo habitual. Códigos promocionales: hasta el 50% al comprar tokens.

Suscripción
Elige un plan con descuento para tus peticiones habituales.
Código de hasta el 50%
Introduce el código al comprar. El precio se recalcula según la promoción vigente.
Gasto en el historial
Modelo, tokens e importe quedan guardados por cada petición.

Elegir suscripción · Consultar precios de modelos

Conecta la API al producto que vendes.

SaaS, aplicaciones y bots bajo la oferta y el acuerdo de licencia Ailoot. Solicita una licencia de reventa para redistribuir el acceso.

Aplicación comercial
Integra generación de texto, imágenes, vídeo y sonido en funciones de pago de tu servicio.
Licencia para revendedores
Envía descripción del proyecto y esquema de acceso. Solicita condiciones escritas de uso y reventa.
Documentos en la web
La oferta, el acuerdo de licencia y la política de datos están disponibles antes de conectar.

Solicitar licencia de reventa · Oferta y acuerdo de licencia