For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
ModelsChatRankingsDocs
DocsAPI ReferenceClient SDKsAgent SDKCookbookChangelog
DocsAPI ReferenceClient SDKsAgent SDKCookbookChangelog
  • API Guides
    • Overview
    • Streaming
    • Embeddings
    • Limits
    • Authentication
    • Parameters
    • Errors and Debugging
  • API Reference
      • POSTSubmit a video generation request
      • GETPoll video generation status
      • GETDownload generated video content
      • GETList all video generation models
LogoLogo
ModelsChatRankingsDocs
API ReferenceVideo Generation

Submit a video generation request

POST
https://openrouter.ai/api/v1/videos
POST
/api/v1/videos
$curl -X POST https://openrouter.ai/api/v1/videos \
> -H "Authorization: Bearer <token>" \
> -H "Content-Type: application/json" \
> -d '{
> "model": "google/veo-3.1",
> "prompt": "A serene mountain landscape at sunset",
> "aspect_ratio": "16:9",
> "duration": 8,
> "resolution": "720p"
>}'
1{
2 "id": "job-abc123",
3 "polling_url": "/api/v1/videos/job-abc123",
4 "status": "pending",
5 "generation_id": "gen-xyz789"
6}
Submits a video generation request and returns a polling URL to check status
Was this page helpful?
Previous

Poll video generation status

Next
Built with

Authentication

AuthorizationBearer
API key as bearer token in Authorization header

Request

This endpoint expects an object.
modelstringRequired
promptstringRequired
aspect_ratioenumOptional
Aspect ratio of the generated video
callback_urlstringOptionalformat: "uri"

URL to receive a webhook notification when the video generation job completes. Overrides the workspace-level default callback URL if set. Must be HTTPS.

durationintegerOptional>=1
Duration of the generated video in seconds
frame_imageslist of objectsOptional

Images to use as the first and/or last frame of the generated video. Each image must specify a frame_type of first_frame or last_frame.

generate_audiobooleanOptional

Whether to generate audio alongside the video. Defaults to the endpoint’s generate_audio capability flag, false if not set.

input_referenceslist of objectsOptional
Reference images to guide video generation
providerobjectOptional

Provider-specific passthrough configuration

resolutionenumOptional
Resolution of the generated video
seedintegerOptional
If specified, the generation will sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed for all providers.
sizestringOptional

Exact pixel dimensions of the generated video in “WIDTHxHEIGHT” format (e.g. “1280x720”). Interchangeable with resolution + aspect_ratio.

Response

Video generation request accepted
idstring
polling_urlstring
statusenum
errorstring
generation_idstring
The generation ID associated with this video generation job. Available once the job has been processed.
unsigned_urlslist of strings
usageobject
Usage and cost information for the video generation. Available once the job has completed.

Errors

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
404
Not Found Error
429
Too Many Requests Error
500
Internal Server Error