sora-2
Sora 2 tworzy wideo z synchronizowanymi dialogami, efektami dźwiękowymi i dźwiękiem tła na podstawie tekstu lub obrazu referencyjnego. Profil standardowy służy do poszukiwań wizualnych i klipów koncepcyjnych, a producent udostępnia osobne procesy dla wielokrotnego użycia postaci innych niż ludzie, kontynuacji i precyzyjnych edycji wideo.
- Ailoot Ultra · Chat Completions
POST /v1/chat/completionssora-2 - Ailoot Ultra · Anthropic Messages
POST /v1/messagessora-2
O modelu
Ten opis przedstawia możliwości modelu. Dane wejściowe, wyniki i opcje dostępne w Ailoot podano poniżej dla wybranej metody.
Sora 2 to model OpenAI do generowania obrazu i dźwięku w dynamicznych klipach na podstawie pisemnego opisu sceny lub obrazu referencyjnego. Tworzy sekwencję wizualną wraz z synchronizowaną mową, efektami i dźwiękiem tła. Standardowy profil Sora 2 jest przeznaczony do poszukiwań wizualnych, rozwijania koncepcji, prototypów i wstępnych montaży. Sora 2 Pro to osobne wydanie nastawione na większą wierność obrazu i wykończenie w wyższej rozdzielczości.
Opisz ujęcie, które można zobaczyć i usłyszeć
Poradnik producenta dotyczący promptów porządkuje przydatny brief wokół kadrowania, głównego obiektu, akcji, otoczenia i światła. Nadaj scenie spójny styl wizualny, a następnie opisz ruch w wyraźnych etapach. Autorska koncepcja produktu może pokazywać mały mechaniczny przedmiot wykonujący jeden obrót na stole warsztatowym, podczas gdy kamera powoli się zbliża, przy miękkim świetle z okna i subtelnym odgłosie silnika. Określ, na co widz ma zwrócić uwagę i jak kończy się akcja.
Zadbaj o zrozumiały ruch kamery i działanie głównego obiektu w każdym ujęciu. Złożoną sekwencję można podzielić na osobne bloki ujęć, każdy z własnym kadrowaniem, akcją i oświetleniem. Zachowaj te same szczegóły obiektu i paletę, gdy kilka klipów ma tworzyć jedną sekwencję. Poradnik podkreśla, że krótsze ujęcia zwykle wierniej realizują polecenia, a wielokrotne generowanie z tego samego promptu daje różne wersje.
Opis premiery modelu wskazuje na lepsze odwzorowanie zjawisk fizycznych i ciągłość między ujęciami, także w stylu realistycznym, filmowym i anime. Są to możliwości, które należy świadomie ukierunkować i sprawdzić. Oceń ruch, kontakt między obiektami, proporcje i ciągłość, zamiast zakładać, że wiarygodna pierwsza klatka gwarantuje spójną sekwencję. Jeśli działanie jest niejasne, uprość je i nadaj mu widoczny początek oraz koniec.
Osobno poprowadź dialog i dźwięk
Podaj wypowiadane kwestie oddzielnie od opisu wizualnego i konsekwentnie oznaczaj rozmówców. Dialog powinien być na tyle krótki, by mieścił się w akcji i planowanej długości klipu. W animacji z dwiema postaciami użyj naprzemiennie krótkiego pytania i odpowiedzi, zamiast próbować zmieścić długą przemowę w krótkim ujęciu. Poradnik ostrzega, że złożone, długie dialogi mogą zaburzać tempo i synchronizację.
Opisz warstwę dźwiękową właściwą dla sceny: odgłos drobnego ruchu, atmosferę pomieszczenia lub rytm efektu otoczenia. Wyjaśnij, który dźwięk ma zbiegać się z działaniem. Odsłuchaj uzyskaną mowę i efekty razem z obrazem, sprawdzając przypisanie rozmówców, treść i czas. Synchronizowane audio stanowi część wygenerowanego klipu, a nie osobną odpowiedź tekstową.
Rozmiar, długość i początek oparty na obrazie
Udokumentowane rozmiary wyjściowe standardowego modelu to pionowe 720×1280 i poziome 1280×720. Rozmiarów o wyższej rozdzielczości dostępnych w profilu Pro nie należy przypisywać standardowej Sora 2. Rozmiar i długość są jawnymi ustawieniami żądania; wpisanie innego rozmiaru lub prośby o dłuższy film w prompcie nie zmienia tych ustawień. Dokumentacja tworzenia podaje długości klipów 4, 8 i 12 sekund, więc przygotowując ujęcie, wybierz krótki, jasno określony etap akcji. Rozszerzony proces producenta dokumentuje również ustawienia 16 i 20 sekund.
Obraz referencyjny wyznacza pierwszą klatkę, a tekst opisuje dalszy przebieg. Producent obsługuje referencje JPEG, PNG i WebP oraz wymaga zgodności obrazu z docelowym rozmiarem wideo. Przygotuj główny obiekt, otoczenie i kompozycję na tym obrazie początkowym, a następnie poproś o konkretny ruch. Jest to referencja pierwszej klatki, a nie gwarancja zachowania każdego szczegółu przez cały klip.
Postacie inne niż ludzie do wielokrotnego użycia
Rozszerzony proces producenta pozwala utworzyć zasób postaci do wielokrotnego użycia na podstawie krótkiego wideo referencyjnego zwierzęcia, maskotki lub przedmiotu. Wskazówki przygotowania zalecają klip MP4 trwający około dwóch do czterech sekund, w rozdzielczości od 720p do 1080p i proporcjach 16:9 lub 9:16. Dopasowanie proporcji źródła i wyniku pomaga uniknąć rozciągnięcia obrazu. Generowanie może odwoływać się do maksymalnie dwóch postaci.
Zachowaj identyfikator postaci i wymień jej nazwę w prompcie; samo przekazanie identyfikatora nie wyczerpuje przygotowania opisanego w poradniku. Zasoby postaci mogą towarzyszyć generowaniu na podstawie obrazu, ale rozszerzanie wideo ich nie przyjmuje. Producent domyślnie blokuje przesyłanie postaci o ludzkim wyglądzie i w udokumentowanym procesie API odrzuca obrazy referencyjne zawierające ludzkie twarze. Funkcje postaci osobistych w aplikacji Sora stanowią osobny proces produktowy.
Kontynuuj lub edytuj ukończony klip
Rozszerzenie przyjmuje ukończone wideo źródłowe i prompt kontynuacji, wykorzystując cały klip jako kontekst ruchu, kierunku kamery i ciągłości sceny. Poradnik opisuje dodawanie do 20 sekund w jednym rozszerzeniu. Udokumentowanymi danymi wejściowymi tego trybu są wideo źródłowe i tekst; dodatkowe referencje postaci lub obrazów są wyłączone. Opisz dalszy ciąg istniejącej akcji, zamiast wprowadzać niepowiązaną scenę bez przejścia.
Edycja wideo służy do wprowadzenia jasno określonej zmiany w istniejącym klipie. Precyzyjna poprawka może zmienić kolor przedmiotu lub paletę sceny, zachowując pozostałe elementy ujęcia. Poradnik producenta zaleca jedną dobrze określoną zmianę naraz i odróżnia edycję wygenerowanego wideo od przesyłania dowolnego materiału, dla którego obowiązuje osobny warunek dopuszczenia. Zachowaj ukończone źródło i wskaż dokładną potrzebną poprawkę przed kolejną edycją.
Zadania renderowania i gotowe wideo
Udokumentowany proces wideo producenta jest asynchroniczny: przesłane zadanie może oczekiwać w kolejce lub być w toku, zanim zakończy się powodzeniem albo błędem. Ukończone zadanie daje wideo MP4; miniatury i arkusze klatek wspierają podgląd i przeglądanie. Zachowaj powiązanie identyfikatora zadania z promptem, referencjami i zwróconymi zasobami. Pierwsza odpowiedź na zadanie nie jest jeszcze gotowym wideo do odtworzenia.
Zwykły proces pobierania określa godzinny czas ważności adresu URL pobierania. Rozszerzony proces wsadowy przygotowuje niezależne żądania renderowania JSON ze stałymi identyfikatorami elementów, przesłanymi referencjami i wynikiem przypisanym do każdego ujęcia; gotowe zasoby mają osobny okres pobierania wynoszący do 24 godzin. Niezwłocznie zapisz gotowy klip i sprawdź rzeczywisty obraz oraz dźwięk, zanim uznasz go za wybrane ujęcie.
Udokumentowane ograniczenia treści w API producenta wymagają materiału odpowiedniego dla odbiorców poniżej 18 lat oraz wykluczają postacie lub muzykę chronione prawem autorskim i generowanie rzeczywistych osób. Przygotuj scenę i referencje zgodnie z tymi zasadami. Bezpośrednim wynikiem modelu jest wideo z dźwiękiem, a nie wygenerowane nieruchome obrazy, konwersacyjna odpowiedź narzędzia czy film o nieograniczonej długości. Kontynuując koncepcję wizualną, zachowaj dokładną tożsamość modelu standardowego i zaakceptowany klip źródłowy.
Ailoot Ultra · Chat Completions POST /v1/chat/completions sora-2
sora-2Start
Sora 2 tworzy wideo z synchronizowanymi dialogami, efektami dźwiękowymi i dźwiękiem tła na podstawie tekstu lub obrazu referencyjnego. Profil standardowy służy do poszukiwań wizualnych i klipów koncepcyjnych, a producent udostępnia osobne procesy dla wielokrotnego użycia postaci innych niż ludzie, kontynuacji i precyzyjnych edycji wideo.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- json · sse
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · Chat Completions POST /v1/chat/completions
- Wejście
text- Wyjście
json,sse- Format wyjściowy
- JSON lub text/event-stream
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity sora-2 | Domyślnie— |
Polemessages | Typmessage[] | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polemessages[].role | Typstring | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polemessages[].content | Typstring | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polestream | Typboolean | WymaganieOpcjonalne | Wartości i limity | Domyślniefalse |
Kombinacje materiałów wejściowych
owned_text_messages
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, messages |
Parametrmaterial_types | Kontrakttext |
Parametrmessages | Kontrakttablica wiadomości z role i dosłowną treścią content w postaci ciągu znaków |
Parametrfile_material | KontraktRzeczywistą treść UTF-8 można wstawić jako dosłowny ciąg znaków content; nie zakłada się odwołania do pliku. |
Parametroptional_controls | Kontraktstream |
Cykl życia: synchronous_json_or_sse
Cennik
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Nie określono Gdy wybrany jest tryb szybki
- Tryb flex
- Nie określono Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Nie określono Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
Stawki Ailoot
Ceny według konfiguracji
| Konfiguracja | Tabela stawek | Opłata |
|---|---|---|
| KonfiguracjaPodstawowe stawki za tokeny | Tabela stawekStawka podstawowa | Opłata Wejście · Tokeny wejściowe $0 / 1K tokenów Wyjście · Tokeny wyjściowe $0.2 / 1K tokenów Wejście · Odczyt cache $0 / 1K tokenów Wejście · Zapis do cache $0 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Przykładowe żądania
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
Odbieranie i zapisywanie wyników
Ailoot Ultra · Chat Completions
JSON lub text/event-stream
Zachowaj wszystkie ukończone wyniki
Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.
Zachowaj kompletne bajty JSON lub SSE, nagłówki odpowiedzi, zwrócone dane użycia i wszystkie dostarczone pola wyników. Nie określa się rodziny wyników właściwej dla danego modelu.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Zachowaj oryginalną odpowiedź i tożsamość próby; nie zakłada się odpytywania nowego zadania ani ponownego wysyłania.
Pola odpowiedzi
| Pole | Typ | Znaczenie |
|---|---|---|
Polecomplete response JSON | Typobject | ZnaczenieZachowaj każde zwrócone pole bez zakładania rodziny wyników właściwej dla modelu. |
PoleSSE data events | Typstream | ZnaczenieZachowaj każde zwrócone zdarzenie i znacznik końcowy bez wybierania wyłącznie pól tekstowych. |
Aliasy
Aliasy modelu
Ailoot Ultra sora-2
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
Ailoot Ultra · Anthropic Messages POST /v1/messages sora-2
sora-2Start
Sora 2 tworzy wideo z synchronizowanymi dialogami, efektami dźwiękowymi i dźwiękiem tła na podstawie tekstu lub obrazu referencyjnego. Profil standardowy służy do poszukiwań wizualnych i klipów koncepcyjnych, a producent udostępnia osobne procesy dla wielokrotnego użycia postaci innych niż ludzie, kontynuacji i precyzyjnych edycji wideo.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- json · sse
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Wejście
text- Wyjście
json,sse- Format wyjściowy
- JSON lub SSE
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity sora-2 | Domyślnie— |
Polemessages | Typmessage[] | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polemessages[].role | Typstring | WymaganieWymagane | Wartości i limity user, assistant | Domyślnie— |
Polemessages[].content | Typstring | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polemax_tokens | Typinteger | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polestream | Typboolean | WymaganieOpcjonalne | Wartości i limity | Domyślniefalse |
Kombinacje materiałów wejściowych
Tekst · tekst UTF-8
ciąg messages[].content
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, messages, max_tokens |
Parametroptional_controls | Kontraktstream |
Parametrmaterial_types | Kontrakttext |
Parametrtext_file_material | KontraktOdczytaj rzeczywisty dokument UTF-8 i umieść jego tekst we wskazanym polu input lub w ciągu treści wiadomości. |
Cykl życia: synchronous_or_streamed
Cennik
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Nie określono Gdy wybrany jest tryb szybki
- Tryb flex
- Nie określono Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Nie określono Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
Stawki Ailoot
Ceny według konfiguracji
| Konfiguracja | Tabela stawek | Opłata |
|---|---|---|
| KonfiguracjaPodstawowe stawki za tokeny | Tabela stawekStawka podstawowa | Opłata Wejście · Tokeny wejściowe $0 / 1K tokenów Wyjście · Tokeny wyjściowe $0.2 / 1K tokenów Wejście · Odczyt cache $0 / 1K tokenów Wejście · Zapis do cache $0 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Przykładowe żądania
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))
Odbieranie i zapisywanie wyników
Ailoot Ultra · Anthropic Messages
JSON lub SSE
Zachowaj wszystkie ukończone wyniki
Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.
Zachowaj wszystkie bloki treści, sygnatury myślenia i rzeczywiste ID użycia narzędzi. Złóż wszystkie przyrosty bloków SSE; pierwszy blok tekstowy nie jest pełnym wyjściem.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Zachowaj ID i nagłówki żądań/odpowiedzi. Nie udostępniono ogólnego URL pobierania zadania tekstowego.
Pola odpowiedzi
| Pole | Typ |
|---|---|
Poleid | Typstring |
Polemodel | Typstring |
Polecontent[] | Typtext|thinking|tool_use|other content block |
Polestop_reason | Typstring|null |
Poleusage | Typobject |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Aliasy
Aliasy modelu
Ailoot Ultra sora-2
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
FAQ · sora-2
- Jakie dane wejściowe i wyniki są dostępne?
POST /v1/chat/completions·sora-2:text→json,ssePOST /v1/messages·sora-2:text→json,sse- Jakich pól używa żądanie?
POST /v1/chat/completions·sora-2:model,messages,streamPOST /v1/messages·sora-2:model,messages,max_tokens,stream