curl --request POST \
--url https://toapis.com/v1/videos/task_01K8SGYNNNVBQTXNR4MM964S7K/remix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2",
"prompt": "Add a puppy playing in the scene",
"duration": 15,
"aspect_ratio": "16:9"
}'
import requests
video_id = "task_01K8SGYNNNVBQTXNR4MM964S7K"
response = requests.post(
f"https://toapis.com/v1/videos/{video_id}/remix",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "sora-2",
"prompt": "Add a puppy playing in the scene",
"duration": 15,
"aspect_ratio": "16:9"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const videoId = 'task_01K8SGYNNNVBQTXNR4MM964S7K';
const response = await fetch(`https://toapis.com/v1/videos/${videoId}/remix`, {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'sora-2',
prompt: 'Add a puppy playing in the scene',
duration: 15,
aspect_ratio: '16:9'
})
});
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",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {
"size": "720x720"
}
}
Sora2
Sora2 Video Remix
Edit and modify generated videos
POST
/
v1
/
videos
/
{video_id}
/
remix
curl --request POST \
--url https://toapis.com/v1/videos/task_01K8SGYNNNVBQTXNR4MM964S7K/remix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2",
"prompt": "Add a puppy playing in the scene",
"duration": 15,
"aspect_ratio": "16:9"
}'
import requests
video_id = "task_01K8SGYNNNVBQTXNR4MM964S7K"
response = requests.post(
f"https://toapis.com/v1/videos/{video_id}/remix",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "sora-2",
"prompt": "Add a puppy playing in the scene",
"duration": 15,
"aspect_ratio": "16:9"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const videoId = 'task_01K8SGYNNNVBQTXNR4MM964S7K';
const response = await fetch(`https://toapis.com/v1/videos/${videoId}/remix`, {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'sora-2',
prompt: 'Add a puppy playing in the scene',
duration: 15,
aspect_ratio: '16:9'
})
});
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",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {
"size": "720x720"
}
}
Note for users in mainland China: Please use
https://toapis.cn as the API endpoint (Base URL). Replace https://toapis.com with https://toapis.cn in the examples in this document.- Sora2 video remix feature
- Remix and edit existing generated videos
- Supports secondary creation based on existing videos
- Asynchronous processing mode, returns task ID for subsequent queries
Path Parameters
string
required
Original video task IDThis is the task ID returned from a previous video generation request
Authorizations
string
required
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
default:"sora-2"
required
Video remix model nameSupported models:
sora-2- Standard versionsora-2-pro- Professional version, supports longer durationsora-2-vip- VIP version, higher priority
"sora-2" or "sora-2-pro"string
required
Remix instruction description
integer
Video duration in seconds
sora-2: Supports 10 or 15 secondssora-2-pro: Supports 15 seconds (HD) or 25 seconds
15string
Video aspect ratioSupported ratios:
16:9- Standard widescreen (recommended)9:16- Portrait mode1:1- Square
"16:9"Response
string
Unique task identifier for status queries
string
Object type, always
generation.taskstring
Model 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/task_01K8SGYNNNVBQTXNR4MM964S7K/remix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "sora-2",
"prompt": "Add a puppy playing in the scene",
"duration": 15,
"aspect_ratio": "16:9"
}'
import requests
video_id = "task_01K8SGYNNNVBQTXNR4MM964S7K"
response = requests.post(
f"https://toapis.com/v1/videos/{video_id}/remix",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "sora-2",
"prompt": "Add a puppy playing in the scene",
"duration": 15,
"aspect_ratio": "16:9"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const videoId = 'task_01K8SGYNNNVBQTXNR4MM964S7K';
const response = await fetch(`https://toapis.com/v1/videos/${videoId}/remix`, {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'sora-2',
prompt: 'Add a puppy playing in the scene',
duration: 15,
aspect_ratio: '16:9'
})
});
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",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {
"size": "720x720"
}
}