Skip to content

Veo Video Generation

Google Veo is a high-performance video generation model from Google DeepMind. It produces high-quality, high-resolution videos from text descriptions or reference images, with smooth motion and rich detail.

Quick Start

Send a video generation request with cURL:

bash
curl -X POST https://open.dieyuyun.com/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3",
    "prompt": "A golden retriever running on the beach at sunset, cinematic quality",
    "size": "1280x720",
    "duration": 5
  }'

Endpoint

PropertyValue
MethodPOST
Path/v1/video/generations
Base URLhttps://open.dieyuyun.com
ProtocolOpenAI-compatible

Authentication

All requests must include your API key in the header:

http
Authorization: Bearer YOUR_API_KEY

Request Fields

FieldTypeRequiredDefaultDescription
modelstringYesModel identifier, e.g. veo-3
promptstringYesVideo description; include scene, action, and style details
sizestringNo1280x720Video resolution: 1280x720, 720x1280, or 1920x1080
durationintegerNo5Video duration in seconds: 5 or 8
imagestringNoReference image URL for image-to-video mode

Request Examples

bash
curl -X POST https://open.dieyuyun.com/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3",
    "prompt": "City nightscape with neon lights and traffic, aerial view",
    "size": "1920x1080",
    "duration": 8
  }'
python
import requests

response = requests.post(
    "https://open.dieyuyun.com/v1/video/generations",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    json={
        "model": "veo-3",
        "prompt": "City nightscape with neon lights and traffic, aerial view",
        "size": "1920x1080",
        "duration": 8
    }
)

task = response.json()
task_id = task["task_id"]
print(f"Task created: {task_id}")
javascript
const response = await fetch('https://open.dieyuyun.com/v1/video/generations', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'veo-3',
    prompt: 'City nightscape with neon lights and traffic, aerial view',
    size: '1920x1080',
    duration: 8,
  }),
})

const task = await response.json()
console.log('Task created:', task.task_id)

Response Format

Video generation is asynchronous. Submit a task to receive a task ID, then poll for results.

Task Creation Response

json
{
  "task_id": "task_abc123",
  "status": "queued",
  "progress": 0,
  "created_at": "2025-01-15T10:30:00Z"
}

Polling Task Status

bash
curl https://open.dieyuyun.com/v1/video/generations/task_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY"

Completed Task Response

json
{
  "task_id": "task_abc123",
  "status": "completed",
  "progress": 100,
  "metadata": {
    "url": "https://cdn.dieyuyun.com/videos/task_abc123.mp4",
    "duration": 8,
    "size": "1920x1080"
  },
  "completed_at": "2025-01-15T10:32:00Z"
}

Polling Example

python
import time
import requests

# Submit task
resp = requests.post(
    "https://open.dieyuyun.com/v1/video/generations",
    headers={"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"},
    json={"model": "veo-3", "prompt": "A cat playing the piano", "duration": 5}
)
task_id = resp.json()["task_id"]

# Poll for result
while True:
    status = requests.get(
        f"https://open.dieyuyun.com/v1/video/generations/{task_id}",
        headers={"Authorization": "Bearer YOUR_API_KEY"}
    ).json()

    if status["status"] == "completed":
        print(f"Video URL: {status['metadata']['url']}")
        break
    elif status["status"] == "failed":
        print("Generation failed")
        break

    time.sleep(5)

Best Practices

  1. Be specific in prompts: Clearly describe the scene, subject, action, lighting, and camera movement, e.g., "Aerial shot of a golden wheat field swaying gently in the breeze, warm sunset lighting"
  2. Choose duration wisely: Shorter durations (5s) generate faster and cost less — ideal for testing. Use 8s once you've confirmed the results
  3. Image-to-video: Providing a high-quality reference image significantly improves consistency and visual quality
  4. Async polling: Video generation typically takes 1–5 minutes. Poll every 5 seconds for status updates

Rate Limits

LimitValue
Requests/min5 RPM
Daily requests100/day
Concurrent tasks2

Need higher limits? Submit a ticket in the Console.