Skip to main content

Video generation API

Describe a clip in plain words, choose a model, a duration and a frame shape, and get back an MP4 file with a soundtrack. OmevAI plans the shots and camera movement from your description; you choose only what is listed below. The price is known before you start, and you pay only for a clip that is delivered.

Access is enabled on request

The Video API is switched on per key. Write to support@omev.be to enable it. The same models are available in the web cabinet, see Video generation in the cabinet.

Video is asynchronous: create a job, check its status, download the finished file. All calls use the usual host https://llmapi.omev.be and your OmevAI API key.

Models and prices​

modelBest forDurationresolutionYou can sendPrice per second
omev-video-litesimple scenes, low price4–12 s768ptext; text and a first frame$0.039
omev-videopeople, complex motion, camera movement, several actions4–15 s720p (default), 1080ptext; text and a first frame720p $0.069 · 1080p $0.135
omev-video-premiumpremium quality, clips up to 30 s4–30 s720p (default), 1080ptext; text and a first frame; text and up to 5 reference imagestext or first frame: 720p $0.075 · 1080p $0.15; with reference images: 720p $0.11 · 1080p $0.22

Frame shapes (aspect_ratio): omev-video-lite takes 16:9, 21:9, 4:3, 1:1, 3:4, 9:16; omev-video and omev-video-premium take 16:9, 4:3, 1:1, 3:4, 9:16.

The price of a clip is the price per second multiplied by the duration you order. An 8-second omev-video clip in 720p costs 8 × $0.069 = $0.552, in 1080p $1.08. An 8-second omev-video-premium clip in 720p costs $0.60 from text or a first frame and $0.88 with reference images.

1. Create a job​

curl -sS https://llmapi.omev.be/v1/videos/generations \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "omev-video",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "9:16",
"prompt": "A ceramic mug on a wooden table in morning light, the camera slowly circles the mug",
"idempotency_key": "order-2026-10-12-0001"
}'
FieldRequiredValues
modelyesomev-video-lite, omev-video or omev-video-premium
promptyesthe description of the clip, up to 4,000 characters
durationyeswhole seconds within the model's range
aspect_rationoa frame shape the model takes, default 16:9
resolutionno720p or 1080p for omev-video and omev-video-premium; omev-video-lite is always 768p
imagenoa public https link to the first frame (all three models); it must open without a login
referencesnoup to 5 public https links to reference images: a character, a product, a logo or a style; omev-video-premium only, and not together with image
idempotency_keyrecommendedyour own order number, up to 100 characters; repeating it returns the same job and does not charge again

seed, fps, steps, cfg and provider are not accepted (400): OmevAI chooses them.

The answer is 202 with the job:

{
"id": "vid_0f3c2a9e8b7d4c6a1e5f2b3c",
"object": "video.generation",
"model": "omev-video",
"status": "queued",
"duration": 8,
"aspect_ratio": "9:16",
"resolution": "720p",
"price_usd": 0.552,
"access_token": "…"
}

Before the job starts, the price is reserved on the key's balance. When the clip is delivered it is charged; when the generation fails the reservation is released. Keep id and access_token: the token is needed to read the status and download the file. If the answer was lost, send the same request with the same idempotency_key to get the same id and token.

2. Check the status​

curl -sS https://llmapi.omev.be/v1/videos/generations/$ID \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "X-Omev-Video-Token: $TOKEN"

Without the token, or with another job's token, the answer is 404. Poll every 10–15 seconds.

statusMeaning
queued, preprocessingthe job is accepted and the description is being turned into a shot plan
generatingthe clip is being made; phase shows provider_queued (waiting for a slot), generating or saving
processinga rare extra check on our side; keep polling
succeededdone: video.url is the download link
failednot done: error.code and error.message say why; the reservation is released

3. Download the clip​

curl -sS -L -o clip.mp4 https://llmapi.omev.be/v1/videos/generations/$ID/content \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "X-Omev-Video-Token: $TOKEN"

The answer is the MP4 file with a soundtrack. Download it as soon as the job succeeds and keep it in your own storage.

Full cycle in Python​

import os, time, requests

BASE = "https://llmapi.omev.be"
auth = {"Authorization": f"Bearer {os.environ['OMEV_API_KEY']}"}

job = requests.post(f"{BASE}/v1/videos/generations", headers=auth, timeout=60, json={
"model": "omev-video-lite", "duration": 6, "aspect_ratio": "1:1",
"prompt": "A cup of hot coffee, steam rising, soft light",
"idempotency_key": "order-0002"}).json()

read = {**auth, "X-Omev-Video-Token": job["access_token"]}
while True:
status = requests.get(f"{BASE}/v1/videos/generations/{job['id']}", headers=read, timeout=60).json()
if status["status"] in ("succeeded", "failed"):
break
time.sleep(15)

if status["status"] == "succeeded":
clip = requests.get(f"{BASE}{status['video']['url']}", headers=read, timeout=600)
open("clip.mp4", "wb").write(clip.content)
else:
print(status["error"])

Free lookups​

  • GET /v1/videos/models: the models with their durations, resolutions, frame shapes and prices per second.
  • GET /v1/videos/price?model=omev-video&duration=8&resolution=1080p: the price of one clip, for example {"price_usd": 1.08, "per_second_usd": 0.135, …}. For omev-video-premium with reference images add &references=1.

Time and limits​

  • A 4-second clip usually takes about 2 minutes with omev-video-lite and omev-video-premium and 10–20 seconds with omev-video. Longer clips take longer.
  • An account can have up to 2 unfinished video jobs at a time; a third one answers 429.
  • Regenerating and rating a clip are available in the web cabinet. Through the API, create a new job for a new attempt.
  • Requests that break the content policy are refused before any charge.

Errors​

CodeMeaningWhat to do
400a duration outside the model's range, a frame shape or resolution the model does not take, a first frame together with reference images, reference images for a model other than omev-video-premium, or a parameter that is not acceptedcorrect the request using error.message
401missing or invalid API keycheck the key
402the key's balance is lower than the price of the cliptop up the balance
403video is not enabled for the keywrite to support
404unknown job, or a missing or wrong X-Omev-Video-Tokencheck the id and the token
409the idempotency_key was already used with other parameters, or the combination is temporarily unavailableuse a new order number; for unavailability, retry later
4292 video jobs are already runningwait until one of them ends
5xxtemporary errorretry with the same idempotency_key after 10–30 seconds

See Errors and retries for the common format.