Quick Start Guide

Generate your first video with VEO3 in under 5 minutes. From API key to downloaded video.

5 Minutes3 Simple StepsCopy-Paste Ready
Before You Start
A VEO3 account (sign up is free)
Basic knowledge of APIs and HTTP requests
A tool to make API requests (curl, Postman, or code)
1
Get Your API Key
2 minutes
Sign up and obtain your VEO3 API key

What you'll do:

  • Create a free account at VEO3
  • Verify your email address
  • Navigate to API Keys in dashboard
  • Generate your first API key
  • Copy the key (starts with 'veo3_')
2
Make Your First Request
1 minute
Generate your first video from text

What you'll do:

  • Use the provided code examples
  • Replace YOUR_API_KEY with actual key
  • Send a POST request to /text-to-video
  • Wait for the task ID response
  • Generation starts automatically

Copy-Paste cURL Command

curl -X POST "https://api.veo3gen.co/api/veo/text-to-video" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A cute cat playing with a ball of yarn",
    "model": "veo-3.0-fast-generate-preview"
  }'

Expected Response

{
  "success": true,
  "message": "Video generation started",
  "taskId": "veo_1703123456789_abc123def",
  "status": "pending",
  "estimatedWaitTime": "60-120 seconds",
  "creditsUsed": 190,
  "remainingCredits": 20
}
3
Check Status & Download
2 minutes
Monitor progress and get your video

What you'll do:

  • Poll the status endpoint every 10 seconds
  • Wait for status to change to 'completed'
  • Use the download endpoint to get video URL
  • Download your generated video
  • Video link expires in 24 hours

Check Status (Replace TASK_ID)

curl -X GET "https://api.veo3gen.co/api/veo/status/TASK_ID" \
  -H "X-API-Key: YOUR_API_KEY"

When Complete, Download Video

curl -X GET "https://api.veo3gen.co/api/veo/download/TASK_ID" \
  -H "X-API-Key: YOUR_API_KEY"

Complete Example

End-to-end code example in different programming languages

JavaScript/Node.js
const apiKey = 'veo3_your_api_key_here';
const baseURL = 'https://api.veo3gen.co';

async function generateVideo() {
  try {
    // 1. Start generation
    const response = await fetch(`${baseURL}/api/veo/text-to-video`, {
      method: 'POST',
      headers: {
        'X-API-Key': apiKey,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        prompt: 'A beautiful sunset over mountains',
        model: 'veo-3.0-fast-generate-preview'
      })
    });
    
    const result = await response.json();
    console.log('Generation started:', result.taskId);
    
    // 2. Poll for completion
    while (true) {
      const statusResponse = await fetch(
        `${baseURL}/api/veo/status/${result.taskId}`,
        { headers: { 'X-API-Key': apiKey } }
      );
      
      const status = await statusResponse.json();
      console.log('Status:', status.status);
      
      if (status.status === 'completed') {
        // 3. Get download URL
        const downloadResponse = await fetch(
          `${baseURL}/api/veo/download/${result.taskId}`,
          { headers: { 'X-API-Key': apiKey } }
        );
        
        const download = await downloadResponse.json();
        console.log('Video ready:', download.videos[0].url);
        break;
      }
      
      if (status.status === 'failed') {
        console.error('Generation failed:', status.error);
        break;
      }
      
      // Wait 10 seconds before checking again
      await new Promise(resolve => setTimeout(resolve, 10000));
    }
    
  } catch (error) {
    console.error('Error:', error);
  }
}

generateVideo();
Python
import requests
import time

api_key = 'veo3_your_api_key_here'
base_url = 'https://api.veo3gen.co'
headers = {'X-API-Key': api_key}

def generate_video():
    try:
        # 1. Start generation
        response = requests.post(
            f'{base_url}/api/veo/text-to-video',
            headers={**headers, 'Content-Type': 'application/json'},
            json={
                'prompt': 'A beautiful sunset over mountains',
                'model': 'veo-3.0-fast-generate-preview'
            }
        )
        
        result = response.json()
        task_id = result['taskId']
        print(f'Generation started: {task_id}')
        
        # 2. Poll for completion
        while True:
            status_response = requests.get(
                f'{base_url}/api/veo/status/{task_id}',
                headers=headers
            )
            
            status = status_response.json()
            print(f'Status: {status["status"]}')
            
            if status['status'] == 'completed':
                # 3. Get download URL
                download_response = requests.get(
                    f'{base_url}/api/veo/download/{task_id}',
                    headers=headers
                )
                
                download = download_response.json()
                print(f'Video ready: {download["videos"][0]["url"]}')
                break
                
            if status['status'] == 'failed':
                print(f'Generation failed: {status["error"]}')
                break
                
            # Wait 10 seconds before checking again
            time.sleep(10)
            
    except Exception as e:
        print(f'Error: {e}')

generate_video()

What's Next?

Now that you've generated your first video, explore more features

Need Help?

If you run into any issues during setup or have questions about the API: