sora-2
Sora 2 crea video con dialoghi, effetti sonori e audio di sottofondo sincronizzati a partire da un testo o da un'immagine di riferimento. Il profilo standard supporta l'esplorazione visiva e le clip concettuali, con flussi separati del produttore per personaggi non umani riutilizzabili, continuazioni e modifiche video mirate.
- Ailoot Ultra · Chat Completions
POST /v1/chat/completionssora-2 - Ailoot Ultra · Anthropic Messages
POST /v1/messagessora-2
Informazioni sul modello
Questa descrizione illustra le funzionalità del modello. Gli input, gli output e le opzioni disponibili in Ailoot per il metodo selezionato sono elencati di seguito.
Sora 2 è il modello di generazione video e audio di OpenAI per clip dinamiche create da una descrizione scritta della scena o da un'immagine di riferimento. Genera la sequenza visiva insieme a parlato, effetti e suoni di sottofondo sincronizzati. Il profilo standard di Sora 2 è destinato all'esplorazione visiva, allo sviluppo di concept, ai prototipi e ai montaggi preliminari. Sora 2 Pro è un'edizione separata, orientata a una maggiore fedeltà visiva e alla rifinitura a risoluzione più alta.
Descrivi un'inquadratura da vedere e ascoltare
La guida ai prompt del produttore organizza un brief utile intorno a inquadratura, soggetto, azione, ambientazione e luce. Dai alla scena uno stile visivo coerente, poi descrivi il movimento in passaggi chiari. Un concept di prodotto originale potrebbe mostrare un piccolo oggetto meccanico che compie una rotazione su un banco da lavoro mentre la camera si avvicina lentamente, con una luce morbida dalla finestra e un tenue rumore di motore. Indica cosa deve notare lo spettatore e come termina l'azione.
Rendi comprensibili il movimento della camera e l'azione del soggetto in ogni inquadratura. Una sequenza complessa può essere divisa in blocchi di ripresa distinti, ciascuno con inquadratura, azione e illuminazione proprie. Mantieni gli stessi dettagli del soggetto e la stessa palette quando più clip devono formare una sequenza. La guida sottolinea che le riprese più brevi seguono generalmente le indicazioni in modo più affidabile e che generare più volte lo stesso prompt produce take differenti.
La presentazione del modello descrive un comportamento fisico migliorato e una maggiore continuità tra le inquadrature, anche negli stili realistico, cinematografico e anime. Sono capacità da dirigere e verificare. Controlla movimento, contatto tra gli oggetti, proporzioni e continuità, senza presumere che un primo fotogramma plausibile garantisca una sequenza coerente. Se un'azione è poco chiara, semplificala e assegnale un inizio e una fine visibili.
Dirigi separatamente dialoghi e suoni
Specifica le battute separatamente dalla descrizione visiva e identifica i parlanti in modo coerente. Mantieni i dialoghi abbastanza brevi da adattarsi all'azione e alla durata prevista della clip. Per un'animazione con due personaggi, alterna una domanda e una risposta brevi, invece di chiedere a una ripresa breve di ospitare un lungo discorso. La guida avverte che dialoghi complessi e lunghi possono compromettere ritmo e sincronizzazione.
Descrivi il paesaggio sonoro della scena: il suono di un piccolo movimento, l'ambiente acustico della stanza o il ritmo di un effetto ambientale. Spiega quale suono deve coincidere con l'azione. Ascolta il parlato e gli effetti ottenuti insieme alle immagini, verificando l'assegnazione delle voci, le parole e i tempi. L'audio sincronizzato fa parte della clip generata e non è una risposta testuale separata.
Dimensioni, durata e apertura guidata da un'immagine
Le dimensioni di output documentate per il modello standard sono 720×1280 in verticale e 1280×720 in orizzontale. Le risoluzioni superiori del profilo Pro non vanno attribuite a Sora 2 standard. Dimensioni e durata sono impostazioni esplicite della richiesta; scrivere dimensioni diverse o chiedere un film più lungo nel prompt non modifica tali impostazioni. Il riferimento per la creazione elenca durate di 4, 8 e 12 secondi: scegli quindi un'azione breve e definita quando prepari una ripresa. Il flusso esteso del produttore documenta anche durate di 16 e 20 secondi.
Un'immagine di riferimento fissa il primo fotogramma e il testo descrive ciò che accade dopo. Il produttore supporta riferimenti JPEG, PNG e WebP e richiede che l'immagine corrisponda alle dimensioni del video di destinazione. Prepara soggetto, ambiente e composizione nell'immagine iniziale, poi chiedi un movimento specifico. Si tratta di un riferimento per il fotogramma iniziale, non di una garanzia che ogni dettaglio resti identico per tutta la clip.
Personaggi non umani riutilizzabili
Il flusso esteso del produttore può creare una risorsa personaggio riutilizzabile da un breve video di riferimento di un animale, una mascotte o un oggetto. Le indicazioni di preparazione richiedono una clip MP4 di circa due-quattro secondi, da 720p a 1080p, in 16:9 o 9:16. Usare lo stesso rapporto d'aspetto per fonte e output aiuta a evitare un'immagine deformata. La generazione può fare riferimento a un massimo di due personaggi.
Conserva l'identificatore del personaggio e menzionane il nome nel prompt; passare il solo identificatore non completa la preparazione indicata dalla guida. Le risorse personaggio possono accompagnare una generazione guidata da immagine, ma le estensioni video non le accettano. Il produttore blocca per impostazione predefinita i caricamenti di personaggi con sembianze umane e rifiuta le immagini di riferimento contenenti volti umani nel flusso API documentato. Le funzioni dei personaggi personali dell'app Sora appartengono a un flusso di prodotto separato.
Continua o modifica una clip completata
Un'estensione riceve un video originale completato e un prompt di continuazione, usando l'intera clip come contesto per il movimento, la direzione della camera e la continuità della scena. La guida descrive aggiunte fino a 20 secondi per estensione. Gli input documentati per l'estensione sono il video originale e il testo; questa modalità esclude ulteriori riferimenti a personaggi o immagini. Descrivi come prosegue l'azione esistente, invece di introdurre una scena estranea senza transizione.
La modifica video mira a un cambiamento chiaro in una clip esistente. Una revisione mirata può cambiare il colore di un oggetto o la palette della scena, conservando il resto della ripresa. La guida del produttore raccomanda una modifica ben definita alla volta e distingue la modifica di un video generato dal caricamento di filmati arbitrari, soggetto a una condizione di ammissibilità separata. Conserva la fonte completata e identifica la revisione esatta necessaria prima di eseguire un'altra modifica.
Job di rendering e video completato
Il flusso video documentato dal produttore è asincrono: un job inviato può trovarsi in coda o in elaborazione prima di completarsi o fallire. Un job completato produce un video MP4; miniature e sprite sheet supportano l'anteprima e la consultazione. Mantieni l'identità del job associata al prompt, ai riferimenti e alle risorse restituite. La risposta iniziale al job non è il video finale riproducibile.
Il flusso di download ordinario indica una validità di un'ora per l'URL di download. Il flusso batch esteso prepara richieste di rendering JSON indipendenti con identificatori stabili degli elementi, riferimenti caricati e risultati ricondotti a ciascuna ripresa; le risorse completate hanno un periodo di download separato, fino a 24 ore. Salva tempestivamente la clip completata ed esamina le immagini e il suono effettivi prima di considerarla un take selezionato.
Le restrizioni sui contenuti dell'API documentate dal produttore richiedono materiale adatto a un pubblico di età inferiore ai 18 anni e rifiutano personaggi o musica protetti da copyright e la generazione di persone reali. Prepara la scena e i riferimenti di conseguenza. Il risultato diretto del modello è un video con audio, non immagini fisse generate, una risposta conversazionale di uno strumento o un film senza limiti di durata. Conserva l'identità esatta del modello standard e la clip originale accettata quando prosegui un concept visivo.
Ailoot Ultra · Chat Completions POST /v1/chat/completions sora-2
sora-2Introduzione
Sora 2 crea video con dialoghi, effetti sonori e audio di sottofondo sincronizzati a partire da un testo o da un'immagine di riferimento. Il profilo standard supporta l'esplorazione visiva e le clip concettuali, con flussi separati del produttore per personaggi non umani riutilizzabili, continuazioni e modifiche video mirate.
- Input accettati
- Testo
- Risultati
- json · sse
Disponibile in Ailoot · input e metodi
Ailoot Ultra · Chat Completions POST /v1/chat/completions
- Tipi di input
text- Tipi di output
json,sse- Formato di output
- JSON oppure text/event-stream
| Campo | Tipo | Requisito | Valori e limiti | Predefinito |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObbligatorio | Valori e limiti sora-2 | Predefinito— |
Campomessages | Tipomessage[] | RequisitoObbligatorio | Valori e limiti | Predefinito— |
Campomessages[].role | Tipostring | RequisitoObbligatorio | Valori e limiti | Predefinito— |
Campomessages[].content | Tipostring | RequisitoObbligatorio | Valori e limiti | Predefinito— |
Campostream | Tipoboolean | RequisitoFacoltativo | Valori e limiti | Predefinitofalse |
Combinazioni di materiali in input
owned_text_messages
Parametri e ciclo di vita del metodo
| Parametro | Contratto |
|---|---|
Parametrocontent_type | Contrattoapplication/json |
Parametrorequired | Contrattomodel, messages |
Parametromaterial_types | Contrattotext |
Parametromessages | Contrattoarray di messaggi con role e content come stringa letterale |
Parametrofile_material | ContrattoIl materiale UTF-8 reale può essere inserito come contenuto di una stringa letterale; non viene dedotto alcun riferimento a file. |
Parametrooptional_controls | Contrattostream |
Ciclo di vita: synchronous_json_or_sse
Tariffe
Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.
- Modalità rapida
- Non specificato Quando è selezionata la modalità rapida
- Modalità flex
- Non specificato Quando è selezionata la modalità flex
- Sforzo massimo di ragionamento
- Non specificato Quando lo sforzo massimo di ragionamento usa l'adeguamento predefinito (default)
Tariffe Ailoot
Prezzi per configurazione
| Configurazione | Listino delle tariffe | Costo |
|---|---|---|
| ConfigurazioneTariffe di base dei token | Listino delle tariffeTariffa base | Costo Input · Token in input $0 / 1K token Output · Token in output $0.2 / 1K token Input · Lettura dalla cache $0 / 1K token Input · Scrittura nella cache $0 / 1K token Input · Scrittura nella cache, 1 ora — / 1K token |
Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. Come funzionano la prenotazione e l’addebito finale →
Esempi di richieste
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
Ricevi e salva i risultati
Ailoot Ultra · Chat Completions
JSON oppure text/event-stream
Conserva tutti i risultati completati
Conserva ogni risposta, file e parte di contenuto restituiti per intero.
Conserva tutti i byte JSON o SSE, le intestazioni della risposta, i dati di utilizzo restituiti e tutti i campi del risultato forniti. Non viene dichiarata una famiglia di risultati specifica del modello.
Se occorre verificare la risposta originale
Conserva la risposta originale e l'identità del tentativo; non si deduce alcuna nuova interrogazione periodica di attività né un nuovo invio.
Campi della risposta
| Campo | Tipo | Significato |
|---|---|---|
Campocomplete response JSON | Tipoobject | SignificatoConserva ogni campo restituito senza presumere una famiglia di risultati specifica del modello. |
CampoSSE data events | Tipostream | SignificatoConserva ogni evento restituito e ogni marcatore finale senza selezionare soltanto i campi di testo. |
Alias
Alias del modello
Ailoot Ultra sora-2
Alias dei percorsi dei metodi
Usa i percorsi dei metodi indicati sopra.
ID di chiamata correlati
Ailoot Ultra · Anthropic Messages POST /v1/messages sora-2
sora-2Introduzione
Sora 2 crea video con dialoghi, effetti sonori e audio di sottofondo sincronizzati a partire da un testo o da un'immagine di riferimento. Il profilo standard supporta l'esplorazione visiva e le clip concettuali, con flussi separati del produttore per personaggi non umani riutilizzabili, continuazioni e modifiche video mirate.
- Input accettati
- Testo
- Risultati
- json · sse
Disponibile in Ailoot · input e metodi
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Tipi di input
text- Tipi di output
json,sse- Formato di output
- JSON o SSE
| Campo | Tipo | Requisito | Valori e limiti | Predefinito |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObbligatorio | Valori e limiti sora-2 | Predefinito— |
Campomessages | Tipomessage[] | RequisitoObbligatorio | Valori e limiti | Predefinito— |
Campomessages[].role | Tipostring | RequisitoObbligatorio | Valori e limiti user, assistant | Predefinito— |
Campomessages[].content | Tipostring | RequisitoObbligatorio | Valori e limiti | Predefinito— |
Campomax_tokens | Tipointeger | RequisitoObbligatorio | Valori e limiti | Predefinito— |
Campostream | Tipoboolean | RequisitoFacoltativo | Valori e limiti | Predefinitofalse |
Combinazioni di materiali in input
Testo · Testo UTF-8
Stringa messages[].content
Parametri e ciclo di vita del metodo
| Parametro | Contratto |
|---|---|
Parametrocontent_type | Contrattoapplication/json |
Parametrorequired | Contrattomodel, messages, max_tokens |
Parametrooptional_controls | Contrattostream |
Parametromaterial_types | Contrattotext |
Parametrotext_file_material | ContrattoLeggi il documento UTF-8 effettivo e inserisci il testo nell’ingresso indicato o nella stringa del contenuto del messaggio. |
Ciclo di vita: synchronous_or_streamed
Tariffe
Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.
- Modalità rapida
- Non specificato Quando è selezionata la modalità rapida
- Modalità flex
- Non specificato Quando è selezionata la modalità flex
- Sforzo massimo di ragionamento
- Non specificato Quando lo sforzo massimo di ragionamento usa l'adeguamento predefinito (default)
Tariffe Ailoot
Prezzi per configurazione
| Configurazione | Listino delle tariffe | Costo |
|---|---|---|
| ConfigurazioneTariffe di base dei token | Listino delle tariffeTariffa base | Costo Input · Token in input $0 / 1K token Output · Token in output $0.2 / 1K token Input · Lettura dalla cache $0 / 1K token Input · Scrittura nella cache $0 / 1K token Input · Scrittura nella cache, 1 ora — / 1K token |
Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. Come funzionano la prenotazione e l’addebito finale →
Esempi di richieste
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))
Ricevi e salva i risultati
Ailoot Ultra · Anthropic Messages
JSON o SSE
Conserva tutti i risultati completati
Conserva ogni risposta, file e parte di contenuto restituiti per intero.
Conserva tutti i blocchi di contenuto, le firme di ragionamento e gli ID effettivi di utilizzo degli strumenti. Assembla tutti i delta dei blocchi SSE; il primo blocco di testo non è l’uscita completa.
Se occorre verificare la risposta originale
Conserva gli ID e le intestazioni di richiesta/risposta. Non viene fornito alcun URL generico per recuperare un’attività testuale.
Campi della risposta
| Campo | Tipo |
|---|---|
Campoid | Tipostring |
Campomodel | Tipostring |
Campocontent[] | Tipotext|thinking|tool_use|other content block |
Campostop_reason | Tipostring|null |
Campousage | Tipoobject |
Errori e passaggi successivi
| Risposta | Condizione | Passaggio successivo |
|---|---|---|
Risposta400 · invalid_request_error | CondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validi | Passaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione. |
Alias
Alias del modello
Ailoot Ultra sora-2
Alias dei percorsi dei metodi
Usa i percorsi dei metodi indicati sopra.
ID di chiamata correlati
FAQ · sora-2
- Quali input e risultati sono disponibili?
POST /v1/chat/completions·sora-2:text→json,ssePOST /v1/messages·sora-2:text→json,sse- Quali campi usa la richiesta?
POST /v1/chat/completions·sora-2:model,messages,streamPOST /v1/messages·sora-2:model,messages,max_tokens,stream