Przejdź do treści

Dokumentacja programisty UlazAI

Sora 2 API: generowanie wideo, ceny i dostęp

Sora 2 API: generowanie wideo, ceny i dostęp

Generuj filmy Sora 2 za pomocą UlazAI z przejrzystymi punktami końcowymi, cenami kredytów, regułami prompt, odpytywaniem stanu i obsługą danych wyjściowych CDN.

Sprawdź aktualną cenę modelu Sora i ofertę aktywnego konta przed generacją.

✨ Funkcje Sora 2

✅ Tekst na wideo pokolenie

✅ Obraz do wideo animacja

✅ Opcje czasu trwania pokazywana przez aktualną trasę API

✅ Ustawienia wyjściowe pokazano w aktualnej dokumentacji API

✅ Obsługiwane współczynniki kształtu zależy od wybranej trasy

✅ Przetwarzanie asynchroniczne z odpytywaniem statusu

✅ Automatyczne przechowywanie R2 z CDN-em

✅ Powiadomienia e-mailowe kiedy jest kompletny

POST /api/v1/sora/generate/text-to-video/

Wygeneruj wideo z tekstu

Utwórz 10-sekundowy film z tekstu prompt za pomocą Sora 2.

Treść żądania

{
  "prompt": "A serene mountain landscape at sunrise with birds flying",
  "aspect_ratio": "landscape",  // Options: "landscape", "portrait", "square"
  "quality": "standard"          // Options: "standard", "high"
}

Parametry

prompt * (ciąg)

Tekstowy opis filmu do wygenerowania. Maks. 5000 znaków. Aby uzyskać najlepsze wyniki, opisz go.

aspect_ratio (ciąg)

Proporcje wideo. Opcje: landscape (16:9), portrait (9:16), square (1:1). Domyślnie: landscape

jakość (ciąg)

Jakość ustawiona wstępnie. Opcje: standard, high. Wysoka jakość wymaga dłuższego czasu przetwarzania. Domyślny: standard

prompt_directory_optin (wartość logiczna) 💰 -10 KREDYTÓW

Udostępnij swój film w naszym publicznym katalogu Prompt i zdobądź Rabat 10 kredytów! Domyślnie: true

Odpowiedź na sukces (201)

{
  "success": true,
  "data": {
    "task_id": "sra_2_1234567890abcdef",
    "status": "processing",
    "estimated_completion": "varies by queue",
    "credits_charged": 80,
    "credits_remaining": 920,
    "webhook_url": "https://ulazai.com/api/v1/sora/status/sra_2_1234567890abcdef/",
    "message": "Sora 2 video generation started successfully"
  }
}

Przykład cURL

curl -X POST https://ulazai.com/api/v1/sora/generate/text-to-video/ \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A serene mountain landscape at sunrise with birds flying across the sky",
    "aspect_ratio": "landscape",
    "quality": "standard"
  }'
POST /api/v1/sora/generate/image-to-video/

Wygeneruj wideo z obrazu

Animuj statyczny obraz w 10-sekundowym filmie za pomocą Sora 2.

Treść żądania

{
  "image_url": "https://example.com/your-image.jpg",
  "prompt": "Camera slowly zooms in as the character turns and smiles",
  "aspect_ratio": "landscape",
  "quality": "standard"
}

Parametry

image_url * (ciąg)

Adres URL obrazu źródłowego do animacji. Musi być publicznie dostępny. Obsługiwane formaty: JPG, PNG, WebP.

prompt * (ciąg)

Opis sposobu animacji obrazu. Maks. 5000 znaków.

aspect_ratio (ciąg)

Aby uzyskać najlepsze rezultaty, musi odpowiadać współczynnikowi proporcji obrazu źródłowego.

jakość (ciąg)

Jakość ustawiona wstępnie. Domyślnie: standard

prompt_directory_optin (wartość logiczna) 💰 -10 KREDYTÓW

Udostępnij swój film w naszym publicznym katalogu Prompt i zdobądź Rabat 10 kredytów! Domyślnie: true

DOBIERZ /api/v1/sora/status/{task_id}/

Sprawdź status generacji

Uzyskaj bieżący status i wynik zadania generowania wideo Sora.

Stany odpowiedzi

Przetwarzanie

{
  "success": true,
  "data": {
    "task_id": "sra_2_1234567890abcdef",
    "status": "processing",
    "progress": 45,
    "estimated_completion": "varies by queue"
  }
}

Sukces

{
  "success": true,
  "data": {
    "task_id": "sra_2_1234567890abcdef",
    "status": "success",
    "video_url": "https://cdn.ulazai.com/sora/videos/sra_2_1234567890abcdef.mp4",
    "thumbnail_url": "https://cdn.ulazai.com/sora/thumbnails/sra_2_1234567890abcdef.jpg",
    "duration": 10,
    "resolution": "1920x1080",
    "file_size": "15.2 MB",
    "created_at": "2025-01-03T10:15:30Z"
  }
}

Przegrany

{
  "success": false,
  "error": "Video generation failed",
  "error_details": "Content policy violation detected in prompt",
  "credits_refunded": 80
}

Przykład cURL

curl -X GET https://ulazai.com/api/v1/sora/status/sra_2_1234567890abcdef/ \
  -H "Authorization: Token YOUR_API_KEY"

