Documentation de l'API
Apprenez à intégrer l'API Sora2 pour générer de superbes vidéos par programmation
💡 Copiez et collez dans ChatGPT, Claude ou d'autres assistants IA pour implémenter
1. Obtenez votre clé API
Créez un compte et générez votre clé API depuis le tableau de bord
Obtenir la clé API2. Effectuez votre première requête
Utilisez votre clé API pour vous authentifier et commencer à générer des vidéos
// Make your first video generation request
async function generateVideo() {
const response = await fetch('https://sora2api.org/api/generate-video', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
prompt: 'A beautiful sunset over the ocean with gentle waves',
aspectRatio: '16:9',
duration: 10,
type: 'text2video'
})
});
const result = await response.json();
console.log('Task ID:', result.data.taskId);
console.log('Credits used:', result.data.creditsUsed);
return result.data.taskId; // Save this for status checking
}
generateVideo();3. Interrogez les résultats
Vérifiez l'état de votre tâche de génération de vidéo et récupérez l'URL de la vidéo
// Complete example: Generate and poll for video
async function generateAndWaitForVideo() {
// Step 1: Start video generation
const generateResponse = await fetch('https://sora2api.org/api/generate-video', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
prompt: 'A beautiful sunset over the ocean with gentle waves',
aspectRatio: '16:9',
duration: 10,
type: 'text2video'
})
});
const generateResult = await generateResponse.json();
const taskId = generateResult.data.taskId;
console.log('Video generation started, Task ID:', taskId);
// Step 2: Poll for completion
return new Promise((resolve, reject) => {
const checkStatus = async () => {
const statusResponse = await fetch('https://sora2api.org/api/check-video-status', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ taskId })
});
const statusResult = await statusResponse.json();
const { status, progress, videoUrl } = statusResult.data;
console.log(`Status: ${status}, Progress: ${progress}%`);
if (status === 'succeeded') {
console.log('Video ready! URL:', videoUrl);
resolve(videoUrl);
} else if (status === 'failed') {
reject(new Error('Video generation failed'));
} else {
// Still processing, check again in 5 seconds
setTimeout(checkStatus, 5000);
}
};
checkStatus();
});
}
// Usage
generateAndWaitForVideo()
.then(videoUrl => console.log('Final video URL:', videoUrl))
.catch(error => console.error('Error:', error));Incluez votre clé API dans l'en-tête d'autorisation :
Authorization: Bearer YOUR_API_KEYExemple d'authentification
curl -X POST https://sora2api.org/api/generate-video \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "A cat playing", "aspectRatio": "16:9", "duration": 10, "type": "text2video"}'/api/generate-videoInitie une tâche de génération de vidéo et renvoie un ID de tâche
Paramètres
promptrequiredLa description textuelle ou l'invite d'action pour la vidéo (chaîne, obligatoire)
aspectRatiorequiredRapport d'aspect de la vidéo : "16:9" (paysage) ou "9:16" (portrait) (chaîne, obligatoire)
durationoptionalVideo duration in seconds: 10 or 15 (number, optional, default: 10). Cost depends on resolution: 480p 10s = 95 credits, 480p 15s = 143 credits, 720p 10s = 205 credits, 720p 15s = 308 credits
imageUrloptionalURL publique de l'image téléchargée (chaîne, facultatif, obligatoire pour image vers vidéo)
Exemple de requête
{
"prompt": "A beautiful sunset over the ocean",
"aspectRatio": "16:9",
"resolution": "480p",
"duration": 10, // optional, default 10, can be 10 or 15 seconds
"type": "text2video",
"imageUrl": "https://yourdomain.com/image.jpg" // optional, for image2video
}Exemple de réponse
{
"code": 0,
"data": {
"success": true,
"taskId": "xxxxxxxxxx-xxxx-xxxx-xxxxxxxxxx",
"creditsUsed": 95,
"message": "Video generation started"
}
}/api/check-video-statusVérifiez l'état et la progression d'une tâche de génération de vidéo
Paramètres
taskIdrequiredL'ID de tâche renvoyé par le point de terminaison de génération de vidéo (chaîne, obligatoire)
Exemple de requête
{
"taskId": "xxxxxxxxxx-xxxx-xxxx-xxxxxxxxxx"
}Exemple de réponse
{
"code": 0,
"data": {
"status": "succeeded",
"progress": 100,
"videoUrl": "https://example.com/video.mp4",
"id": "xxxxxxxxxx-xxxx-xxxx-xxxxxxxxxx"
},
"msg": "success"
}Codes d'état
Générez une vidéo uniquement à partir d'une description textuelle :
async function generateTextToVideo() {
// Step 1: Generate video
const generateResponse = await fetch('https://sora2api.org/api/generate-video', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
prompt: 'A serene mountain landscape at sunrise',
aspectRatio: '16:9',
resolution: '480p', // optional: 480p or 720p, default 480p
duration: 10, // optional: 10 or 15 seconds
type: 'text2video'
})
});
const { data } = await generateResponse.json();
const taskId = data.taskId;
// Step 2: Poll for status
const pollStatus = async () => {
const statusResponse = await fetch('https://sora2api.org/api/check-video-status', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ taskId })
});
const statusData = await statusResponse.json();
if (statusData.data.status === 'succeeded') {
console.log('Video URL:', statusData.data.videoUrl);
return statusData.data.videoUrl;
} else if (statusData.data.status === 'running') {
// Poll again after 3 seconds
setTimeout(pollStatus, 3000);
} else {
console.error('Generation failed');
}
};
pollStatus();
}Codes d'erreur courants
401 UnauthorizedClé API invalide ou manquante. Vérifiez votre en-tête d'autorisation.
402 Payment RequiredCrédits insuffisants. Veuillez acheter plus de crédits pour continuer.
400 Bad RequestParamètres de requête invalides. Vérifiez le corps de votre requête.
Coût par vidéo
95-308 Crédits
480p: 95 credits for 10s, 143 credits for 15s. 720p: 205 credits for 10s, 308 credits for 15s
Durée de la vidéo
10s / 15s
Choisir entre 10s ou 15s
Taille maximale de l'image
5MB
Pour la génération d'image vers vidéo
Validité de l'URL de la vidéo
2 Heures
Téléchargez dans cette période