Sora Pro 创建 - QuickRouter API 中转接口
▼
Authorization
在 Header 添加参数 Authorization,其值为 Bearer 之后拼接 Token
示例:
Authorization: Bearer ********************
请求参数
Header 参数
Content-Type
string
必需
示例: application/json
Accept
string
必需
示例: application/json
Authorization
string
可选
示例: Bearer {{YOUR_API_KEY}}
Body 参数 application/json
images
array[string]
可选
图片链接 必需
model
string
可选
模型名字 必需
orientation
string
必需
portrait 竖屏 landscape 横屏
prompt
string
可选
提示词 必需
size
string
必需
large 高清1080p
duration
integer
可选
支持 15,25 必需
watermark
boolean
必需
默认为: true 会优先无水印,如果出错,会兜底到有水印 传递 false 的话 会强制让视频无水印,遇到去水印错误的会一直自动重试
private
boolean
必需
是否隐藏视频,true-视频不会发布,同时视频无法进行 remix(二次编辑), 默认为 false { "images": [], "model": "sora-2-pro", "orientation": "portrait", "prompt": "make animate", "size": "large", "duration": 15, "watermark": false, "private": true } 请求
示例
{
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
}
请求示例代码
curl --location --request POST 'https://api.quickrouter.ai/v1/video/create' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
}'
var myHeaders = new Headers();
myHeaders.append("Accept", "application/json");
myHeaders.append("Authorization", "Bearer YOUR_API_KEY");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api.quickrouter.ai/v1/video/create", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import java.io.*;
import java.net.*;
import java.util.*;
URL url = new URL("https://api.quickrouter.ai/v1/video/create");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("Authorization", "Bearer YOUR_API_KEY");
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);
String jsonInputString = "{
\"images\": [],
\"model\": \"sora-2-pro\",
\"orientation\": \"portrait\",
\"prompt\": \"make animate\",
\"size\": \"large\",
\"duration\": 15,
\"watermark\": false,
\"private\": true
}";
try(OutputStream os = conn.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
}
int responseCode = conn.getResponseCode();
System.out.println("Response Code: " + responseCode);
import Foundation
let urlString = "https://api.quickrouter.ai/v1/video/create"
guard let url = URL(string: urlString) else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.addValue("Bearer YOUR_API_KEY", forHTTPHeaderField: "Authorization")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let httpBody = "{
\"images\": [],
\"model\": \"sora-2-pro\",
\"orientation\": \"portrait\",
\"prompt\": \"make animate\",
\"size\": \"large\",
\"duration\": 15,
\"watermark\": false,
\"private\": true
}"
request.httpBody = httpBody.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data {
print(String(data: data, encoding: .utf8)!)
}
}
task.resume()
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
body := strings.NewReader(`{
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
}`)
req, _ := http.NewRequest("POST", "https://api.quickrouter.ai/v1/video/create", body)
req.Header.Set("Accept", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
bodyBytes, _ := io.ReadAll(resp.Body)
fmt.Println(string(bodyBytes))
}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.quickrouter.ai/v1/video/create',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
}',
CURLOPT_HTTPHEADER => array(
"Accept: application/json",
"Authorization: Bearer YOUR_API_KEY",
"Content-Type: application/json",
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import http.client
import json
conn = http.client.HTTPSConnection("api.quickrouter.ai")
payload = json.dumps({
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
})
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
}
conn.request("POST", "/v1/video/create", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
POST https://api.quickrouter.ai/v1/video/create HTTP/1.1
Accept: application/json
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
}
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.quickrouter.ai/v1/video/create");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "Authorization: Bearer YOUR_API_KEY");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{
\"images\": [],
\"model\": \"sora-2-pro\",
\"orientation\": \"portrait\",
\"prompt\": \"make animate\",
\"size\": \"large\",
\"duration\": 15,
\"watermark\": false,
\"private\": true
}");
CURLcode ret = curl_easy_perform(hnd);
var client = new RestClient("https://api.quickrouter.ai/v1/video/create");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("Authorization", "Bearer YOUR_API_KEY");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", @"{
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
#import <Foundation/Foundation.h>
NSURL *url = [NSURL URLWithString:@"https://api.quickrouter.ai/v1/video/create"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"Bearer YOUR_API_KEY" forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:[@"{
\"images\": [],
\"model\": \"sora-2-pro\",
\"orientation\": \"portrait\",
\"prompt\": \"make animate\",
\"size\": \"large\",
\"duration\": 15,
\"watermark\": false,
\"private\": true
}" dataUsingEncoding:NSUTF8StringEncoding]];
NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
}];
[task resume];
require "uri"
require "net/http"
require "json"
url = URI("https://api.quickrouter.ai/v1/video/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept"] = "application/json"
request["Authorization"] = "Bearer YOUR_API_KEY"
request["Content-Type"] = "application/json"
request.body = '{
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
}'
response = http.request(request)
puts response.read_body
(* Requires cohttp and lwt *)
let url = "https://api.quickrouter.ai/v1/video/create" in
let headers = Cohttp.Header.of_list [
("Accept", "application/json");
("Authorization", "Bearer YOUR_API_KEY");
("Content-Type", "application/json");
] in
let body = Cohttp_lwt.Body.of_string '{
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
}' in
Lwt_main.run (
Cohttp_lwt_unix.Client.request ?body:(Some body) ~method_:`POST ~headers (Uri.of_string url)
>>= fun (resp, body) ->
Cohttp_lwt.Body.to_string body >|= fun s -> print_endline s
)
import 'package:http/http.dart' as http;
import 'dart:convert';
var headers = {
"Accept": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
};
var body = json.encode({
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
});
var response = await http.post(Uri.parse("https://api.quickrouter.ai/v1/video/create"), headers: headers, body: body);
print(response.body);
library(httr)
url <- "https://api.quickrouter.ai/v1/video/create"
body <- '{
"images": [],
"model": "sora-2-pro",
"orientation": "portrait",
"prompt": "make animate",
"size": "large",
"duration": 15,
"watermark": false,
"private": true
}'
response <- post(url, body = body, add_headers("Accept" = "application/json", "Authorization" = "Bearer YOUR_API_KEY", "Content-Type" = "application/json"))
content(response, "text", encoding = "UTF-8")
返回响应
响应参数 🟢 200 OK · application/json
id
string
必需
object
string
必需
created
integer
必需
choices
array [object]
必需
index
integer
可选
message
object
可选
finish_reason
string
可选
usage
object
必需
prompt_tokens
integer
必需
completion_tokens
integer
必需
total_tokens
integer
必需
{ "id": "sora-2:task_01k9009g8ef1esae6388chgcpx", "status": "pending", "status_update_time": 1762010645686 }
示例
{
"id": "sora-2:task_01k9009g8ef1esae6388chgcpx",
"status": "pending",
"status_update_time": 1762010645686
}