sora-video · v1.0 · 2026-08-09 · sha256 52d4f433c7f224ee
sora-video v1.0A
Immutable. This exact content is served forever at /api/v1/blob/52d4f433c7f224ee.
---
name: sora-video
description: Generate AI videos with OpenAI Sora via AceDataCloud API. Use when creating videos from text prompts, generating videos from reference images, or using character references from existing videos. Supports text-to-video, image-to-video, and character-driven generation with multiple models and resolutions.
license: Apache-2.0
metadata:
author: acedatacloud
version: "1.0"
compatibility: Requires ACEDATACLOUD_API_TOKEN in .env file (see _shared/authentication.md). Optionally pair with mcp-sora for tool-use.
---
# Sora Video Generation
Generate AI videos through AceDataCloud's OpenAI Sora API.
> **Setup:** See [authentication](../_shared/authentication.md) for token setup.
## Quick Start
```bash
curl -X POST https://api.acedata.cloud/sora/videos \
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"prompt": "a golden retriever running on a beach at sunset", "model": "sora-2", "callback_url": "https://api.acedata.cloud/health"}'
```
> **Async:** See [async task polling](../_shared/async-tasks.md). Poll via `POST /sora/tasks` with `{"id": "..."}`.
## Models
| Model | Duration | Quality | Best For |
|-------|----------|---------|----------|
| `sora-2` | 10–15s | Standard | Most tasks (default) |
| `sora-2-pro` | 10–25s | Higher | Premium quality, longer videos |
## Workflows
### 1. Text-to-Video
```json
POST /sora/videos
{
"prompt": "a busy Tokyo street at night with neon signs reflecting in rain puddles",
"model": "sora-2",
"size": "small",
"duration": 10,
"orientation": "landscape"
}
```
### 2. Image-to-Video
Use reference images to guide generation.
```json
POST /sora/videos
{
"prompt": "the scene gradually comes alive with gentle motion",
"image_urls": ["https://example.com/scene.jpg"],
"model": "sora-2",
"orientation": "landscape"
}
```
### 3. Character-Driven Video
Extract a character from an existing video and use them in a new scene.
```json
POST /sora/videos
{
"prompt": "the character walks through a futuristic city",
"character_url": "https://example.com/source-video.mp4",
"character_start": 2,
"character_end": 5,
"model": "sora-2-pro"
}
```
## Parameters
| Parameter | Values | Description |
|-----------|--------|-------------|
| `model` | `"sora-2"`, `"sora-2-pro"` | Model to use (required) |
| `size` | `"small"`, `"large"`, `"720x1280"`, `"1280x720"`, `"1024x1792"`, `"1792x1024"` | Video resolution |
| `duration` | `4`, `8`, `10`, `12`, `15`, `25` | Duration in seconds (25 only with sora-2-pro; version 2.0 supports 4/8/12) |
| `orientation` | `"landscape"` (16:9), `"portrait"` (9:16) | Video orientation — version 1.0 only |
| `version` | `"1.0"` (default), `"2.0"` | API version. `1.0` enables duration up to 25s, `orientation`, character references and image inputs; `2.0` uses pixel `size` values and drops `orientation` |
## Gotchas
- Duration of **25 seconds** is only available with `sora-2-pro` model
- `size: "large"` produces higher resolution but costs more and takes longer
- Character-driven generation requires `character_start` and `character_end` timestamps (in seconds) from the source video
- `orientation` sets the aspect ratio — use `"portrait"` for mobile-first content
- Task states use `"succeeded"` (not "completed") — check for this value when polling
> **MCP:** `pip install mcp-sora` | Hosted: `https://sora.mcp.acedata.cloud/mcp` | See [all MCP servers](../_shared/mcp-servers.md)