Veo3.1 Video API
Create async KIE Veo3.1 video tasks through Xenodia and poll them with the normalized task API.
Use POST /v1/videos/generations for public Veo3.1 video generation on Xenodia.
Video generation is task-only. Submit a request, store the task ID, then poll Task Retrieval.
Endpoint
POST https://api.xenodia.xyz/v1/videos/generationsPOST /v1/video/generations is also registered as a compatibility alias. Prefer the plural /v1/videos/generations path in new integrations.
Text-to-video request
{
"model": "veo3_fast",
"prompt": "A cinematic close-up of a developer dashboard showing model routing and API latency.",
"generationType": "TEXT_2_VIDEO",
"aspect_ratio": "16:9",
"resolution": "720p"
}Reference-to-video request
{
"model": "veo3_fast",
"prompt": "Animate the reference into a polished product walkthrough.",
"generationType": "REFERENCE_2_VIDEO",
"imageUrls": [
"https://example.com/reference-1.png",
"https://example.com/reference-2.png"
],
"aspect_ratio": "16:9",
"resolution": "1080p"
}Supported public models
| Xenodia model | Upstream KIE model | Notes |
|---|---|---|
veo3 | veo3 | Quality model. |
veo3_fast | veo3_fast | Fast model and default. Required for REFERENCE_2_VIDEO. |
veo3_lite | veo3_lite | Lite model. |
Generation types
| Type | Reference rule |
|---|---|
TEXT_2_VIDEO | No imageUrls. |
FIRST_AND_LAST_FRAMES_2_VIDEO | Requires 1-2 imageUrls. |
REFERENCE_2_VIDEO | Requires 1-3 imageUrls and only supports veo3_fast. |
Parameters
| Field | Notes |
|---|---|
prompt | Required text prompt. |
imageUrls | Optional public image URLs. Maximum 3. |
model | veo3, veo3_fast, or veo3_lite. |
generationType | Optional mode. If omitted, upstream behavior is inferred from imageUrls. |
aspect_ratio | 16:9, 9:16, or Auto. Defaults to 16:9. |
resolution | 720p, 1080p, or 4k. Defaults to 720p. |
seeds | Optional integer from 10000 to 99999. |
enableFallback | Optional deprecated KIE fallback switch. Passed through when provided. |
enableTranslation | Optional boolean. Defaults to enabled. |
watermark | Optional watermark text. |
callBackUrl | Optional upstream callback URL. Polling through Xenodia task retrieval remains supported. |
Pricing
Veo3.1 is not token priced. Xenodia bills one fixed amount per accepted video task, selected by the request resolution.
| Resolution | Billing unit |
|---|---|
720p | Per generated video |
1080p | Per generated video |
4k | Per generated video |
Query /v1/models before building price-sensitive UI. The model capability payload exposes capabilities.pricing.mode = "resolution" and one price tier each for 720p, 1080p, and 4k.
Response
The response returns a Xenodia media task envelope. Poll the task until it reaches success or fail.
{
"task_id": "task_123",
"object": "task",
"model": "veo3_fast",
"type": "video",
"state": "waiting",
"created_at": 1760000000,
"poll_url": "/v1/tasks/task_123",
"recommended_poll_interval_ms": 5000
}When polling succeeds, the task result contains generated video URLs:
{
"task_id": "task_123",
"state": "success",
"result": {
"created": 1760000100,
"data": [
{
"url": "https://cdn.example.com/video.mp4"
}
],
"resolution": "720p"
},
"progress": 100,
"poll_url": "/v1/tasks/task_123"
}Common error statuses are 400 for invalid model-specific parameter combinations, 401 for missing or invalid keys, 402 for billing boundaries, and 502 for upstream task creation failures.