curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux_3_video",
"params": {
"mode": "i2v",
"prompt": "Generate natural, coherent motion and camera movement between two keyframes while keeping the subject appearance consistent",
"image_url": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"video_length": 5,
"resolution": "fhd",
"aspect_ratio": "1:1",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_i2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux_3_video",
"params": {
"mode": "v2v",
"prompt": "Continue the source video’s movement direction, composition, and lighting so the shot naturally transitions into the next forest scene",
"video_url": "https://example.com/source-video.mp4",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "auto",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_v2v_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": True,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "flux_3_video",
params: {
mode: "t2v",
prompt: "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
video_length: 5,
resolution: "hd",
aspect_ratio: "16:9",
generate_audio: true,
safety_tolerance: 2
},
out_task_id: "flux_3_video_t2v_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "flux_3_video",
"params": map[string]interface{}{
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2,
},
"out_task_id": "flux_3_video_t2v_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "flux_3_video",
"params" => [
"mode" => "t2v",
"prompt" => "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length" => 5,
"resolution" => "hd",
"aspect_ratio" => "16:9",
"generate_audio" => true,
"safety_tolerance" => 2
],
"out_task_id" => "flux_3_video_t2v_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://aireiter.com/api/openapi/submit")
payload = {
model: "flux_3_video",
params: {
mode: "t2v",
prompt: "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
video_length: 5,
resolution: "hd",
aspect_ratio: "16:9",
generate_audio: true,
safety_tolerance: 2
},
out_task_id: "flux_3_video_t2v_123456"
}
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://aireiter.com/api/openapi/submit")!
let payload: [String: Any] = [
"model": "flux_3_video",
"params": [
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
],
"out_task_id": "flux_3_video_t2v_123456"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://aireiter.com/api/openapi/submit";
var payload = @"
{
""model"": ""flux_3_video"",
""params"": {
""mode"": ""t2v"",
""prompt"": ""Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps"",
""video_length"": 5,
""resolution"": ""hd"",
""aspect_ratio"": ""16:9"",
""generate_audio"": true,
""safety_tolerance"": 2
},
""out_task_id"": ""flux_3_video_t2v_123456""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
const char *url = "https://aireiter.com/api/openapi/submit";
const char *payload = "{\"model\":\"flux_3_video\",\"params\":{\"mode\":\"t2v\",\"prompt\":\"Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps\",\"video_length\":5,\"resolution\":\"hd\",\"aspect_ratio\":\"16:9\",\"generate_audio\":true,\"safety_tolerance\":2},\"out_task_id\":\"flux_3_video_t2v_123456\"}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSURL *url = [NSURL URLWithString:@"https://aireiter.com/api/openapi/submit"];
NSDictionary *payload = @{
@"model": @"flux_3_video",
@"params": @{
@"mode": @"t2v",
@"prompt": @"Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
@"video_length": @5,
@"resolution": @"hd",
@"aspect_ratio": @"16:9",
@"generate_audio": @YES,
@"safety_tolerance": @2
},
@"out_task_id": @"flux_3_video_t2v_123456"
};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:payload
options:0
error:&error];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"Bearer <token>" forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
return;
}
NSString *result = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@", result);
}];
[task resume];
[[NSRunLoop mainRunLoop] run];
}
return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix
let url = "https://aireiter.com/api/openapi/submit"
let payload = {|{
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}|}
let () =
let headers = Header.init ()
|> fun h -> Header.add h "Authorization" "Bearer <token>"
|> fun h -> Header.add h "Content-Type" "application/json"
in
let body = Cohttp_lwt.Body.of_string payload in
let response = Client.post ~headers ~body (Uri.of_string url) >>= fun (resp, body) ->
body |> Cohttp_lwt.Body.to_string >|= fun body_str ->
print_endline body_str
in
Lwt_main.run response
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://aireiter.com/api/openapi/submit');
final payload = {
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://aireiter.com/api/openapi/submit"
payload <- list(
model = "flux_3_video",
params = list(
mode = "t2v",
prompt = "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
video_length = 5,
resolution = "hd",
aspect_ratio = "16:9",
generate_audio = TRUE,
safety_tolerance = 2
),
out_task_id = "flux_3_video_t2v_123456"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "flux_3_video_t2v_123456",
"status": "pending",
"estimated_credits": 100,
"created_at": "2025-12-22T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
FLUX 3 Video
FLUX 3 Video Video Generation
- Black Forest Labs multimodal video generation model
- Supports text-to-video, ordered keyframes, and video continuation
- Supports 5-20 seconds, HD/FHD output, and native audio
- Asynchronous processing mode, returns a task ID for subsequent queries
POST
/
api
/
openapi
/
submit
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux_3_video",
"params": {
"mode": "i2v",
"prompt": "Generate natural, coherent motion and camera movement between two keyframes while keeping the subject appearance consistent",
"image_url": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"video_length": 5,
"resolution": "fhd",
"aspect_ratio": "1:1",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_i2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux_3_video",
"params": {
"mode": "v2v",
"prompt": "Continue the source video’s movement direction, composition, and lighting so the shot naturally transitions into the next forest scene",
"video_url": "https://example.com/source-video.mp4",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "auto",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_v2v_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": True,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "flux_3_video",
params: {
mode: "t2v",
prompt: "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
video_length: 5,
resolution: "hd",
aspect_ratio: "16:9",
generate_audio: true,
safety_tolerance: 2
},
out_task_id: "flux_3_video_t2v_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "flux_3_video",
"params": map[string]interface{}{
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2,
},
"out_task_id": "flux_3_video_t2v_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "flux_3_video",
"params" => [
"mode" => "t2v",
"prompt" => "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length" => 5,
"resolution" => "hd",
"aspect_ratio" => "16:9",
"generate_audio" => true,
"safety_tolerance" => 2
],
"out_task_id" => "flux_3_video_t2v_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://aireiter.com/api/openapi/submit")
payload = {
model: "flux_3_video",
params: {
mode: "t2v",
prompt: "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
video_length: 5,
resolution: "hd",
aspect_ratio: "16:9",
generate_audio: true,
safety_tolerance: 2
},
out_task_id: "flux_3_video_t2v_123456"
}
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://aireiter.com/api/openapi/submit")!
let payload: [String: Any] = [
"model": "flux_3_video",
"params": [
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
],
"out_task_id": "flux_3_video_t2v_123456"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://aireiter.com/api/openapi/submit";
var payload = @"
{
""model"": ""flux_3_video"",
""params"": {
""mode"": ""t2v"",
""prompt"": ""Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps"",
""video_length"": 5,
""resolution"": ""hd"",
""aspect_ratio"": ""16:9"",
""generate_audio"": true,
""safety_tolerance"": 2
},
""out_task_id"": ""flux_3_video_t2v_123456""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
const char *url = "https://aireiter.com/api/openapi/submit";
const char *payload = "{\"model\":\"flux_3_video\",\"params\":{\"mode\":\"t2v\",\"prompt\":\"Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps\",\"video_length\":5,\"resolution\":\"hd\",\"aspect_ratio\":\"16:9\",\"generate_audio\":true,\"safety_tolerance\":2},\"out_task_id\":\"flux_3_video_t2v_123456\"}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSURL *url = [NSURL URLWithString:@"https://aireiter.com/api/openapi/submit"];
NSDictionary *payload = @{
@"model": @"flux_3_video",
@"params": @{
@"mode": @"t2v",
@"prompt": @"Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
@"video_length": @5,
@"resolution": @"hd",
@"aspect_ratio": @"16:9",
@"generate_audio": @YES,
@"safety_tolerance": @2
},
@"out_task_id": @"flux_3_video_t2v_123456"
};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:payload
options:0
error:&error];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"Bearer <token>" forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
return;
}
NSString *result = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@", result);
}];
[task resume];
[[NSRunLoop mainRunLoop] run];
}
return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix
let url = "https://aireiter.com/api/openapi/submit"
let payload = {|{
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}|}
let () =
let headers = Header.init ()
|> fun h -> Header.add h "Authorization" "Bearer <token>"
|> fun h -> Header.add h "Content-Type" "application/json"
in
let body = Cohttp_lwt.Body.of_string payload in
let response = Client.post ~headers ~body (Uri.of_string url) >>= fun (resp, body) ->
body |> Cohttp_lwt.Body.to_string >|= fun body_str ->
print_endline body_str
in
Lwt_main.run response
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://aireiter.com/api/openapi/submit');
final payload = {
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://aireiter.com/api/openapi/submit"
payload <- list(
model = "flux_3_video",
params = list(
mode = "t2v",
prompt = "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
video_length = 5,
resolution = "hd",
aspect_ratio = "16:9",
generate_audio = TRUE,
safety_tolerance = 2
),
out_task_id = "flux_3_video_t2v_123456"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "flux_3_video_t2v_123456",
"status": "pending",
"estimated_credits": 100,
"created_at": "2025-12-22T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
The model name for FLUX 3 Video in AIReiter is
flux_3_video. It currently supports three modes: text-to-video, ordered keyframes, and video continuation.Authorizations
string
required
All endpoints require Bearer Token authentication.Visit the API Key management page to get your API Key, and add the following to the request header:
Authorization: Bearer YOUR_API_KEY
Body
string
required
Model name, fixed value:
flux_3_video
object
required
Model parameters object.
Show Properties of the params Object
Show Properties of the params Object
string
default:"t2v"
Generation mode:
t2v- text-to-video, generate video using only a prompti2v- ordered keyframes, use 1-10 images to control video content and transitionsv2v- video continuation, continue generating dynamic content from a source video
string
required
Text description for video generation.It is recommended to describe the subject, scene, action, camera movement, visual style, dialogue, and ambient sound.
string | string[]
Ordered keyframe image URLs, used only in
i2v mode.- Supports 1-10 publicly accessible images
- The image order is the playback order
- The first and last images can be used to define the start and end frames of the video
i2v mode must provide at least one image; do not pass this parameter in other modes.string | string[]
Source video URL, used only in
v2v mode.Currently, only one publicly accessible MP4 video is supported at most. When passed as an array, only the first URL is used.v2v mode must provide a source video; do not pass this parameter in other modes.integer
default:"5"
Output video duration, in seconds.Supports integers from
5 to 20.string
default:"hd"
Output quality:
hd- HDfhd- FHD
FHD has more pixels than HD, and the exact output size varies by aspect ratio.
string
default:"auto"
Video aspect ratio:
auto- Automatic21:9- Ultrawide2:1- Wide screen16:9- Landscape4:3- Standard landscape1:1- Square3:4- Standard portrait9:16- Portrait
boolean
default:"true"
Whether to generate native audio synchronized with the video.Can include dialogue, ambient sound, and sound effects.
integer
default:"2"
Content safety tolerance, supports integers from
0 to 4.0- Strictest filtering4- Most permissive setting
string
required
Initiator task ID.Generated by the caller and guaranteed to be unique. Use this ID later to query the task status and results.
Response
string
The initiator’s task ID, which can be used to query the result.
string
Initial status, usually
"pending".string
Creation time, in ISO 8601 format.
Query Task
FLUX 3 Video uses asynchronous processing. After submission succeeds, use the sameout_task_id to query the task:
curl --request POST \
--url https://aireiter.com/api/openapi/query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"out_task_id": "flux_3_video_task_123456"
}'
output array in the Response will contain the generated video URL. For complete fields, see Get Task Status.
Request Examples
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux_3_video",
"params": {
"mode": "i2v",
"prompt": "Generate natural, coherent motion and camera movement between two keyframes while keeping the subject appearance consistent",
"image_url": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"video_length": 5,
"resolution": "fhd",
"aspect_ratio": "1:1",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_i2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux_3_video",
"params": {
"mode": "v2v",
"prompt": "Continue the source video’s movement direction, composition, and lighting so the shot naturally transitions into the next forest scene",
"video_url": "https://example.com/source-video.mp4",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "auto",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_v2v_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": True,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "flux_3_video",
params: {
mode: "t2v",
prompt: "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
video_length: 5,
resolution: "hd",
aspect_ratio: "16:9",
generate_audio: true,
safety_tolerance: 2
},
out_task_id: "flux_3_video_t2v_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "flux_3_video",
"params": map[string]interface{}{
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2,
},
"out_task_id": "flux_3_video_t2v_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "flux_3_video",
"params" => [
"mode" => "t2v",
"prompt" => "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length" => 5,
"resolution" => "hd",
"aspect_ratio" => "16:9",
"generate_audio" => true,
"safety_tolerance" => 2
],
"out_task_id" => "flux_3_video_t2v_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://aireiter.com/api/openapi/submit")
payload = {
model: "flux_3_video",
params: {
mode: "t2v",
prompt: "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
video_length: 5,
resolution: "hd",
aspect_ratio: "16:9",
generate_audio: true,
safety_tolerance: 2
},
out_task_id: "flux_3_video_t2v_123456"
}
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://aireiter.com/api/openapi/submit")!
let payload: [String: Any] = [
"model": "flux_3_video",
"params": [
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
],
"out_task_id": "flux_3_video_t2v_123456"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://aireiter.com/api/openapi/submit";
var payload = @"
{
""model"": ""flux_3_video"",
""params"": {
""mode"": ""t2v"",
""prompt"": ""Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps"",
""video_length"": 5,
""resolution"": ""hd"",
""aspect_ratio"": ""16:9"",
""generate_audio"": true,
""safety_tolerance"": 2
},
""out_task_id"": ""flux_3_video_t2v_123456""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
const char *url = "https://aireiter.com/api/openapi/submit";
const char *payload = "{\"model\":\"flux_3_video\",\"params\":{\"mode\":\"t2v\",\"prompt\":\"Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps\",\"video_length\":5,\"resolution\":\"hd\",\"aspect_ratio\":\"16:9\",\"generate_audio\":true,\"safety_tolerance\":2},\"out_task_id\":\"flux_3_video_t2v_123456\"}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSURL *url = [NSURL URLWithString:@"https://aireiter.com/api/openapi/submit"];
NSDictionary *payload = @{
@"model": @"flux_3_video",
@"params": @{
@"mode": @"t2v",
@"prompt": @"Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
@"video_length": @5,
@"resolution": @"hd",
@"aspect_ratio": @"16:9",
@"generate_audio": @YES,
@"safety_tolerance": @2
},
@"out_task_id": @"flux_3_video_t2v_123456"
};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:payload
options:0
error:&error];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"Bearer <token>" forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
return;
}
NSString *result = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@", result);
}];
[task resume];
[[NSRunLoop mainRunLoop] run];
}
return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix
let url = "https://aireiter.com/api/openapi/submit"
let payload = {|{
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
}|}
let () =
let headers = Header.init ()
|> fun h -> Header.add h "Authorization" "Bearer <token>"
|> fun h -> Header.add h "Content-Type" "application/json"
in
let body = Cohttp_lwt.Body.of_string payload in
let response = Client.post ~headers ~body (Uri.of_string url) >>= fun (resp, body) ->
body |> Cohttp_lwt.Body.to_string >|= fun body_str ->
print_endline body_str
in
Lwt_main.run response
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://aireiter.com/api/openapi/submit');
final payload = {
"model": "flux_3_video",
"params": {
"mode": "t2v",
"prompt": "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
"video_length": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true,
"safety_tolerance": 2
},
"out_task_id": "flux_3_video_t2v_123456"
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://aireiter.com/api/openapi/submit"
payload <- list(
model = "flux_3_video",
params = list(
mode = "t2v",
prompt = "Cinematic tracking shot: a red fox walks through a misty forest, accompanied by natural ambient sounds and soft footsteps",
video_length = 5,
resolution = "hd",
aspect_ratio = "16:9",
generate_audio = TRUE,
safety_tolerance = 2
),
out_task_id = "flux_3_video_t2v_123456"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "flux_3_video_t2v_123456",
"status": "pending",
"estimated_credits": 100,
"created_at": "2025-12-22T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
Mode Rules
| mode | Required Assets | Asset Limitations |
|---|---|---|
t2v | None | Do not pass image_url or video_url |
i2v | image_url | 1-10 ordered images |
v2v | video_url | At most one source video |
Please ensure that the image and video URLs are directly accessible from the public internet. The task is processed asynchronously, so do not keep the HTTP connection from the submission request open while waiting for the final video.