Xenodia Docs
API Reference

Veo3.1 Video API

Create async 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.

Route selection is optional. Use GET /v1/models to read the model's available_channels list, then pass channel_id when you want a specific public channel. If channel_id is omitted, Xenodia auto-selects an active channel that supports the model.

Endpoint

POST https://api.xenodia.xyz/v1/videos/generations

POST /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.1_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.1_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"
}

Veo3.1 imageUrls accepts public http or https image URLs only. Do not send local filesystem paths or asset://... IDs for Veo reference images. If your source image is local, upload it to your own public hosting first and send that public URL.

Supported public models

ModelNotes
veo3.1Quality model.
veo3.1_fastFast model and default. Required for REFERENCE_2_VIDEO.
veo3.1_liteLite model.

Generation types

TypeReference rule
TEXT_2_VIDEONo imageUrls.
FIRST_AND_LAST_FRAMES_2_VIDEORequires 1-2 imageUrls.
REFERENCE_2_VIDEORequires 1-3 imageUrls and only supports veo3.1_fast.

Parameters

FieldNotes
promptRequired text prompt.
imageUrlsOptional public http or https image URLs. Local paths and asset://... IDs are not accepted. Maximum 3.
modelveo3.1, veo3.1_fast, or veo3.1_lite.
channel_idOptional public route ID from /v1/models.available_channels. Omit it for automatic routing.
generationTypeOptional mode. If omitted, Xenodia infers the mode from imageUrls.
aspect_ratio16:9, 9:16, or Auto. Defaults to 16:9.
resolution720p, 1080p, or 4k. Defaults to 720p.
seedsOptional integer from 10000 to 99999.
enableFallbackOptional deprecated compatibility switch.
enableTranslationOptional boolean. Defaults to enabled.
watermarkOptional watermark text.
callBackUrlOptional completion 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.

ResolutionBilling unit
720pPer generated video
1080pPer generated video
4kPer 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.1_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, 424 for temporary media provider unavailability, and 502 for task creation failures.

On this page