Sora Pro 创建并产出 - TimRouter API 中转端点
▼
Authorization
在发起请求头中加入配置项 Authorization,其值为 Bearer 之后拼接 Token
用例:
Authorization: Bearer ********************
入参配置
发起请求头配置项
Content-Type
string
必须传入
用例: application/json
Accept
string
必须传入
用例: application/json
Authorization
string
非必须传入
用例: Bearer {{YOUR_API_KEY}}
发起请求体配置项 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.timrouter.com/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.timrouter.com/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.timrouter.com/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.timrouter.com/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.timrouter.com/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.timrouter.com/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.timrouter.com")
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.timrouter.com/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.timrouter.com/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.timrouter.com/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.timrouter.com/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.timrouter.com/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.timrouter.com/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.timrouter.com/v1/video/create"), headers: headers, body: body);
print(response.body);
library(httr)
url <- "https://api.timrouter.com/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
}