Integrate sora-2-pro through the media task API. Request examples, parameters, authentication and result handling.
/v1/tasksMODELsora-2-proThis model is retired on this platform. This guide remains available for historical integrations; check the live catalog before calling.
Code examples & responses
/v1/taskscurl "https://newrouters.com/v1/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
--data '{
"model": "sora-2-pro",
"input": {
"seconds": 4,
"resolution": "720p",
"aspect_ratio": "16:9",
"prompt": "A small red house in a quiet garden"
}
}'const apiBaseUrl = "https://newrouters.com";
const apiKey = process.env.API_KEY;
if (!apiKey) throw new Error("Set API_KEY in your server environment");
const response = await fetch(apiBaseUrl + "/v1/tasks", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + apiKey
},
body: JSON.stringify({
"model": "sora-2-pro",
"input": {
"seconds": 4,
"resolution": "720p",
"aspect_ratio": "16:9",
"prompt": "A small red house in a quiet garden"
}
})
});
const result = await response.json();
if (!response.ok) throw new Error(JSON.stringify(result));
console.log(result);import json
import os
from urllib.request import Request, urlopen
api_base_url = "https://newrouters.com"
api_key = os.environ["API_KEY"]
body = json.loads("{\"model\":\"sora-2-pro\",\"input\":{\"seconds\":4,\"resolution\":\"720p\",\"aspect_ratio\":\"16:9\",\"prompt\":\"A small red house in a quiet garden\"}}")
request = Request(
api_base_url + "/v1/tasks",
data=json.dumps(body).encode("utf-8"),
headers={
"Content-Type": "application/json",
"Authorization": "Bearer " + api_key
},
method="POST",
)
with urlopen(request) as response:
print(json.load(response))The API origin is filled in. Set API_KEY before running. Examples never submit automatically.
202Task accepted
{
"id": "TASK_ID",
"status": "pending",
"model": "sora-2-pro",
"result": null,
"error": null
}200Successful result
{
"id": "TASK_ID",
"status": "succeeded",
"model": "sora-2-pro",
"result": {
"assets": [
"https://example.com/output.mp4"
]
},
"error": null
}- Create a task01
POST /v1/tasksSubmit model + input. Save the returned task id.
202 · pending - Poll status02
GET /v1/tasks/{id}Wait and poll again while pending or processing.
Wait → poll again - Read the outcome03
result.assets[] / errorRead the result for the terminal task state.
succeeded→ assetsfailed→ error
Use the exact API model ID sora-2-pro. This guide describes the platform contract; check the live catalog before calling the model.
Historical platform request (not current official availability)
Section titled “Historical platform request (not current official availability)”The platform origin is filled in at build time. Set API_KEY to your server-side key before running.
curl "https://newrouters.com/v1/tasks" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $API_KEY" \ --data '{ "model": "sora-2-pro", "input": { "seconds": 4, "resolution": "720p", "aspect_ratio": "16:9", "prompt": "A small red house in a quiet garden" }}'Retrieve the result
Section titled “Retrieve the result”The creation response accepts a task, not the final output. Replace TASK_ID with its returned ID and poll until succeeded or failed.
curl "https://newrouters.com/v1/tasks/TASK_ID" \ -H "Authorization: Bearer $API_KEY"Read result on success and error on failure. Keep the original task ID when the upstream outcome is unknown; do not submit a duplicate paid generation.
Parameters
Section titled “Parameters”| Field | Type | Requirement | Default | Constraints |
|---|---|---|---|---|
images | array | Optional | — | max items 1 |
prompt | string | Required | — | max length 100000 |
seconds | integer | Optional | 4 | min 1 |
resolution | enum | Optional | "720p" | 720p |
aspect_ratio | enum | Optional | "16:9" | 16:9, 9:16 |
Official sources and identity
Section titled “Official sources and identity”Checked: 2026-09-27 · Platform model: sora-2-pro · Official reference: sora-2-pro
Pricing and troubleshooting
Section titled “Pricing and troubleshooting”Check current availability, contract and account pricing before integration. Keep request IDs and usage receipts when diagnosing errors. Complete API reference