Sora 2 Pro — Text to Video
curl --request POST \
--url https://api.muvi.video/v1/jobs/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"input": {
"prompt": "<string>",
"aspect_ratio": "<string>",
"duration": "<string>",
"resolution": "<string>"
}
}
'import requests
url = "https://api.muvi.video/v1/jobs/submit"
payload = {
"model": "<string>",
"input": {
"prompt": "<string>",
"aspect_ratio": "<string>",
"duration": "<string>",
"resolution": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
input: {
prompt: '<string>',
aspect_ratio: '<string>',
duration: '<string>',
resolution: '<string>'
}
})
};
fetch('https://api.muvi.video/v1/jobs/submit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"jobId": "<string>",
"status": "<string>",
"estimatedCompletionTime": "<string>",
"costMicroCents": 123
}Sora 2 Pro
Sora 2 Pro — Text to Video
Generate premium quality videos from text prompts using OpenAI’s Sora 2 Pro model
POST
/
v1
/
jobs
/
submit
Sora 2 Pro — Text to Video
curl --request POST \
--url https://api.muvi.video/v1/jobs/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"input": {
"prompt": "<string>",
"aspect_ratio": "<string>",
"duration": "<string>",
"resolution": "<string>"
}
}
'import requests
url = "https://api.muvi.video/v1/jobs/submit"
payload = {
"model": "<string>",
"input": {
"prompt": "<string>",
"aspect_ratio": "<string>",
"duration": "<string>",
"resolution": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
input: {
prompt: '<string>',
aspect_ratio: '<string>',
duration: '<string>',
resolution: '<string>'
}
})
};
fetch('https://api.muvi.video/v1/jobs/submit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"jobId": "<string>",
"status": "<string>",
"estimatedCompletionTime": "<string>",
"costMicroCents": 123
}Generate premium quality videos from text descriptions with OpenAI’s Sora 2 Pro model. Supports resolution upscaling and multiple duration options.
| Property | Value |
|---|---|
| Provider | OpenAI |
| Model | Sora 2 Pro |
| Capability | Text to Video |
| Base Cost | 300,000 micro-cents/second ($0.30/sec) |
| Processing Time | ~240 seconds |
Request Body
string
required
Model slug. Use
openai/sora-2-pro/text-to-video for text-to-video generation.object
required
Input parameters for text-to-video generation.
string
HTTPS URL to receive a webhook notification when the job completes or fails.
Pricing
Base cost: 300,000 micro-cents per second ($0.30/sec)finalCost = baseCost × duration × resolution
| Factor | Option | Multiplier |
|---|---|---|
| Duration | 4 | 4x |
8 | 8x | |
12 | 12x | |
| Resolution | 720p | 1x |
1080p | 1.67x |
Default cost: 4 seconds, 720p = 300,000 × 4 × 1 = 1,200,000 micro-cents ($1.20)
Response
string
Unique identifier for the submitted job.
string
Initial job status. Always
"pending" on successful submission.string
ISO 8601 timestamp of the estimated completion time.
number
The cost of the job in micro-cents.
Code Examples
curl -X POST https://api.muvi.video/v1/jobs/submit \
-H "Authorization: Bearer $PIXELBYTE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/sora-2-pro/text-to-video",
"input": {
"prompt": "A cinematic shot of a castle on a cliff during a thunderstorm",
"aspect_ratio": "16:9",
"duration": "8",
"resolution": "1080p"
}
}'
import requests
response = requests.post(
"https://api.muvi.video/v1/jobs/submit",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"model": "openai/sora-2-pro/text-to-video",
"input": {
"prompt": "A cinematic shot of a castle on a cliff during a thunderstorm",
"aspect_ratio": "16:9",
"duration": "8",
"resolution": "1080p"
}
}
)
data = response.json()
print(data)
const response = await fetch("https://api.muvi.video/v1/jobs/submit", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "openai/sora-2-pro/text-to-video",
input: {
prompt: "A cinematic shot of a castle on a cliff during a thunderstorm",
aspect_ratio: "16:9",
duration: "8",
resolution: "1080p"
}
})
});
const data = await response.json();
console.log(data);
