curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen_image_3_pro",
"params": {
"prompt": "첫 번째 이미지의 상품 주체, 두 번째 이미지의 색감, 세 번째 이미지의 레이아웃을 사용하여, 라벨 텍스트가 선명하게 유지되는 고급 가로형 광고를 생성하세요",
"image_url": [
"https://example.com/product.png",
"https://example.com/color-reference.png",
"https://example.com/layout-reference.png"
],
"resolution": "2K",
"aspect_ratio": "16:9",
"output_n": 1
},
"out_task_id": "qwen_image_3_pro_edit_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": True,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}
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: "qwen_image_3_pro",
params: {
prompt: "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
resolution: "2K",
aspect_ratio: "3:4",
output_n: 1,
prompt_extend: true,
prompt_extend_mode: "agent",
negative_prompt: "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
out_task_id: "qwen_image_3_pro_task_001"
};
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": "qwen_image_3_pro",
"params": map[string]interface{}{
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크",
},
"out_task_id": "qwen_image_3_pro_task_001",
}
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": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}
""";
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" => "qwen_image_3_pro",
"params" => [
"prompt" => "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution" => "2K",
"aspect_ratio" => "3:4",
"output_n" => 1,
"prompt_extend" => true,
"prompt_extend_mode" => "agent",
"negative_prompt" => "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
],
"out_task_id" => "qwen_image_3_pro_task_001"
];
$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: "qwen_image_3_pro",
params: {
prompt: "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
resolution: "2K",
aspect_ratio: "3:4",
output_n: 1,
prompt_extend: true,
prompt_extend_mode: "agent",
negative_prompt: "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
out_task_id: "qwen_image_3_pro_task_001"
}
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": "qwen_image_3_pro",
"params": [
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
],
"out_task_id": "qwen_image_3_pro_task_001"
]
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"": ""qwen_image_3_pro"",
""params"": {
""prompt"": ""프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요"",
""resolution"": ""2K"",
""aspect_ratio"": ""3:4"",
""output_n"": 1,
""prompt_extend"": true,
""prompt_extend_mode"": ""agent"",
""negative_prompt"": ""텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크""
},
""out_task_id"": ""qwen_image_3_pro_task_001""
}";
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\":\"qwen_image_3_pro\",\"params\":{\"prompt\":\"프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요\",\"resolution\":\"2K\",\"aspect_ratio\":\"3:4\",\"output_n\":1,\"prompt_extend\":true,\"prompt_extend_mode\":\"agent\",\"negative_prompt\":\"텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크\"},\"out_task_id\":\"qwen_image_3_pro_task_001\"}";
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": @"qwen_image_3_pro",
@"params": @{
@"prompt": @"프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
@"resolution": @"2K",
@"aspect_ratio": @"3:4",
@"output_n": @1,
@"prompt_extend": @YES,
@"prompt_extend_mode": @"agent",
@"negative_prompt": @"텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
@"out_task_id": @"qwen_image_3_pro_task_001"
};
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": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}|}
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": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
};
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 = "qwen_image_3_pro",
params = list(
prompt = "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
resolution = "2K",
aspect_ratio = "3:4",
output_n = 1,
prompt_extend = TRUE,
prompt_extend_mode = "agent",
negative_prompt = "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
),
out_task_id = "qwen_image_3_pro_task_001"
)
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": "qwen_image_3_pro_task_001",
"status": "pending",
"estimated_credits": 100,
"created_at": "2025-12-22T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "요청 매개변수가 유효하지 않습니다",
"ok": false
}
{
"error": {
"code": 401,
"message": "인증에 실패했습니다. API 키를 확인하세요"
}
}
{
"error": {
"code": 433,
"message": "계정 잔액이 부족합니다. 충전 후 다시 시도하세요"
}
}
{
"error": {
"code": 500,
"message": "서버 내부 오류입니다. 나중에 다시 시도하세요"
}
}
Qwen Image 3.0
Qwen Image 3.0 Pro 이미지 생성 및 편집
- 포스터, 텍스트 레이아웃, 메뉴, 인포그래픽 및 고디테일 이미지 편집에 적합
- 비동기 처리 모드로, 후속 조회를 위한 작업 ID를 반환합니다
- 텍스트-이미지 생성, 최대 3장의 참고 이미지, 한 번에 1-6장의 이미지 생성을 지원합니다
- 1K / 2K 해상도와 7가지 일반적인 이미지 비율을 지원합니다
- 제출된 prompt는 플랫폼 민감어 / 안전 검사를 거치며, 위반 콘텐츠는 직접 거절됩니다
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": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen_image_3_pro",
"params": {
"prompt": "첫 번째 이미지의 상품 주체, 두 번째 이미지의 색감, 세 번째 이미지의 레이아웃을 사용하여, 라벨 텍스트가 선명하게 유지되는 고급 가로형 광고를 생성하세요",
"image_url": [
"https://example.com/product.png",
"https://example.com/color-reference.png",
"https://example.com/layout-reference.png"
],
"resolution": "2K",
"aspect_ratio": "16:9",
"output_n": 1
},
"out_task_id": "qwen_image_3_pro_edit_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": True,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}
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: "qwen_image_3_pro",
params: {
prompt: "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
resolution: "2K",
aspect_ratio: "3:4",
output_n: 1,
prompt_extend: true,
prompt_extend_mode: "agent",
negative_prompt: "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
out_task_id: "qwen_image_3_pro_task_001"
};
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": "qwen_image_3_pro",
"params": map[string]interface{}{
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크",
},
"out_task_id": "qwen_image_3_pro_task_001",
}
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": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}
""";
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" => "qwen_image_3_pro",
"params" => [
"prompt" => "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution" => "2K",
"aspect_ratio" => "3:4",
"output_n" => 1,
"prompt_extend" => true,
"prompt_extend_mode" => "agent",
"negative_prompt" => "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
],
"out_task_id" => "qwen_image_3_pro_task_001"
];
$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: "qwen_image_3_pro",
params: {
prompt: "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
resolution: "2K",
aspect_ratio: "3:4",
output_n: 1,
prompt_extend: true,
prompt_extend_mode: "agent",
negative_prompt: "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
out_task_id: "qwen_image_3_pro_task_001"
}
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": "qwen_image_3_pro",
"params": [
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
],
"out_task_id": "qwen_image_3_pro_task_001"
]
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"": ""qwen_image_3_pro"",
""params"": {
""prompt"": ""프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요"",
""resolution"": ""2K"",
""aspect_ratio"": ""3:4"",
""output_n"": 1,
""prompt_extend"": true,
""prompt_extend_mode"": ""agent"",
""negative_prompt"": ""텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크""
},
""out_task_id"": ""qwen_image_3_pro_task_001""
}";
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\":\"qwen_image_3_pro\",\"params\":{\"prompt\":\"프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요\",\"resolution\":\"2K\",\"aspect_ratio\":\"3:4\",\"output_n\":1,\"prompt_extend\":true,\"prompt_extend_mode\":\"agent\",\"negative_prompt\":\"텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크\"},\"out_task_id\":\"qwen_image_3_pro_task_001\"}";
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": @"qwen_image_3_pro",
@"params": @{
@"prompt": @"프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
@"resolution": @"2K",
@"aspect_ratio": @"3:4",
@"output_n": @1,
@"prompt_extend": @YES,
@"prompt_extend_mode": @"agent",
@"negative_prompt": @"텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
@"out_task_id": @"qwen_image_3_pro_task_001"
};
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": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}|}
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": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
};
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 = "qwen_image_3_pro",
params = list(
prompt = "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
resolution = "2K",
aspect_ratio = "3:4",
output_n = 1,
prompt_extend = TRUE,
prompt_extend_mode = "agent",
negative_prompt = "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
),
out_task_id = "qwen_image_3_pro_task_001"
)
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": "qwen_image_3_pro_task_001",
"status": "pending",
"estimated_credits": 100,
"created_at": "2025-12-22T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "요청 매개변수가 유효하지 않습니다",
"ok": false
}
{
"error": {
"code": 401,
"message": "인증에 실패했습니다. API 키를 확인하세요"
}
}
{
"error": {
"code": 433,
"message": "계정 잔액이 부족합니다. 충전 후 다시 시도하세요"
}
}
{
"error": {
"code": 500,
"message": "서버 내부 오류입니다. 나중에 다시 시도하세요"
}
}
Authorizations
string
필수
모든 인터페이스는 Bearer Token을 사용하여 인증해야 합니다.API Key 관리 페이지에 접속하여 API Key를 가져오고, 요청 헤더에 다음을 추가하세요:
Authorization: Bearer YOUR_API_KEY
Body
string
필수
Model name, fixed value:
"qwen_image_3_pro".object
필수
Model parameters object.
표시 Properties of the params object
표시 Properties of the params object
string
필수
Image generation or editing instruction. Supports Chinese and English.The Pro model is suitable for tasks that require readable text, complex hierarchy, dense layouts, and high-detail rendering. It is recommended to clearly describe the text content, font style, hierarchy, position, whitespace, and the reference image features that need to be preserved.
string[]
Array of reference images. When provided, image-to-image mode is used; when omitted, text-to-image mode is used.
- Up to 3 reference images
- Maximum size of a single image is 10MB
- Supports jpeg, png, webp
- Supports publicly accessible URLs or complete Base64 Data URIs
Image URLs must be directly accessible from the public internet and cannot rely on login status, cookies, or temporary page authorization.
string
기본값:"1K"
Output resolution tier.
1K- Base resolution (default)2K- High-definition resolution, suitable for text, posters, and dense layouts
string
기본값:"1:1"
Output image aspect ratio.Supported values:
1:1- Square (default)3:2/2:3- Classic landscape / portrait4:3/3:4- Standard landscape / portrait16:9/9:16- Widescreen landscape / portrait
integer
기본값:"1"
Number of images generated for this task, ranging from
1 to 6.boolean
기본값:"false"
Smart prompt rewriting. Disabled by default to keep results predictable. Set to
true when smart rewriting is needed.string
기본값:"direct"
Prompt rewriting mode. Effective only when
prompt_extend is true.direct- Balanced rewriting, supports both text-to-image and image-to-imageagent- Aggressive rewriting, text-to-image only
string
Negative prompt, used to describe content you do not want to appear in the result, such as blur, garbled text, crowded layout, or structural distortion.
string
필수
Caller-defined task ID, used for idempotent submission and result queries.
- Length: 1-64 characters
- It is recommended to use only letters, numbers, underscores, and hyphens
- Do not reuse the same ID under the same API Key
Response
string
호출자 작업 ID로, 작업 상태와 결과를 조회하는 데 사용할 수 있습니다.
string
초기 상태로, 일반적으로
"pending"입니다.string
작업 생성 시간, ISO 8601 형식입니다.
조회 결과
제출에 성공한 후, 동일한out_task_id를 사용하여 조회 인터페이스를 호출하세요:
curl --request POST \
--url https://aireiter.com/api/openapi/query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"out_task_id": "qwen_image_3_pro_task_001"
}'
pending, processing, completed, failed가 포함됩니다. 작업이 완료되면 이미지 배열은 data.output에 있습니다.
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen_image_3_pro",
"params": {
"prompt": "첫 번째 이미지의 상품 주체, 두 번째 이미지의 색감, 세 번째 이미지의 레이아웃을 사용하여, 라벨 텍스트가 선명하게 유지되는 고급 가로형 광고를 생성하세요",
"image_url": [
"https://example.com/product.png",
"https://example.com/color-reference.png",
"https://example.com/layout-reference.png"
],
"resolution": "2K",
"aspect_ratio": "16:9",
"output_n": 1
},
"out_task_id": "qwen_image_3_pro_edit_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": True,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}
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: "qwen_image_3_pro",
params: {
prompt: "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
resolution: "2K",
aspect_ratio: "3:4",
output_n: 1,
prompt_extend: true,
prompt_extend_mode: "agent",
negative_prompt: "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
out_task_id: "qwen_image_3_pro_task_001"
};
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": "qwen_image_3_pro",
"params": map[string]interface{}{
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크",
},
"out_task_id": "qwen_image_3_pro_task_001",
}
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": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}
""";
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" => "qwen_image_3_pro",
"params" => [
"prompt" => "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution" => "2K",
"aspect_ratio" => "3:4",
"output_n" => 1,
"prompt_extend" => true,
"prompt_extend_mode" => "agent",
"negative_prompt" => "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
],
"out_task_id" => "qwen_image_3_pro_task_001"
];
$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: "qwen_image_3_pro",
params: {
prompt: "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
resolution: "2K",
aspect_ratio: "3:4",
output_n: 1,
prompt_extend: true,
prompt_extend_mode: "agent",
negative_prompt: "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
out_task_id: "qwen_image_3_pro_task_001"
}
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": "qwen_image_3_pro",
"params": [
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
],
"out_task_id": "qwen_image_3_pro_task_001"
]
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"": ""qwen_image_3_pro"",
""params"": {
""prompt"": ""프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요"",
""resolution"": ""2K"",
""aspect_ratio"": ""3:4"",
""output_n"": 1,
""prompt_extend"": true,
""prompt_extend_mode"": ""agent"",
""negative_prompt"": ""텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크""
},
""out_task_id"": ""qwen_image_3_pro_task_001""
}";
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\":\"qwen_image_3_pro\",\"params\":{\"prompt\":\"프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요\",\"resolution\":\"2K\",\"aspect_ratio\":\"3:4\",\"output_n\":1,\"prompt_extend\":true,\"prompt_extend_mode\":\"agent\",\"negative_prompt\":\"텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크\"},\"out_task_id\":\"qwen_image_3_pro_task_001\"}";
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": @"qwen_image_3_pro",
@"params": @{
@"prompt": @"프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
@"resolution": @"2K",
@"aspect_ratio": @"3:4",
@"output_n": @1,
@"prompt_extend": @YES,
@"prompt_extend_mode": @"agent",
@"negative_prompt": @"텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
@"out_task_id": @"qwen_image_3_pro_task_001"
};
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": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
}|}
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": "qwen_image_3_pro",
"params": {
"prompt": "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_n": 1,
"prompt_extend": true,
"prompt_extend_mode": "agent",
"negative_prompt": "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
},
"out_task_id": "qwen_image_3_pro_task_001"
};
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 = "qwen_image_3_pro",
params = list(
prompt = "프리미엄 커피숍을 위한 세로형 메뉴 포스터를 디자인하세요. 제목은 MORNING ROAST로 하고, 가격 계층이 명확하게 읽히며, 현대적인 편집 레이아웃과 사실적인 커피 사진을 사용하세요",
resolution = "2K",
aspect_ratio = "3:4",
output_n = 1,
prompt_extend = TRUE,
prompt_extend_mode = "agent",
negative_prompt = "텍스트 깨짐, 흐림, 빽빽한 레이아웃, 워터마크"
),
out_task_id = "qwen_image_3_pro_task_001"
)
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": "qwen_image_3_pro_task_001",
"status": "pending",
"estimated_credits": 100,
"created_at": "2025-12-22T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "요청 매개변수가 유효하지 않습니다",
"ok": false
}
{
"error": {
"code": 401,
"message": "인증에 실패했습니다. API 키를 확인하세요"
}
}
{
"error": {
"code": 433,
"message": "계정 잔액이 부족합니다. 충전 후 다시 시도하세요"
}
}
{
"error": {
"code": 500,
"message": "서버 내부 오류입니다. 나중에 다시 시도하세요"
}
}