🔑 Sora 2 API dostęp: oficjalny vs UlazAI

Dostęp Sora 2 API zależy od dostawcy, weryfikacji organizacji i poziomu konta. Przed integracją sprawdź aktualny dostęp i ceny.

Oficjalny OpenAI API

  • Zaproszenie / weryfikacja organizacji zamknięta
  • Rozliczane za sekundę wideo
  • Zarządzasz własnym kluczem i przydziałami OpenAI

Sora 2 na UlazAI

  • Zadzwoń teraz za pomocą jednego klucza UlazAI API - bez osobnego zaproszenia
  • Wycenione w postaci wspólnych kredytów, zwracane w przypadku nieudanych zadań
  • Ten sam klucz wywołuje również Veo 3, Seedance i Kling - porównaj koszty i opóźnienia z jednego salda

Chcesz najpierw porównać Sora 2 z alternatywami? Zobacz Przewodnik po modelach wideo AI na rok 2026.

💰 Ceny Sora 2

Tekst na wideo

Sprawdź aktualne ceny API

na wybrany okres i model

• Sprawdź aktualne ustawienia wyjścia

• Sprawdź obsługiwane proporcje

• Czas przetwarzania różni się w zależności od kolejki

Obraz na wideo

Sprawdź aktualne ceny API

do konwersji obrazu na wideo

• Prześlij obsługiwany obraz, którego możesz użyć

• Niestandardowy ruch prompt

• Czas przetwarzania różni się w zależności od kolejki

Oblicz swoją partię na podstawie bieżącego kosztu modelu i oczekiwanej częstotliwości ponownych prób.

📚 Najlepsze praktyki

Wytyczne Prompt

  • Określ szczegółowo ruchy kamery (obrót, zoom, pochylenie)
  • Opisz oświetlenie i atmosferę
  • Uwzględnij działania i wyrażenia znaków
  • Określ czas kluczowych momentów
  • Unikaj znaków i marek chronionych prawem autorskim

Wskazówki dotyczące konwersji obrazu na wideo

  • Używaj wysokiej jakości obrazów źródłowych (min. 1024 piks.)
  • Dopasuj proporcje, aby uniknąć przycięcia
  • Opisz realistyczny ruch w danej scenie
  • Weź pod uwagę fizykę i naturalny ruch

Integracja webhooka

  • Filmy są automatycznie zapisywane w R2 z dostawą CDN
  • Powiadomienia e-mail wysyłane po zakończeniu generowania
  • Sonduj punkt końcowy stanu co 30 sekund w celu uzyskania aktualizacji
  • Nieudane generacje automatycznie zwracają kredyty

⚠️ Kody błędów

400 Nieprawidłowe parametry żądania lub prompt jest za długi
401 Nieprawidłowy lub brakujący klucz API
402 Niewystarczające kredyty
422 Naruszenie polityki treści
429 Przekroczono limit szybkości (maks. 10 jednocześnie)
500 Błąd serwera - kredyty zostaną zwrócone

💻 Przykłady kodu

Pyton

import requests
import time

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://ulazai.com/api/v1"

# Generate video
response = requests.post(
    f"{BASE_URL}/sora/generate/text-to-video/",
    headers={"Authorization": f"Token {API_KEY}"},
    json={
        "prompt": "A beautiful sunset over the ocean with waves",
        "aspect_ratio": "landscape",
        "quality": "standard"
    }
)

if response.status_code == 201:
    task_id = response.json()["data"]["task_id"]

    # Poll for status
    while True:
        status_response = requests.get(
            f"{BASE_URL}/sora/status/{task_id}/",
            headers={"Authorization": f"Token {API_KEY}"}
        )

        status_data = status_response.json()["data"]

        if status_data["status"] == "success":
            print(f"Video ready: {status_data['video_url']}")
            break
        elif status_data["status"] == "failed":
            print("Generation failed")
            break

        time.sleep(30)  # Wait 30 seconds before next check

Javascript (node.js)

const axios = require('axios');

const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://ulazai.com/api/v1';

async function generateSoraVideo() {
    try {
        // Generate video
        const response = await axios.post(
            `${BASE_URL}/sora/generate/text-to-video/`,
            {
                prompt: 'A beautiful sunset over the ocean with waves',
                aspect_ratio: 'landscape',
                quality: 'standard'
            },
            {
                headers: { 'Authorization': `Token ${API_KEY}` }
            }
        );

        const taskId = response.data.data.task_id;
        console.log(`Generation started: ${taskId}`);

        // Poll for status
        const checkStatus = async () => {
            const statusResponse = await axios.get(
                `${BASE_URL}/sora/status/${taskId}/`,
                { headers: { 'Authorization': `Token ${API_KEY}` } }
            );

            const status = statusResponse.data.data.status;

            if (status === 'success') {
                console.log(`Video ready: ${statusResponse.data.data.video_url}`);
            } else if (status === 'failed') {
                console.log('Generation failed');
            } else {
                setTimeout(checkStatus, 30000); // Check again in 30 seconds
            }
        };

        setTimeout(checkStatus, 30000);

    } catch (error) {
        console.error('Error:', error.response?.data || error.message);
    }
}

generateSoraVideo();

🚀 Gotowy do startu?

Sprawdź na swoim koncie aktualne oferty kredytowe.