curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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: "flow_music_upload",
params: {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
out_task_id: "flow_music_upload_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": "flow_music_upload",
"params": map[string]interface{}{
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
"out_task_id": "flow_music_upload_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": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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" => "flow_music_upload",
"params" => [
"audio_url" => "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
],
"out_task_id" => "flow_music_upload_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: "flow_music_upload",
params: {
audio_url: "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
out_task_id: "flow_music_upload_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": "flow_music_upload",
"params": [
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
],
"out_task_id": "flow_music_upload_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": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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\": \"flow_music_upload\", \"params\": {\"audio_url\": \"https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a\"}, \"out_task_id\": \"flow_music_upload_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": @"flow_music_upload",
@"params": @{
@"audio_url": @"https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
@"out_task_id": @"flow_music_upload_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": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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: "flow_music_upload",
params: {
audio_url: "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
out_task_id: "flow_music_upload_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 = "flow_music_upload",
params = list(
audio_url = "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
),
out_task_id = "flow_music_upload_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": "flow_music_upload_123456",
"status": "pending",
"created_at": "2026-08-28T07:44:48.000Z"
}
}
{
"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 recharge and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later"
}
}
Flow Music
Flow Music Upload
- Import public audio and replace clip_id for later editing
- Asynchronous processing mode returns a task ID for later querying
- If you only have a file and no clip_id, start with this step first
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": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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: "flow_music_upload",
params: {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
out_task_id: "flow_music_upload_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": "flow_music_upload",
"params": map[string]interface{}{
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
"out_task_id": "flow_music_upload_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": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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" => "flow_music_upload",
"params" => [
"audio_url" => "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
],
"out_task_id" => "flow_music_upload_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: "flow_music_upload",
params: {
audio_url: "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
out_task_id: "flow_music_upload_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": "flow_music_upload",
"params": [
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
],
"out_task_id": "flow_music_upload_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": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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\": \"flow_music_upload\", \"params\": {\"audio_url\": \"https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a\"}, \"out_task_id\": \"flow_music_upload_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": @"flow_music_upload",
@"params": @{
@"audio_url": @"https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
@"out_task_id": @"flow_music_upload_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": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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: "flow_music_upload",
params: {
audio_url: "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
out_task_id: "flow_music_upload_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 = "flow_music_upload",
params = list(
audio_url = "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
),
out_task_id = "flow_music_upload_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": "flow_music_upload_123456",
"status": "pending",
"created_at": "2026-08-28T07:44:48.000Z"
}
}
{
"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 recharge and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later"
}
}
Flow Music Upload’s model name in AIReiter is
flow_music_upload. It is used to turn external audio into an editable clip_id.Authorizations
string
required
All endpoints require Bearer Token authentication.Get the API Key:Visit API Key Management Page to get your API Key.When using it, add the following to the request header:
Authorization: Bearer YOUR_API_KEY
Body
string
required
Model name, fixed value:
flow_music_upload
object
required
Model parameter object.
Show params object properties
Show params object properties
string | string[]
required
The audio URL to import must be publicly accessible. If an array is provided, use the first item.Audio requirements:
- Format MP3, WAV, M4A
- Duration must not exceed 8 minutes
- No more than 20MB
string
required
Originating task ID.A user-defined task identifier. Required. Only letters, numbers, underscores, and hyphens are supported, with a length of 1-64 characters. You can use this ID later to query the task status and results.
Response
string
The requester task ID, which can be used to query the result.
string
Initial status, usually
"pending".string
Creation time, in ISO format.
Query Task
Flow Music Upload is an asynchronous audio import model. After submitting the task, useout_task_id to query the task status. When completed, output contains audio and the new clip_id.
string
required
The initiator task ID passed in when submitting 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": "flow_music_upload_123456"
}'
output example is:
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "flow_music_upload_123456",
"status": "completed",
"created_at": "2026-08-28T07:44:48.000Z",
"completed_at": "2026-08-28T07:45:40.000Z",
"output": [
{
"audio": "https://static.aireiter.com/tmp/audio-generator/20260828/8TAJJH-mCxIrvHGvBJHiU-audio-0.m4a",
"clip_id": "744c9e0b-ca79-4866-93ad-ead4832e67d1"
}
]
}
}
Request Examples
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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: "flow_music_upload",
params: {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
out_task_id: "flow_music_upload_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": "flow_music_upload",
"params": map[string]interface{}{
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
"out_task_id": "flow_music_upload_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": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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" => "flow_music_upload",
"params" => [
"audio_url" => "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
],
"out_task_id" => "flow_music_upload_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: "flow_music_upload",
params: {
audio_url: "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
out_task_id: "flow_music_upload_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": "flow_music_upload",
"params": [
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
],
"out_task_id": "flow_music_upload_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": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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\": \"flow_music_upload\", \"params\": {\"audio_url\": \"https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a\"}, \"out_task_id\": \"flow_music_upload_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": @"flow_music_upload",
@"params": @{
@"audio_url": @"https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
@"out_task_id": @"flow_music_upload_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": "flow_music_upload",
"params": {
"audio_url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a"
},
"out_task_id": "flow_music_upload_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: "flow_music_upload",
params: {
audio_url: "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
},
out_task_id: "flow_music_upload_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 = "flow_music_upload",
params = list(
audio_url = "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
),
out_task_id = "flow_music_upload_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": "flow_music_upload_123456",
"status": "pending",
"created_at": "2026-08-28T07:44:48.000Z"
}
}
{
"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 recharge and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later"
}
}
Mode Notes
Upload returns a new
clip_id. After you get it, call extend / cover / replace.