curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_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: "seedream_v5_flash_layerize",
params: {
image_url: "https://example.com/poster.png",
prompt: "Separate the title text and the parrot into independent layers",
resolution: "auto",
output_format: "png"
},
out_task_id: "my_task_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": "seedream_v5_flash_layerize",
"params": map[string]interface{}{
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png",
},
"out_task_id": "my_task_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": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_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" => "seedream_v5_flash_layerize",
"params" => [
"image_url" => "https://example.com/poster.png",
"prompt" => "Separate the title text and the parrot into independent layers",
"resolution" => "auto",
"output_format" => "png"
],
"out_task_id" => "my_task_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: "seedream_v5_flash_layerize",
params: {
image_url: "https://example.com/poster.png",
prompt: "Separate the title text and the parrot into independent layers",
resolution: "auto",
output_format: "png"
},
out_task_id: "my_task_123456"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
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": "seedream_v5_flash_layerize",
"params": [
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
],
"out_task_id": "my_task_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"": ""seedream_v5_flash_layerize"",
""params"": {
""image_url"": ""https://example.com/poster.png"",
""prompt"": ""Separate the title text and the parrot into independent layers"",
""resolution"": ""auto"",
""output_format"": ""png""
},
""out_task_id"": ""my_task_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\":\"seedream_v5_flash_layerize\",\"params\":{\"image_url\":\"https://example.com/poster.png\",\"prompt\":\"Separate the title text and the parrot into independent layers\",\"resolution\":\"auto\",\"output_format\":\"png\"},\"out_task_id\":\"my_task_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": @"seedream_v5_flash_layerize",
@"params": @{
@"image_url": @"https://example.com/poster.png",
@"prompt": @"Separate the title text and the parrot into independent layers",
@"resolution": @"auto",
@"output_format": @"png"
},
@"out_task_id": @"my_task_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": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_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': 'seedream_v5_flash_layerize',
'params': {
'image_url': 'https://example.com/poster.png',
'prompt': 'Separate the title text and the parrot into independent layers',
'resolution': 'auto',
'output_format': 'png'
},
'out_task_id': 'my_task_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 = "seedream_v5_flash_layerize",
params = list(
image_url = "https://example.com/poster.png",
prompt = "Separate the title text and the parrot into independent layers",
resolution = "auto",
output_format = "png"
),
out_task_id = "my_task_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": "my_task_123456",
"status": "pending",
"created_at": "2026-10-16T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
Seedream 5.0 Flash Layerize
Seedream 5.0 Flash Layerize Layer Separation
- Asynchronous processing mode, returning a task ID for subsequent queries
- Splits an image into a background layer + up to 16 independently editable transparent PNG layers
- Each layer includes name, description, z_index, and bounding_box
- Post-billing mode: Checks balance upon submission and settles based on the actual number of output images after task completion (the background layer and each layer count as 1 image each)
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": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_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: "seedream_v5_flash_layerize",
params: {
image_url: "https://example.com/poster.png",
prompt: "Separate the title text and the parrot into independent layers",
resolution: "auto",
output_format: "png"
},
out_task_id: "my_task_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": "seedream_v5_flash_layerize",
"params": map[string]interface{}{
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png",
},
"out_task_id": "my_task_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": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_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" => "seedream_v5_flash_layerize",
"params" => [
"image_url" => "https://example.com/poster.png",
"prompt" => "Separate the title text and the parrot into independent layers",
"resolution" => "auto",
"output_format" => "png"
],
"out_task_id" => "my_task_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: "seedream_v5_flash_layerize",
params: {
image_url: "https://example.com/poster.png",
prompt: "Separate the title text and the parrot into independent layers",
resolution: "auto",
output_format: "png"
},
out_task_id: "my_task_123456"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
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": "seedream_v5_flash_layerize",
"params": [
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
],
"out_task_id": "my_task_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"": ""seedream_v5_flash_layerize"",
""params"": {
""image_url"": ""https://example.com/poster.png"",
""prompt"": ""Separate the title text and the parrot into independent layers"",
""resolution"": ""auto"",
""output_format"": ""png""
},
""out_task_id"": ""my_task_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\":\"seedream_v5_flash_layerize\",\"params\":{\"image_url\":\"https://example.com/poster.png\",\"prompt\":\"Separate the title text and the parrot into independent layers\",\"resolution\":\"auto\",\"output_format\":\"png\"},\"out_task_id\":\"my_task_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": @"seedream_v5_flash_layerize",
@"params": @{
@"image_url": @"https://example.com/poster.png",
@"prompt": @"Separate the title text and the parrot into independent layers",
@"resolution": @"auto",
@"output_format": @"png"
},
@"out_task_id": @"my_task_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": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_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': 'seedream_v5_flash_layerize',
'params': {
'image_url': 'https://example.com/poster.png',
'prompt': 'Separate the title text and the parrot into independent layers',
'resolution': 'auto',
'output_format': 'png'
},
'out_task_id': 'my_task_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 = "seedream_v5_flash_layerize",
params = list(
image_url = "https://example.com/poster.png",
prompt = "Separate the title text and the parrot into independent layers",
resolution = "auto",
output_format = "png"
),
out_task_id = "my_task_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": "my_task_123456",
"status": "pending",
"created_at": "2026-10-16T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
Authorizations
string
required
All endpoints require authentication using a Bearer TokenGet an API Key:Visit the API Key Management page to get your API KeyAdd to the request header when using:
Authorization: Bearer YOUR_API_KEY
Body
string
required
Model nameFixed value:
"seedream_v5_flash_layerize"object
required
Model parameter object
Show params Object Properties
Show params Object Properties
string | string[]
required
Original image to separate
- Required, and only 1 image can be passed
- Supported image formats: png, jpeg; maximum 30 MB per image
- Total pixel range: 262,144 – 36,000,000, aspect ratio range: 1:16 – 16:1
- Supports the following two formats:
- Publicly accessible URL
- Base64 encoded format
- Must use the full Data URI format:
data:image/{format};base64,{base64_data} - Example:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABg... - ⚠️ Note: Must include the
data:image/jpeg;base64,prefix; Base64 image size cannot exceed 10 MB
- Must use the full Data URI format:
string
Layer separation prompt (Optional)
- When provided, separates specified elements according to the prompt, for example
Separate the title text and the parrot into independent layers - You can use
<bbox>x1 y1 x2 y2</bbox>to specify precise element positions with normalized coordinates from 0–1000, for exampleSeparate the parrot <bbox>330 274 641 991</bbox> into a layer - If omitted or fewer than 4 characters, the model automatically identifies key elements in the image
- Maximum 5,000 characters
string
default:"auto"
Output resolution tier
auto- Automatically selected based on the original image dimensions (Default)1K- 1K resolution1.5K- 1.5K resolution2K- 2K resolution
string
default:"png"
Output format of the base image
png- PNG (Default)jpeg- JPEG
string
Callback URL after task completion
object
Custom metadata, returned as-is
string
required
Caller task IDUser-defined task identifier, required
Response
string
Caller task ID, can be used to query results
string
Initial status, fixed as
"pending"string
Creation time (ISO format)
data.output contains the base image and each layer, and the billed image count is the number of elements in output.
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_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: "seedream_v5_flash_layerize",
params: {
image_url: "https://example.com/poster.png",
prompt: "Separate the title text and the parrot into independent layers",
resolution: "auto",
output_format: "png"
},
out_task_id: "my_task_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": "seedream_v5_flash_layerize",
"params": map[string]interface{}{
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png",
},
"out_task_id": "my_task_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": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_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" => "seedream_v5_flash_layerize",
"params" => [
"image_url" => "https://example.com/poster.png",
"prompt" => "Separate the title text and the parrot into independent layers",
"resolution" => "auto",
"output_format" => "png"
],
"out_task_id" => "my_task_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: "seedream_v5_flash_layerize",
params: {
image_url: "https://example.com/poster.png",
prompt: "Separate the title text and the parrot into independent layers",
resolution: "auto",
output_format: "png"
},
out_task_id: "my_task_123456"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
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": "seedream_v5_flash_layerize",
"params": [
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
],
"out_task_id": "my_task_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"": ""seedream_v5_flash_layerize"",
""params"": {
""image_url"": ""https://example.com/poster.png"",
""prompt"": ""Separate the title text and the parrot into independent layers"",
""resolution"": ""auto"",
""output_format"": ""png""
},
""out_task_id"": ""my_task_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\":\"seedream_v5_flash_layerize\",\"params\":{\"image_url\":\"https://example.com/poster.png\",\"prompt\":\"Separate the title text and the parrot into independent layers\",\"resolution\":\"auto\",\"output_format\":\"png\"},\"out_task_id\":\"my_task_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": @"seedream_v5_flash_layerize",
@"params": @{
@"image_url": @"https://example.com/poster.png",
@"prompt": @"Separate the title text and the parrot into independent layers",
@"resolution": @"auto",
@"output_format": @"png"
},
@"out_task_id": @"my_task_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": "seedream_v5_flash_layerize",
"params": {
"image_url": "https://example.com/poster.png",
"prompt": "Separate the title text and the parrot into independent layers",
"resolution": "auto",
"output_format": "png"
},
"out_task_id": "my_task_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': 'seedream_v5_flash_layerize',
'params': {
'image_url': 'https://example.com/poster.png',
'prompt': 'Separate the title text and the parrot into independent layers',
'resolution': 'auto',
'output_format': 'png'
},
'out_task_id': 'my_task_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 = "seedream_v5_flash_layerize",
params = list(
image_url = "https://example.com/poster.png",
prompt = "Separate the title text and the parrot into independent layers",
resolution = "auto",
output_format = "png"
),
out_task_id = "my_task_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": "my_task_123456",
"status": "pending",
"created_at": "2026-10-16T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
查询任务结果
After the task is submitted, use thePOST /api/openapi/query endpoint to poll the task status until status is completed or failed. After the task is completed, the output field returns the list of layers.
curl --request POST \
--url https://aireiter.com/api/openapi/query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"out_task_id": "my_task_123456"
}'
Query Response - Layer Output Structure
After the task is completed,output is an array of layer objects, where each layer contains url and metadata:
array
List of layers, each element is a layer object, up to 17 in total (1 base image + 16 layers)
Show Layer Object Properties
Show Layer Object Properties
string
The image URL of this layer. The base image format is determined by
output_format, while the remaining layers are transparent PNGsobject
Layer metadata
Show metadata Properties
Show metadata Properties
string
Fixed value
"layer", indicating that this is a layer outputnumber
Layer hierarchy index
z_index = 0: Base image (full background),bounding_boxisnullz_index ≥ 1: Foreground layers, arranged in back-to-front order
object | null
The position area of the layer in the original image
null for the base image (z_index=0); for the remaining layers, a coordinate object is returned:string | null
Layer name,
null for the base imagestring | null
Layer description,
null for the base imageQuery Response Example
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "my_task_123456",
"status": "completed",
"created_at": "2026-10-16T06:03:28.000Z",
"completed_at": "2026-10-16T06:04:26.000Z",
"output": [
{
"url": "https://static.aireiter.com/upload/example/layer-0.png",
"metadata": {
"kind": "layer",
"z_index": 0,
"bounding_box": null,
"name": null,
"description": null
}
},
{
"url": "https://static.aireiter.com/upload/example/layer-1.png",
"metadata": {
"kind": "layer",
"z_index": 1,
"bounding_box": {
"absolute": [755, 47, 1776, 855],
"normalized": [393, 43, 924, 785]
},
"name": "Canyon and sunset sky",
"description": "Distant canyon, winding river valley, setting sun and orange gradient sky, without the car and road"
}
},
{
"url": "https://static.aireiter.com/upload/example/layer-2.png",
"metadata": {
"kind": "layer",
"z_index": 2,
"bounding_box": {
"absolute": [0, 707, 1920, 1088],
"normalized": [0, 650, 999, 999]
},
"name": "Gravel road",
"description": "Gravel dirt road under the car, including stones and tire tracks"
}
},
{
"url": "https://static.aireiter.com/upload/example/layer-3.png",
"metadata": {
"kind": "layer",
"z_index": 3,
"bounding_box": {
"absolute": [232, 184, 1529, 858],
"normalized": [121, 169, 796, 788]
},
"name": "Blue rally car",
"description": "The whole blue rally car including body, wheels and windows"
}
}
]
}
}
The example above only shows 4 elements; 2–17 elements are actually returned (base image + up to 16 layers), determined by the original image content and prompt. The language of the layer name and description follows the prompt.
The result image URLs are temporarily stored. Please download and save them to your own storage promptly.