curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flow_music",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "flow_music",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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",
params: {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
out_task_id: "flow_music_gen_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",
"params": map[string]interface{}{
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro",
},
"out_task_id": "flow_music_gen_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",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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",
"params" => [
"prompt" => "Short acoustic guitar loop, no vocals",
"length" => 60,
"version" => "lyria-3-pro",
],
"out_task_id" => "flow_music_gen_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",
params: {
prompt: "Short acoustic guitar loop, no vocals",
length: 60,
version: "lyria-3-pro",
},
out_task_id: "flow_music_gen_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",
"params": [
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro",
],
"out_task_id": "flow_music_gen_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",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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\", \"params\": {\"prompt\": \"Short acoustic guitar loop, no vocals\", \"length\": 60, \"version\": \"lyria-3-pro\"}, \"out_task_id\": \"flow_music_gen_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",
@"params": @{
@"prompt": @"Short acoustic guitar loop, no vocals",
@"length": @60,
@"version": @"lyria-3-pro",
},
@"out_task_id": @"flow_music_gen_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",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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",
params: {
prompt: "Short acoustic guitar loop, no vocals",
length: 60,
version: "lyria-3-pro",
},
out_task_id: "flow_music_gen_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",
params = list(
prompt = "Short acoustic guitar loop, no vocals",
length = 60,
version = "lyria-3-pro",
),
out_task_id = "flow_music_gen_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_gen_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 top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
Flow Music
Flow Music Music Generation
- Google Lyria text-to-music, generating one complete song each time
- Asynchronous processing mode, returns a task ID for later queries
- Can include vocals or be instrumental, supports Lyria 3 Pro / 3.5
- The result includes clip_id, which can be used for continuation, cover version, replacement, stem separation, download, and MV generation
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",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "flow_music",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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",
params: {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
out_task_id: "flow_music_gen_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",
"params": map[string]interface{}{
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro",
},
"out_task_id": "flow_music_gen_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",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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",
"params" => [
"prompt" => "Short acoustic guitar loop, no vocals",
"length" => 60,
"version" => "lyria-3-pro",
],
"out_task_id" => "flow_music_gen_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",
params: {
prompt: "Short acoustic guitar loop, no vocals",
length: 60,
version: "lyria-3-pro",
},
out_task_id: "flow_music_gen_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",
"params": [
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro",
],
"out_task_id": "flow_music_gen_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",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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\", \"params\": {\"prompt\": \"Short acoustic guitar loop, no vocals\", \"length\": 60, \"version\": \"lyria-3-pro\"}, \"out_task_id\": \"flow_music_gen_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",
@"params": @{
@"prompt": @"Short acoustic guitar loop, no vocals",
@"length": @60,
@"version": @"lyria-3-pro",
},
@"out_task_id": @"flow_music_gen_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",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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",
params: {
prompt: "Short acoustic guitar loop, no vocals",
length: 60,
version: "lyria-3-pro",
},
out_task_id: "flow_music_gen_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",
params = list(
prompt = "Short acoustic guitar loop, no vocals",
length = 60,
version = "lyria-3-pro",
),
out_task_id = "flow_music_gen_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_gen_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 top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
The model name of Flow Music in AIReiter is
flow_music. For lyrics, continuation, replacement, cover, stem separation, upload, download, and MV generation, please use the corresponding model.Authorizations
string
required
All endpoints require Bearer Token authentication.Get the API Key:Visit the API Key Management page to get your API Key.Add the following to the request header:
Authorization: Bearer YOUR_API_KEY
Body
string
required
Model name, use the following fixed value:
flow_music
object
required
Model parameters object.
Show params Object Properties
Show params Object Properties
string
required
Style prompt. Describe the genre, instruments, mood, and vocals. You can also set
lyrics at the same time.string
Optional lyrics. If omitted, instrumental music will be generated or the model will handle vocals automatically.
string
Optional song title.
string
Optional BPM, greater than or equal to 1. Pass it as a string, for example
"120".number
default:"60"
Expected duration, in seconds, range
1 to 240. This is only a reference; the upstream service may not generate an output with exactly this duration. Billing is per request, not by duration.string
default:"lyria-3-pro"
Lyria version, same price:
lyria-3-pro- Default valuelyria-3.5- Updated vocal model
string
required
Client task ID.User-defined task identifier, required. Only letters, numbers, underscores, and hyphens are supported, length 1-64 characters. You can use this ID later to query 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 format.
Query Task
Flow Music is an asynchronous music generation model. After submitting the task, useout_task_id to query the task status. Once completed, output usually contains 1 item, with fields audio (audio URL), url (cover image), title, text (lyric excerpt), and clip_id.
string
required
The initiator task ID passed 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_gen_123456"
}'
output example:
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "flow_music_gen_123456",
"status": "completed",
"created_at": "2026-08-28T07:44:48.000Z",
"completed_at": "2026-08-28T07:45:40.000Z",
"output": [
{
"url": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-item-0.jpg",
"audio": "https://static.aireiter.com/tmp/audio-generator/20260828/mmPiP-MSedubqGEZ2Y6Ih-audio-0.m4a",
"title": "Untitled",
"text": "(end - 0:20)",
"clip_id": "cd984d09-5a77-4a06-9553-e47a55f009b0"
}
]
}
}
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",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "flow_music",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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",
params: {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
out_task_id: "flow_music_gen_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",
"params": map[string]interface{}{
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro",
},
"out_task_id": "flow_music_gen_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",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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",
"params" => [
"prompt" => "Short acoustic guitar loop, no vocals",
"length" => 60,
"version" => "lyria-3-pro",
],
"out_task_id" => "flow_music_gen_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",
params: {
prompt: "Short acoustic guitar loop, no vocals",
length: 60,
version: "lyria-3-pro",
},
out_task_id: "flow_music_gen_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",
"params": [
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro",
],
"out_task_id": "flow_music_gen_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",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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\", \"params\": {\"prompt\": \"Short acoustic guitar loop, no vocals\", \"length\": 60, \"version\": \"lyria-3-pro\"}, \"out_task_id\": \"flow_music_gen_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",
@"params": @{
@"prompt": @"Short acoustic guitar loop, no vocals",
@"length": @60,
@"version": @"lyria-3-pro",
},
@"out_task_id": @"flow_music_gen_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",
"params": {
"prompt": "Short acoustic guitar loop, no vocals",
"length": 60,
"version": "lyria-3-pro"
},
"out_task_id": "flow_music_gen_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",
params: {
prompt: "Short acoustic guitar loop, no vocals",
length: 60,
version: "lyria-3-pro",
},
out_task_id: "flow_music_gen_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",
params = list(
prompt = "Short acoustic guitar loop, no vocals",
length = 60,
version = "lyria-3-pro",
),
out_task_id = "flow_music_gen_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_gen_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 top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
Mode Notes
The
clip_id from a successful result is used for flow_music_extend / flow_music_replace / flow_music_cover / flow_music_stems / flow_music_download / flow_music_video. length is not a hard limit.