cURL
curl --request POST \
--url https://api.ttapi.io/bfl/v1/flux-3-video \
--header 'Content-Type: application/json' \
--header 'TT-API-KEY: <api-key>' \
--data '
{
"prompt": "<string>",
"mode": "t2v",
"aspect_ratio": "auto",
"duration": "auto",
"resolution": "hd",
"version": "latest",
"generate_audio": true,
"safety_tolerance": 2,
"draft": false,
"webhook_url": "<string>"
}
'import requests
url = "https://api.ttapi.io/bfl/v1/flux-3-video"
payload = {
"prompt": "<string>",
"mode": "t2v",
"aspect_ratio": "auto",
"duration": "auto",
"resolution": "hd",
"version": "latest",
"generate_audio": True,
"safety_tolerance": 2,
"draft": False,
"webhook_url": "<string>"
}
headers = {
"TT-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'TT-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: '<string>',
mode: 't2v',
aspect_ratio: 'auto',
duration: 'auto',
resolution: 'hd',
version: 'latest',
generate_audio: true,
safety_tolerance: 2,
draft: false,
webhook_url: '<string>'
})
};
fetch('https://api.ttapi.io/bfl/v1/flux-3-video', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ttapi.io/bfl/v1/flux-3-video",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => '<string>',
'mode' => 't2v',
'aspect_ratio' => 'auto',
'duration' => 'auto',
'resolution' => 'hd',
'version' => 'latest',
'generate_audio' => true,
'safety_tolerance' => 2,
'draft' => false,
'webhook_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"TT-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ttapi.io/bfl/v1/flux-3-video"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"mode\": \"t2v\",\n \"aspect_ratio\": \"auto\",\n \"duration\": \"auto\",\n \"resolution\": \"hd\",\n \"version\": \"latest\",\n \"generate_audio\": true,\n \"safety_tolerance\": 2,\n \"draft\": false,\n \"webhook_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("TT-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.ttapi.io/bfl/v1/flux-3-video")
.header("TT-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"mode\": \"t2v\",\n \"aspect_ratio\": \"auto\",\n \"duration\": \"auto\",\n \"resolution\": \"hd\",\n \"version\": \"latest\",\n \"generate_audio\": true,\n \"safety_tolerance\": 2,\n \"draft\": false,\n \"webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ttapi.io/bfl/v1/flux-3-video")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["TT-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"<string>\",\n \"mode\": \"t2v\",\n \"aspect_ratio\": \"auto\",\n \"duration\": \"auto\",\n \"resolution\": \"hd\",\n \"version\": \"latest\",\n \"generate_audio\": true,\n \"safety_tolerance\": 2,\n \"draft\": false,\n \"webhook_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "SUCCESS",
"message": "success",
"data": {
"jobId": "jobId"
}
}{
"status": "FAILED",
"message": "\"prompt\" cannot be empty.",
"data": {}
}{
"status": "FAILED",
"message": "Wrong TT-API-KEY or email is not activated."
}FLUX 3
使用 FLUX 3 生成视频
使用 BFL 官方格式通过 FLUX 3 生成视频。支持文生视频、图像/关键帧生成视频、视频续接以及草稿增强工作流。官方文档
POST
/
bfl
/
v1
/
flux-3-video
cURL
curl --request POST \
--url https://api.ttapi.io/bfl/v1/flux-3-video \
--header 'Content-Type: application/json' \
--header 'TT-API-KEY: <api-key>' \
--data '
{
"prompt": "<string>",
"mode": "t2v",
"aspect_ratio": "auto",
"duration": "auto",
"resolution": "hd",
"version": "latest",
"generate_audio": true,
"safety_tolerance": 2,
"draft": false,
"webhook_url": "<string>"
}
'import requests
url = "https://api.ttapi.io/bfl/v1/flux-3-video"
payload = {
"prompt": "<string>",
"mode": "t2v",
"aspect_ratio": "auto",
"duration": "auto",
"resolution": "hd",
"version": "latest",
"generate_audio": True,
"safety_tolerance": 2,
"draft": False,
"webhook_url": "<string>"
}
headers = {
"TT-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'TT-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: '<string>',
mode: 't2v',
aspect_ratio: 'auto',
duration: 'auto',
resolution: 'hd',
version: 'latest',
generate_audio: true,
safety_tolerance: 2,
draft: false,
webhook_url: '<string>'
})
};
fetch('https://api.ttapi.io/bfl/v1/flux-3-video', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ttapi.io/bfl/v1/flux-3-video",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => '<string>',
'mode' => 't2v',
'aspect_ratio' => 'auto',
'duration' => 'auto',
'resolution' => 'hd',
'version' => 'latest',
'generate_audio' => true,
'safety_tolerance' => 2,
'draft' => false,
'webhook_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"TT-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ttapi.io/bfl/v1/flux-3-video"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"mode\": \"t2v\",\n \"aspect_ratio\": \"auto\",\n \"duration\": \"auto\",\n \"resolution\": \"hd\",\n \"version\": \"latest\",\n \"generate_audio\": true,\n \"safety_tolerance\": 2,\n \"draft\": false,\n \"webhook_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("TT-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.ttapi.io/bfl/v1/flux-3-video")
.header("TT-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"mode\": \"t2v\",\n \"aspect_ratio\": \"auto\",\n \"duration\": \"auto\",\n \"resolution\": \"hd\",\n \"version\": \"latest\",\n \"generate_audio\": true,\n \"safety_tolerance\": 2,\n \"draft\": false,\n \"webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ttapi.io/bfl/v1/flux-3-video")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["TT-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"<string>\",\n \"mode\": \"t2v\",\n \"aspect_ratio\": \"auto\",\n \"duration\": \"auto\",\n \"resolution\": \"hd\",\n \"version\": \"latest\",\n \"generate_audio\": true,\n \"safety_tolerance\": 2,\n \"draft\": false,\n \"webhook_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "SUCCESS",
"message": "success",
"data": {
"jobId": "jobId"
}
}{
"status": "FAILED",
"message": "\"prompt\" cannot be empty.",
"data": {}
}{
"status": "FAILED",
"message": "Wrong TT-API-KEY or email is not activated."
}请求体
application/json
- 文生视频
- 图生视频
- 视频续接
- 草稿增强
用于描述视频内容的自由格式提示词。
允许的值:"t2v"
输出视频的宽高比。auto 表示根据提示词以及输入的参考内容自动选择。
可用选项:
auto, 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 视频时长,单位为秒。支持 5 到 20 秒之间的任意整数,也可以设置为 auto 以根据内容自动确定时长。
必填范围:
5 <= x <= 20视频分辨率级别:hd,或 fhd(由视频超分辨率处理器完成更高分辨率的输出)。具体尺寸会根据宽高比有所不同。
可用选项:
hd, fhd 接口版本。latest 表示使用当前版本。
可用选项:
latest 示例:
"latest"
是否在生成视频的同时生成与视频同步的音频。
输入和输出内容安全审核的容忍度等级。取值范围为 0 到 4,其中 0 最严格。无论请求的容忍度设置为何,色情内容最高允许等级为 3,仇恨内容最高允许等级为 2。系统可能会根据上下文安全信号进一步收紧所请求的等级。
必填范围:
0 <= x <= 4草稿模式:快速生成预览,并在结果中返回一个 draft_cache 下载 URL。下载该缓存包后,可以在之后的请求中将其传回,以生成相同内容的完整质量版本。
TTAPI 异步回调地址。初始响应会返回 jobId;可以通过该回调地址或 Flux 查询接口获取最终视频结果。
最后修改于 2026年8月8日
⌘I