curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seed_audio_1_0",
"params": {
"prompt": "@audio1 Hello, nice to meet you. @audio2 How was your day today?",
"reference_mode": "audio",
"audio_url": [
"https://example.com/ref-voice.mp3"
],
"format": "mp3",
"sample_rate": "24000"
},
"out_task_id": "seed_audio_clone_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seed_audio_1_0",
"params": {
"prompt": "Generate a narration based on the image's mood, with a calm tone.",
"reference_mode": "image",
"image_url": "https://example.com/scene.jpg",
"format": "wav"
},
"out_task_id": "seed_audio_image_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_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: "seed_audio_1_0",
params: {
prompt: "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode: "text",
format: "wav",
sample_rate: "24000",
speech_rate: 1,
loudness_rate: 1,
pitch_rate: 0
},
out_task_id: "seed_audio_text_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": "seed_audio_1_0",
"params": map[string]interface{}{
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0,
},
"out_task_id": "seed_audio_text_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": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_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" => "seed_audio_1_0",
"params" => [
"prompt" => "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode" => "text",
"format" => "wav",
"sample_rate" => "24000",
"speech_rate" => 1,
"loudness_rate" => 1,
"pitch_rate" => 0
],
"out_task_id" => "seed_audio_text_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: "seed_audio_1_0",
params: {
prompt: "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode: "text",
format: "wav",
sample_rate: "24000",
speech_rate: 1,
loudness_rate: 1,
pitch_rate: 0
},
out_task_id: "seed_audio_text_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": "seed_audio_1_0",
"params": [
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
],
"out_task_id": "seed_audio_text_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\": \"seed_audio_1_0\",
\"params\": {
\"prompt\": \"Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.\",
\"reference_mode\": \"text\",
\"format\": \"wav\",
\"sample_rate\": \"24000\",
\"speech_rate\": 1,
\"loudness_rate\": 1,
\"pitch_rate\": 0
},
\"out_task_id\": \"seed_audio_text_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\":\"seed_audio_1_0\",\"params\":{\"prompt\":\"Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.\",\"reference_mode\":\"text\",\"format\":\"wav\",\"sample_rate\":\"24000\",\"speech_rate\":1,\"loudness_rate\":1,\"pitch_rate\":0},\"out_task_id\":\"seed_audio_text_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": @"seed_audio_1_0",
@"params": @{
@"prompt": @"Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
@"reference_mode": @"text",
@"format": @"wav",
@"sample_rate": @"24000",
@"speech_rate": @1,
@"loudness_rate": @1,
@"pitch_rate": @0
},
@"out_task_id": @"seed_audio_text_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": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_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: "seed_audio_1_0",
params: {
prompt: "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode: "text",
format: "wav",
sample_rate: "24000",
speech_rate: 1,
loudness_rate: 1,
pitch_rate: 0
},
out_task_id: "seed_audio_text_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 = "seed_audio_1_0",
params = list(
prompt = "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode = "text",
format = "wav",
sample_rate = "24000",
speech_rate = 1,
loudness_rate = 1,
pitch_rate = 0
),
out_task_id = "seed_audio_text_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": "seed_audio_text_123456",
"status": "pending",
"created_at": "2026-08-26T10:12:11.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"
}
}
Seed Audio 1.0
Seed Audio 1.0 Audio Generation
- ByteDance Seed Audio 1.0, also commonly known as Doubao Seed Audio
- Asynchronous processing mode, returns a task ID for subsequent queries
- Supports text-to-audio, reference audio voice cloning, and reference image guidance
- Maximum of 120 seconds per request, adjustable speech rate, volume, pitch, and output format
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": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seed_audio_1_0",
"params": {
"prompt": "@audio1 Hello, nice to meet you. @audio2 How was your day today?",
"reference_mode": "audio",
"audio_url": [
"https://example.com/ref-voice.mp3"
],
"format": "mp3",
"sample_rate": "24000"
},
"out_task_id": "seed_audio_clone_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seed_audio_1_0",
"params": {
"prompt": "Generate a narration based on the image's mood, with a calm tone.",
"reference_mode": "image",
"image_url": "https://example.com/scene.jpg",
"format": "wav"
},
"out_task_id": "seed_audio_image_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_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: "seed_audio_1_0",
params: {
prompt: "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode: "text",
format: "wav",
sample_rate: "24000",
speech_rate: 1,
loudness_rate: 1,
pitch_rate: 0
},
out_task_id: "seed_audio_text_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": "seed_audio_1_0",
"params": map[string]interface{}{
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0,
},
"out_task_id": "seed_audio_text_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": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_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" => "seed_audio_1_0",
"params" => [
"prompt" => "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode" => "text",
"format" => "wav",
"sample_rate" => "24000",
"speech_rate" => 1,
"loudness_rate" => 1,
"pitch_rate" => 0
],
"out_task_id" => "seed_audio_text_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: "seed_audio_1_0",
params: {
prompt: "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode: "text",
format: "wav",
sample_rate: "24000",
speech_rate: 1,
loudness_rate: 1,
pitch_rate: 0
},
out_task_id: "seed_audio_text_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": "seed_audio_1_0",
"params": [
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
],
"out_task_id": "seed_audio_text_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\": \"seed_audio_1_0\",
\"params\": {
\"prompt\": \"Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.\",
\"reference_mode\": \"text\",
\"format\": \"wav\",
\"sample_rate\": \"24000\",
\"speech_rate\": 1,
\"loudness_rate\": 1,
\"pitch_rate\": 0
},
\"out_task_id\": \"seed_audio_text_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\":\"seed_audio_1_0\",\"params\":{\"prompt\":\"Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.\",\"reference_mode\":\"text\",\"format\":\"wav\",\"sample_rate\":\"24000\",\"speech_rate\":1,\"loudness_rate\":1,\"pitch_rate\":0},\"out_task_id\":\"seed_audio_text_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": @"seed_audio_1_0",
@"params": @{
@"prompt": @"Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
@"reference_mode": @"text",
@"format": @"wav",
@"sample_rate": @"24000",
@"speech_rate": @1,
@"loudness_rate": @1,
@"pitch_rate": @0
},
@"out_task_id": @"seed_audio_text_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": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_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: "seed_audio_1_0",
params: {
prompt: "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode: "text",
format: "wav",
sample_rate: "24000",
speech_rate: 1,
loudness_rate: 1,
pitch_rate: 0
},
out_task_id: "seed_audio_text_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 = "seed_audio_1_0",
params = list(
prompt = "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode = "text",
format = "wav",
sample_rate = "24000",
speech_rate = 1,
loudness_rate = 1,
pitch_rate = 0
),
out_task_id = "seed_audio_text_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": "seed_audio_text_123456",
"status": "pending",
"created_at": "2026-08-26T10:12:11.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 Seed Audio 1.0 in AIReiter is
seed_audio_1_0. This model is also commonly searched for as Doubao Seed Audio or Seed Audio API.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 headers:
Authorization: Bearer YOUR_API_KEY
Body
string
required
Model name, fixed value:
seed_audio_1_0
object
required
Model parameters object.
Show params Object Properties
Show params Object Properties
string
required
The text to synthesize, or a description of the audio scene, up to 1500 characters.When using reference audio, you can use
@audio1 / @audio2 / @audio3 in the prompt to point to the reference voice in order.string
default:"text"
Reference mode, which determines what type of reference material this request uses:
text- Generate using the prompt only, without passing reference audio or reference imagesaudio- Clone the voice with reference audioimage- Use one reference image to guide mood and expression
Reference audio and reference images cannot be used at the same time. When using reference material, you must explicitly pass the corresponding
reference_mode, otherwise the reference fields will be ignored.string | string[]
Reference audio URL.Only valid when
reference_mode is audio, up to 3 segments, in the order of @audio1 / @audio2 / @audio3.Reference audio requirements:- Formats: WAV, MP3, PCM, OGG Opus
- Each segment must not exceed 30 seconds
- Each segment must not exceed 10MB
- The URL must be publicly accessible
string | string[]
Reference image URL.Only valid when
reference_mode is image, up to 1 image.Image requirements:- Formats: JPEG, PNG, WEBP
- Must not exceed 10MB
- The URL must be publicly accessible
number
default:"1"
Speech rate multiplier, ranging from
0.5 to 2, supports two decimal places. 1 is the normal speaking rate.number
default:"1"
Volume multiplier, ranging from
0.5 to 2, supports two decimal places. 1 is the normal volume.integer
default:"0"
Pitch, measured in semitones. Range
-12 to 12. 0 is the original key, 12 raises it by one octave, and -12 lowers it by one octave.string
default:"24000"
Output sample rate (Hz):
80001600024000- Default Value320004410048000
string
default:"wav"
Output audio format:
wav- Default Valuemp3ogg_opuspcm
string
required
Initiator 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 caller’s task ID, which can be used to query the result.
string
The initial status, usually
"pending".string
Creation time, in ISO format.
Query Task
Seed Audio 1.0 is an asynchronous audio generation model. After submitting a task, useout_task_id to query the task status.
string
required
The initiator’s 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": "seed_audio_text_123456"
}'
output:
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "seed_audio_text_123456",
"status": "completed",
"created_at": "2026-08-26T10:12:11.000Z",
"completed_at": "2026-08-26T10:12:48.000Z",
"output": [
{
"audio": "https://s1.pxz.ai/upload/audio-generator/20260826/seed-audio-item-0.wav"
}
]
}
}
Request Examples
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seed_audio_1_0",
"params": {
"prompt": "@audio1 Hello, nice to meet you. @audio2 How was your day today?",
"reference_mode": "audio",
"audio_url": [
"https://example.com/ref-voice.mp3"
],
"format": "mp3",
"sample_rate": "24000"
},
"out_task_id": "seed_audio_clone_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seed_audio_1_0",
"params": {
"prompt": "Generate a narration based on the image's mood, with a calm tone.",
"reference_mode": "image",
"image_url": "https://example.com/scene.jpg",
"format": "wav"
},
"out_task_id": "seed_audio_image_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_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: "seed_audio_1_0",
params: {
prompt: "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode: "text",
format: "wav",
sample_rate: "24000",
speech_rate: 1,
loudness_rate: 1,
pitch_rate: 0
},
out_task_id: "seed_audio_text_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": "seed_audio_1_0",
"params": map[string]interface{}{
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0,
},
"out_task_id": "seed_audio_text_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": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_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" => "seed_audio_1_0",
"params" => [
"prompt" => "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode" => "text",
"format" => "wav",
"sample_rate" => "24000",
"speech_rate" => 1,
"loudness_rate" => 1,
"pitch_rate" => 0
],
"out_task_id" => "seed_audio_text_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: "seed_audio_1_0",
params: {
prompt: "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode: "text",
format: "wav",
sample_rate: "24000",
speech_rate: 1,
loudness_rate: 1,
pitch_rate: 0
},
out_task_id: "seed_audio_text_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": "seed_audio_1_0",
"params": [
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
],
"out_task_id": "seed_audio_text_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\": \"seed_audio_1_0\",
\"params\": {
\"prompt\": \"Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.\",
\"reference_mode\": \"text\",
\"format\": \"wav\",
\"sample_rate\": \"24000\",
\"speech_rate\": 1,
\"loudness_rate\": 1,
\"pitch_rate\": 0
},
\"out_task_id\": \"seed_audio_text_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\":\"seed_audio_1_0\",\"params\":{\"prompt\":\"Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.\",\"reference_mode\":\"text\",\"format\":\"wav\",\"sample_rate\":\"24000\",\"speech_rate\":1,\"loudness_rate\":1,\"pitch_rate\":0},\"out_task_id\":\"seed_audio_text_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": @"seed_audio_1_0",
@"params": @{
@"prompt": @"Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
@"reference_mode": @"text",
@"format": @"wav",
@"sample_rate": @"24000",
@"speech_rate": @1,
@"loudness_rate": @1,
@"pitch_rate": @0
},
@"out_task_id": @"seed_audio_text_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": "seed_audio_1_0",
"params": {
"prompt": "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
"reference_mode": "text",
"format": "wav",
"sample_rate": "24000",
"speech_rate": 1,
"loudness_rate": 1,
"pitch_rate": 0
},
"out_task_id": "seed_audio_text_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: "seed_audio_1_0",
params: {
prompt: "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode: "text",
format: "wav",
sample_rate: "24000",
speech_rate: 1,
loudness_rate: 1,
pitch_rate: 0
},
out_task_id: "seed_audio_text_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 = "seed_audio_1_0",
params = list(
prompt = "Welcome to the audio generation service. The weather is great today, perfect for going out for a walk.",
reference_mode = "text",
format = "wav",
sample_rate = "24000",
speech_rate = 1,
loudness_rate = 1,
pitch_rate = 0
),
out_task_id = "seed_audio_text_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": "seed_audio_text_123456",
"status": "pending",
"created_at": "2026-08-26T10:12:11.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
text mode only generates speech, dialogue, or sound effects based on the prompt; the audio mode clones the timbre using a reference audio; the image mode uses a reference image to guide the expression.When
reference_mode is audio, do not pass image_url. When reference_mode is image, do not pass audio_url. Each request can be up to 120 seconds long.