Documentação da API

Aprenda como integrar a API Sora2 para gerar vídeos incríveis programaticamente

Início rápido
Comece com a API Sora2 em apenas 3 passos

💡 Copie e cole no ChatGPT, Claude ou outros assistentes de IA para implementar

1. Obtenha sua chave API

Crie uma conta e gere sua chave API no painel

Obter chave API

2. Faça sua primeira solicitação

Use sua chave API para autenticar e começar a gerar vídeos

// 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. Consulte os resultados

Verifique o status da sua tarefa de geração de vídeo e recupere a URL do vídeo

// 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));
Autenticação
Todas as solicitações de API devem incluir sua chave API no cabeçalho de autorização

Inclua sua chave API no cabeçalho de autorização:

Authorization: Bearer YOUR_API_KEY

Exemplo de autenticação

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"}'
Endpoints da API
POST/api/generate-video

Inicia uma tarefa de geração de vídeo e retorna um ID de tarefa

Parâmetros

promptrequired

A descrição de texto ou prompt de ação para o vídeo (string, obrigatório)

aspectRatiorequired

Proporção do vídeo: "16:9" (paisagem) ou "9:16" (retrato) (string, obrigatório)

durationoptional

Video 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

imageUrloptional

URL pública da imagem carregada (string, opcional, obrigatório para imagem para vídeo)

Exemplo de solicitação

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

Exemplo de resposta

{
  "code": 0,
  "data": {
    "success": true,
    "taskId": "xxxxxxxxxx-xxxx-xxxx-xxxxxxxxxx",
    "creditsUsed": 95,
    "message": "Video generation started"
  }
}
POST/api/check-video-status

Verifique o status e o progresso de uma tarefa de geração de vídeo

Parâmetros

taskIdrequired

O ID da tarefa retornado do endpoint de geração de vídeo (string, obrigatório)

Exemplo de solicitação

{
  "taskId": "xxxxxxxxxx-xxxx-xxxx-xxxxxxxxxx"
}

Exemplo de resposta

{
  "code": 0,
  "data": {
    "status": "succeeded",
    "progress": 100,
    "videoUrl": "https://example.com/video.mp4",
    "id": "xxxxxxxxxx-xxxx-xxxx-xxxxxxxxxx"
  },
  "msg": "success"
}

Códigos de status

runningGeração de vídeo em andamento
succeededGeração de vídeo concluída com sucesso
failedGeração de vídeo falhou (os créditos serão reembolsados)
Exemplos de código
Exemplos completos para geração de texto para vídeo e imagem para vídeo

Gere um vídeo apenas a partir de descrição de texto:

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();
}
Tratamento de erros
Erros comuns que você pode encontrar e como lidar com eles

Códigos de erro comuns

401 Unauthorized

Chave API inválida ou ausente. Verifique seu cabeçalho de autorização.

402 Payment Required

Créditos insuficientes. Por favor, compre mais créditos para continuar.

400 Bad Request

Parâmetros de solicitação inválidos. Verifique o corpo da sua solicitação.

Limites e preços

Custo por vídeo

95-308 Créditos

480p: 95 credits for 10s, 143 credits for 15s. 720p: 205 credits for 10s, 308 credits for 15s

Duração do vídeo

10s / 15s

Escolha entre 10s ou 15s

Tamanho máximo da imagem

5MB

Para geração de imagem para vídeo

Validade da URL do vídeo

2 Horas

Baixe dentro deste período