curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A golden retriever running on grass, sunny day",
"duration": 4,
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "Make this dog come alive, running on grass",
"image_urls": ["https://example.com/dog.jpg"],
"duration": 4,
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A cute cartoon elephant",
"aspect_ratio": "16:9",
"duration": 4,
"metadata": {
"style": "anime",
"watermark": false
}
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A small frog dancing on a bright stage",
"duration": 4,
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A cat and a dog driving a car together @duksvfkf.cruisingki @zdqwahgj.baronbarki",
"duration": 4,
"aspect_ratio": "16:9"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "sora-2-vvip",
"prompt": "A golden retriever running on grass, sunny day",
"duration": 4,
"aspect_ratio": "16:9",
"metadata": {
"style": "anime",
"watermark": False,
"n": 2
}
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'sora-2-vvip',
prompt: 'A golden retriever running on grass, sunny day',
duration: 4,
aspect_ratio: '16:9',
metadata: {
style: 'anime',
watermark: false,
n: 2
}
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "video_01K8SGYNNNVBQTXNR4MM964S7K",
"object": "generation.task",
"model": "sora-2-vvip",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {
"size": "720x720"
}
}
Sora2
Sora2 VVIP 비디오 생성
Generate high-quality videos using the sora-2-vvip model
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A golden retriever running on grass, sunny day",
"duration": 4,
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "Make this dog come alive, running on grass",
"image_urls": ["https://example.com/dog.jpg"],
"duration": 4,
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A cute cartoon elephant",
"aspect_ratio": "16:9",
"duration": 4,
"metadata": {
"style": "anime",
"watermark": false
}
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A small frog dancing on a bright stage",
"duration": 4,
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A cat and a dog driving a car together @duksvfkf.cruisingki @zdqwahgj.baronbarki",
"duration": 4,
"aspect_ratio": "16:9"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "sora-2-vvip",
"prompt": "A golden retriever running on grass, sunny day",
"duration": 4,
"aspect_ratio": "16:9",
"metadata": {
"style": "anime",
"watermark": False,
"n": 2
}
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'sora-2-vvip',
prompt: 'A golden retriever running on grass, sunny day',
duration: 4,
aspect_ratio: '16:9',
metadata: {
style: 'anime',
watermark: false,
n: 2
}
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "video_01K8SGYNNNVBQTXNR4MM964S7K",
"object": "generation.task",
"model": "sora-2-vvip",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {
"size": "720x720"
}
}
중국 본토 사용자 안내: 중국 본토 사용자는
https://toapis.cn 를 API 엔드포인트(Base URL)로 사용해 주세요. 본 문서의 예시에서 https://toapis.com 을 https://toapis.cn 로 바꿔 주세요.sora-2-vvipvideo generation model- Supports text-to-video, image-to-video, and character reference
- Async task management, query results by task ID
Important Change: For better performance and cost control, we no longer support passing base64 image data directly in
image_urls. Please use the Upload 이미지 API first to upload images and get URLs, then call this endpoint.Authorizations
string
필수
All endpoints require Bearer Token authenticationGet your API Key from the API Key Management PageAdd to request header:
Authorization: Bearer YOUR_API_KEY
Body
string
기본값:"sora-2-vvip"
필수
Video generation model nameSupported model:
sora-2-vvip - VVIP version with fixed duration tiersExample: "sora-2-vvip"string
필수
Text description for video generation💡 @Character Reference Feature:You can use
@username format in the prompt to reference previously created characters and include them in the generated video.- The character’s
usernamecan be obtained via the Query Character API - Supports referencing multiple characters at once
"A cat and a dog driving a car together @duksvfkf.cruisingki @zdqwahgj.baronbarki"integer
Video duration in secondsSupports only
4, 8, or 12 secondsExample: 4string
Video aspect ratioSupported formats:
16:9(Landscape)9:16(Portrait)
string[]
Array of reference image URLs for image-to-video generation⚠️ URL format only (base64 no longer supported)
- Publicly accessible image URL (http:// or https://)
- You can use the Upload 이미지 API to upload local images and get URLs
boolean
Whether to generate a video thumbnail
true- Generate a video thumbnail for preview and display
integer
기본값:"1"
Number of different variants to generateRange: 1-4Default:
1boolean
기본값:"false"
Whether to add a watermark to the generated video
false- No watermarktrue- Add Sora official watermark to the video
falseboolean
기본값:"false"
Whether to enable privacy mode
true- Video will not be published and cannot be remixed (re-edited)false- Video can be published and remixed
falsestring
Video styleSupported values:
thanksgiving- Thanksgiving stylecomic- Comic stylenews- News styleselfie- Selfie stylenostalgic- Nostalgic/Retro styleanime- Anime style
"anime"boolean
Whether to use storyboard for finer control over video generation details
true- Enable storyboard featurefalse- Do not use storyboard
truestring
Reference video URL for character extractionUsed to reuse characters from a reference video in the generated videoExample:
"https://filesystem.site/cdn/20251030/javYrU4etHVFDqg8by7mViTWHlMOZy.mp4"⚠️ Note: When using this parameter, the generated video duration will be reduced by 1 secondstring
Character appearance timestampsSpecifies the time range in the reference video where the character appears, only supports 2-second segmentsFormat:
"start_second,end_second"Example: "1,3" means the character from second 1 to second 3 in the reference video⚠️ Note: When using this parameter, the generated video duration will be reduced by 1 secondboolean
기본값:"false"
Automatically create a character from the generated video after completion
true- Automatically create characterfalse- Do not create character
falsestring
Create a character from an already generated task IDReference a previously generated video task ID to extract characters from that videoExample:
"video_01K8SGYNNNVBQTXNR4MM964S7K"응답
string
Unique task identifier for status queries
string
Object type, always
generation.taskstring
모델 name used
string
Task status
queued- Queued for processingin_progress- Processingcompleted- Successfully completedfailed- Failed
integer
Task progress percentage (0-100)
integer
Task creation timestamp (Unix timestamp)
object
Task metadata
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A golden retriever running on grass, sunny day",
"duration": 4,
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "Make this dog come alive, running on grass",
"image_urls": ["https://example.com/dog.jpg"],
"duration": 4,
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A cute cartoon elephant",
"aspect_ratio": "16:9",
"duration": 4,
"metadata": {
"style": "anime",
"watermark": false
}
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A small frog dancing on a bright stage",
"duration": 4,
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2-vvip",
"prompt": "A cat and a dog driving a car together @duksvfkf.cruisingki @zdqwahgj.baronbarki",
"duration": 4,
"aspect_ratio": "16:9"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "sora-2-vvip",
"prompt": "A golden retriever running on grass, sunny day",
"duration": 4,
"aspect_ratio": "16:9",
"metadata": {
"style": "anime",
"watermark": False,
"n": 2
}
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'sora-2-vvip',
prompt: 'A golden retriever running on grass, sunny day',
duration: 4,
aspect_ratio: '16:9',
metadata: {
style: 'anime',
watermark: false,
n: 2
}
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "video_01K8SGYNNNVBQTXNR4MM964S7K",
"object": "generation.task",
"model": "sora-2-vvip",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {
"size": "720x720"
}
}