Passer au contenu

Documentation du développeur UlazAI

Sora 2 API : génération vidéo, tarification et accès

Sora 2 API : génération vidéo, tarification et accès

Générez des vidéos Sora 2 via UlazAI avec des points de terminaison clairs, une tarification du crédit, des règles prompt, une interrogation d'état et une gestion des sorties CDN.

Vérifiez le prix actuel du modèle Sora et toute offre de compte actif avant la génération.

✨ Caractéristiques du Sora 2

✅ Texte vers vidéo génération

✅ Image vers vidéo animations

✅ Options de durée indiqué par l'itinéraire actuel API

✅ Paramètres de sortie indiqué dans la documentation actuelle du API

✅ Rapports d'aspect pris en charge dépend de l'itinéraire choisi

✅ Traitement asynchrone avec sondage d'état

✅ Stockage R2 automatique avec CDN

✅ Notifications par courrier électronique une fois terminé

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

Générer une vidéo à partir de texte

Créez une vidéo de 10 secondes à partir d'un texte prompt à l'aide de Sora 2.

Corps de la demande

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

Paramètres

prompt * (chaîne)

Description textuelle de la vidéo à générer. Maximum 5 000 caractères. Soyez descriptif pour de meilleurs résultats.

aspect_ratio (chaîne)

Rapport hauteur/largeur de la vidéo. Possibilités : landscape (16:9), portrait (9:16), square (1:1). Par défaut : landscape

qualité (chaîne)

Préréglage de qualité. Possibilités : standard, high. La haute qualité nécessite plus de temps de traitement. Par défaut : standard

prompt_directory_optin (booléen) 💰 -10 CRÉDITS

Partagez votre vidéo sur notre répertoire public Prompt et obtenez 10 crédits de réduction! Par défaut : true

Réponse réussie (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"
  }
}

Exemple de 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"
  }'
POSTER /api/v1/sora/generate/image-to-video/

Générer une vidéo à partir d'une image

Animez une image statique dans une vidéo de 10 secondes à l'aide de Sora 2.

Corps de la demande

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

Paramètres

image_url * (chaîne)

URL de l'image source à animer. Doit être accessible au public. Formats pris en charge : JPG, PNG, WebP.

prompt * (chaîne)

Description de la façon d'animer l'image. Maximum 5 000 caractères.

aspect_ratio (chaîne)

Doit correspondre au rapport hauteur/largeur de l’image source pour de meilleurs résultats.

qualité (chaîne)

Préréglage de qualité. Par défaut : standard

prompt_directory_optin (booléen) 💰 -10 CRÉDITS

Partagez votre vidéo sur notre répertoire public Prompt et obtenez 10 crédits de réduction! Par défaut : true

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

Vérifier l'état de la génération

Obtenez l'état actuel et le résultat d'une tâche de génération vidéo Sora.

États de réponse

Traitement

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

Succès

{
  "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"
  }
}

Échoué

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

Exemple de cURL

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

🔑 Accès Sora 2 API : officiel vs UlazAI

Accès Sora 2 API dépend du fournisseur, de la vérification de l'organisation et du niveau de compte. Vérifiez l’accès et les tarifs actuels avant l’intégration.

Officiel OpenAI API

  • Invitation/vérification de l'organisation fermée
  • Facturé par seconde de vidéo
  • Vous gérez votre propre clé OpenAI et vos quotas

Sora 2 sur UlazAI

  • Appelez-le maintenant avec une clé UlazAI API - pas d'invitation séparée
  • Tarifé en crédits partagés, remboursé en cas d'échec des tâches
  • La même clé appelle également Veo 3, Seedance et Kling - comparez le coût et la latence à partir d'une seule balance

Vous voulez d’abord comparer le Sora 2 aux alternatives ? Voir le Guide des modèles vidéo IA 2026.

💰 Tarifs Sora 2

Texte vers vidéo

Vérifiez les prix actuels du API

pour la durée et le modèle sélectionnés

• Vérifiez les paramètres de sortie actuels.

• Vérifiez les formats d'image pris en charge.

• Le temps de traitement varie selon la file d'attente

Image vers vidéo

Vérifiez les prix actuels du API

pour la conversion d'image en vidéo

• Téléchargez une image prise en charge que vous pouvez utiliser

• Mouvement personnalisé prompt

• Le temps de traitement varie selon la file d'attente

Calculez votre lot à partir du coût actuel du modèle et du taux de nouvelle tentative attendu.

📚 Meilleures pratiques

Directives Prompt

  • Soyez précis sur les mouvements de la caméra (panoramique, zoom, inclinaison)
  • Décrire l'éclairage et l'ambiance
  • Inclure les actions et expressions des personnages
  • Spécifier le timing des moments clés
  • Évitez les personnages ou les marques protégées par le droit d'auteur

Conseils pour la conversion d'image en vidéo

  • Utilisez des images sources de haute qualité (min 1024px)
  • Faire correspondre les proportions pour éviter le recadrage
  • Décrire un mouvement réaliste pour la scène
  • Tenez compte de la physique et du mouvement naturel

Intégration de webhooks

  • Les vidéos sont automatiquement stockées dans R2 avec livraison CDN
  • Notifications par e-mail envoyées une fois la génération terminée
  • Interrogez le point de terminaison d'état toutes les 30 secondes pour les mises à jour
  • Les générations ratées remboursent automatiquement les crédits

⚠️ Codes d'erreur

400 Paramètres de requête invalides ou prompt trop long
401 Clé API invalide ou manquante
402 Crédits insuffisants
422 Violation des règles relatives au contenu
429 Limite de débit dépassée (max 10 simultanés)
500 Erreur de serveur - les crédits seront remboursés

💻 Exemples de codes

Python

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();

🚀 Prêt à commencer ?

Vérifiez votre compte pour les offres de crédit actuelles.