Video Generation
Generate AI videos from text prompts using Google Veo 3.1 — the latest video generation model from Google DeepMind.
⏱️ Processing Time
Videos take 45 seconds to 5 minutes to generate depending on the model. Use
wait: true for sync mode, or poll the job status endpoint.
POST/v1/videos/generations
Request Body
| Parameter | Type | Required | Description |
|---|
model | string | No | Model to use (default: veo-3.1-fast-low) |
prompt | string | Yes | Text description of the video |
orientation | string | No | Video orientation (landscape, portrait) |
wait | boolean | No | Wait for completion (true) or return job ID (false) |
Available Video Models
| Model ID | Provider | Speed | Quality |
|---|
veo-3.1 | Google DeepMind | ~2-5 min | Highest |
veo-3.1-fast | Google DeepMind | ~1-2 min | High |
veo-3.1-fast-low | Google DeepMind | ~45s ⚡ | Good (recommended) |
grok-imagine-1.0-video | xAI | ~1-2 min | Good |
Sync Mode (wait for result)
curl https://api.zora.io.vn/v1/videos/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-fast-low",
"prompt": "Ocean waves crashing on a beach at sunset, cinematic 4K",
"orientation": "landscape",
"wait": true
}'
Response (200)
{
"id": "vid_lxyz789",
"status": "completed",
"video_url": "https://storage.googleapis.com/...",
"elapsed": 45,
"model": "veo-3.1-fast-low"
}
Async Mode (poll for result)
curl https://api.zora.io.vn/v1/videos/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-fast-low",
"prompt": "A golden retriever puppy running through a garden"
}'
Response (202)
{
"id": "vid_lxyz789",
"status": "processing",
"model": "veo-3.1-fast-low"
}
GET/v1/videos/generations/:idPoll until status is "completed" or "failed"
Poll Response
// Processing
{ "id": "vid_lxyz789", "status": "processing", "elapsed": 30 }
// Completed
{
"id": "vid_lxyz789",
"status": "completed",
"video_url": "https://storage.googleapis.com/...",
"elapsed": 45
}
Python Example
import requests, time
API = "https://api.zora.io.vn/v1"
HEADERS = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
# Start video generation
resp = requests.post(f"{API}/videos/generations", headers=HEADERS, json={
"model": "veo-3.1-fast-low",
"prompt": "A cat sleeping on a cozy blanket, 4K cinematic"
})
job = resp.json()
job_id = job["id"]
print(f"Job started: {job_id}")
# Poll for completion
while True:
status = requests.get(f"{API}/videos/generations/{job_id}", headers=HEADERS).json()
if status["status"] == "completed":
print(f"Video URL: {status['video_url']}")
break
elif status["status"] == "failed":
print(f"Failed: {status.get('error')}")
break
time.sleep(10)
print(f" Waiting... {status.get('elapsed', '?')}s")