Skip to content
API Reference

Veo

Veo is an advanced AI video generation model series supporting text-to-video and image-to-video generation, with audio ("sound on") output.

POST https://llm.siraya.ai/v1/videos/generations

Supported Models

Model ID Description
veo-3.1-generate-001 Veo 3.1 video generation, with sound on
Authorization string Required
Your API Key (e.g., `Bearer `).

Body

model string Required
The model ID: `veo-3.1-generate-001`.
prompt string Required
A text description for the video content.
seconds integer Default: 8
The duration of the video in seconds. Possible enum values: 4, 6, 8. Any other value is rejected with a `400` at submit. `duration` is not a supported field; use `seconds`.
seed integer
Random seed for reproducibility. The same seed produces the same video.
image_url string
(Optional) Input image URL for image-to-video generation.
size string
Pixel dimensions, e.g. 1280x720. A standard size resolves to resolution + aspect_ratio; if you send both, they must agree with size or the request returns a 400.
resolution string
Output resolution: 720p, 1080p, or 4k. Other values are rejected.
aspect_ratio string Default: "16:9"
Aspect ratio: 16:9 (landscape) or 9:16 (portrait).
generate_audio boolean
Generate an AI audio track for the video.
frame_images array
First-frame and/or last-frame control. Each item has a `frame_type` (`first_frame` or `last_frame`) and an `image_url`.
input_references array
Soft-guidance references (image / video / audio). Each item has a `type`, a `url`, and an optional `role`.
extra_body map[string]any
Specific parameters.
negative_prompt string
Negative prompt describing content to exclude.
async boolean Default: false
When false, the request waits for generation to finish and returns the completed video URL. When true, it returns immediately with a video id you poll for status. See Asynchronous generation.
callbackUrl string
Only used when async is true. An http(s) URL the router will POST to once generation completes (or fails), so you don't have to poll.
curl https://llm.siraya.ai/v1/videos/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API_KEY>" \
  -d '{
    "model": "veo-3.1-generate-001",
    "prompt": "A cute baby sea otter"
  }'
import requests

url = "https://llm.siraya.ai/v1/videos/generations"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <API_KEY>"
}
data = {
    "model": "veo-3.1-generate-001",
    "prompt": "A cute baby sea otter"
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

Example Response

{
    "created": 1760347750,
    "data": [
        {
            "url": "https://resources.siraya.ai/v1/videos/video_n6Sn-1aIT3z8x.../content"
        }
    ],
    "error": {}
}

With "async": true the status response for Veo has no output_url; download the result from GET /v1/videos/{video_id}/content. See Asynchronous generation.