API reference
Videos
Creates a video generation with one of 11 models. Options differ by model — see Models or GET /models. When the video starts from a character or a prompt, Orior first generates a starting frame (included in the price as one image).
The request returns 202 with a queued generation. Videos typically take 1–6 minutes.
Provide at least one of prompt, character_id, character_image, start_frame or (Motion Control) motion_video.
Body
- modelstringrequired
seedance-2.5,seedance-2.0,seedance-2.0-mini,kling-3.0,kling-3.0-motion-control,wan-2.6,minimax-h3,gemini-omni,grok-imagine-1.5,veo-3,veo-3-fast. - promptstring
Motion, action and camera direction. Maximum length depends on the model (5,000–20,000).
- character_idstring
Character to feature; a first frame is generated from it.
- character_imagestring (media)
A face to use without saving a character. Upload ID (
upl_…), publichttps://URL, or base64 data URL. - product_idstring
Product to feature (combine with
character_idfor product-in-hand). - start_framestring (media)
Exact first frame. Upload ID (
upl_…), publichttps://URL, or base64 data URL. - reference_imagesarray
Extra tagged references to mention in the prompt (e.g. “wearing the jacket from @ref1”). Up to 8; each model receives up to its own limit, the rest shape the first frame.
- tagstring
Tag used in the prompt,
@+ up to 20 letters/digits/underscores. Defaults to@ref1,@ref2, … - imagestring (media)required
Upload ID (
upl_…), publichttps://URL, or base64 data URL.
- narration_audiostring (media)
Voice-over/audio reference for models that use it. Upload ID (
upl_…), publichttps://URL, or base64 data URL. - durationstring
Seconds, as allowed by the model (e.g. "8").
- resolutionstring
As allowed by the model (e.g. 720p, 1080p, 2K, 4k). For kling-3.0: 720p = standard, 1080p = pro.
- aspect_ratiostring
As allowed by the model.
adaptivefollows the first frame. - audioboolean
Generate sound (models with audio support).
- motion_videostring (media)
kling-3.0-motion-control only (required): a 1–30 s clip whose movement is transferred. Priced per measured second.
- motion_orientationstringdefault: video
kling-3.0-motion-control only: follow the orientation of the
videoor theimage.
Errors
| Code | When |
|---|---|
VALIDATION_ERROR | Unknown model, option not offered by the model, prompt too long, or motion_video missing/too long. |
INSUFFICIENT_CREDITS | Balance below the price. |
CONCURRENCY_LIMIT | Too many API jobs running. |
Request
curl -X POST https://api.oriorai.com/v1/videos \
-H "Authorization: Bearer $ORIOR_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"prompt": "She turns to camera and laughs, handheld",
"character_id": "Qx8p2LmN4vRt",
"duration": "8",
"resolution": "720p",
"aspect_ratio": "9:16",
"audio": true
}'const response = await fetch('https://api.oriorai.com/v1/videos', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.ORIOR_API_KEY}`,
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
"model": "seedance-2.5",
"prompt": "She turns to camera and laughs, handheld",
"character_id": "Qx8p2LmN4vRt",
"duration": "8",
"resolution": "720p",
"aspect_ratio": "9:16",
"audio": true
}),
})
const data = await response.json()
if (!response.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os, uuid
import requests
response = requests.post(
"https://api.oriorai.com/v1/videos",
headers={"Authorization": f"Bearer {os.environ['ORIOR_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
json={
"model": "seedance-2.5",
"prompt": "She turns to camera and laughs, handheld",
"character_id": "Qx8p2LmN4vRt",
"duration": "8",
"resolution": "720p",
"aspect_ratio": "9:16",
"audio": True,
},
timeout=60,
)
response.raise_for_status()
data = response.json()Response · 202
{
"id": "gen_7f3c9a1e2b4d4c8f9a0b1c2d3e4f5a6b",
"object": "generation",
"type": "video",
"model": "seedance-2.5",
"status": "queued",
"credits": 46,
"refunded_credits": 0,
"result": null,
"error": null,
"request": {
"model": "seedance-2.5",
"prompt": "She turns to camera and laughs, handheld",
"character_id": "Qx8p2LmN4vRt",
"product_id": null,
"duration": "8",
"resolution": "720p",
"aspect_ratio": "9:16",
"audio": true,
"has_start_frame": false,
"reference_images": 0,
"motion_video_seconds": null
},
"timeline": [],
"created_at": 1758620000000,
"completed_at": null
}