Generate videos from text prompts using Sora. Async job-based endpoint — submit a job, poll for results.
POST https://api.agilecloud.ai/v1/video/generations # Submit job GET https://api.agilecloud.ai/v1/video/generations/:id # Poll status
| Parameter | Type | Required | Description |
|---|---|---|---|
| model | string | No | Default: sora |
| prompt | string | Yes | Text description of the video to generate |
| size | string | No | 480p, 720p, 1080p. Default: 720p |
| duration | integer | No | Duration in seconds (1–20). Default: 5 |
| n | integer | No | Number of videos (1–4). Default: 1 |
Submit a video generation job:
curl -X POST https://api.agilecloud.ai/v1/video/generations \
-H "Authorization: Bearer $DIRECTAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sora",
"prompt": "A drone shot flying over a mountain lake at sunrise",
"size": "1080p",
"duration": 10
}'Response (202 Accepted)
{
"id": "vgen_abc123",
"status": "pending",
"model": "sora",
"created": 1719000000
}Poll for results:
curl https://api.agilecloud.ai/v1/video/generations/vgen_abc123 \ -H "Authorization: Bearer $DIRECTAI_API_KEY"
Response (completed)
{
"id": "vgen_abc123",
"status": "completed",
"model": "sora",
"created": 1719000000,
"data": [
{
"url": "https://...",
"revised_prompt": "A cinematic drone shot..."
}
]
}import httpx
import time
BASE = "https://api.agilecloud.ai"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
# Submit job
resp = httpx.post(f"{BASE}/v1/video/generations", headers=HEADERS, json={
"model": "sora",
"prompt": "A drone shot flying over a mountain lake at sunrise",
"size": "1080p",
"duration": 10,
})
job = resp.json()
print("Job submitted:", job["id"])
# Poll until complete
while job["status"] in ("pending", "processing"):
time.sleep(5)
resp = httpx.get(f"{BASE}/v1/video/generations/{job['id']}", headers=HEADERS)
job = resp.json()
print("Status:", job["status"])
if job["status"] == "completed":
print("Video URL:", job["data"][0]["url"])
else:
print("Failed:", job.get("error"))| Status | Description |
|---|---|
| pending | Job queued, waiting for processing |
| processing | Video is being generated |
| completed | Video ready — check data array |
| failed | Generation failed — check error field |