注册

Sora Pro 创建 - QuickRouter API 中转接口

POST https://api.quickrouter.ai/v1/video/create 在线调试 →
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
}