curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2_7_image_pro",
"params": {
"prompt": "따뜻한 스튜디오 조명 아래 캔버스에 묘사된 인간 초상화를 정성스럽게 그리는 고양이. 부드러운 집중력을 가진 브러시를 들고 있으며, 세밀하고 사실적인 유화 스타일로 풍부한 질감, 레이어드된 색상과 극적인 조명을 통해 매우 예술적인 분위기를 연출합니다.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"out_task_id": "my_task_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"image_url": ["https://static.aireiter.com/upload/wan2_7_image_pro/20260624/4g7c6b7UyTsOks_XWbVpq.webp"],
"resolution": "2K",
"aspect_ratio": "auto"
},
"out_task_id": "my_task_img2img_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"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: "wan2_7_image_pro",
params: {
prompt: "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
output_n: "1",
resolution: "2K",
aspect_ratio: "auto"
},
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": "wan2_7_image_pro",
"params": map[string]interface{}{
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto",
},
"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": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"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" => "wan2_7_image_pro",
"params" => [
"prompt" => "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n" => "1",
"resolution" => "2K",
"aspect_ratio" => "auto"
],
"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: "wan2_7_image_pro",
params: {
prompt: "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
output_n: "1",
resolution: "2K",
aspect_ratio: "auto"
},
out_task_id: "my_task_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": "wan2_7_image_pro",
"params": [
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
],
"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"": ""wan2_7_image_pro"",
""params"": {
""prompt"": ""부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이."",
""output_n"": ""1"",
""resolution"": ""2K"",
""aspect_ratio"": ""auto""
},
""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\":\"wan2_7_image_pro\","
"\"params\":{"
"\"prompt\":\"부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.\","
"\"output_n\":\"1\","
"\"resolution\":\"2K\","
"\"aspect_ratio\":\"auto\""
"},"
"\"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": @"wan2_7_image_pro",
@"params": @{
@"prompt": @"부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
@"output_n": @"1",
@"resolution": @"2K",
@"aspect_ratio": @"auto"
},
@"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": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"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': 'wan2_7_image_pro',
'params': {
'prompt': '부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.',
'output_n': '1',
'resolution': '2K',
'aspect_ratio': 'auto'
},
'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 = "wan2_7_image_pro",
params = list(
prompt = "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
output_n = "1",
resolution = "2K",
aspect_ratio = "auto"
),
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",
"estimated_credits": 100,
"created_at": "2026-06-24T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "요청 파라미터가 유효하지 않습니다",
"ok": false
}
{
"error": {
"code": 401,
"message": "인증 실패, API 키를 확인하세요"
}
}
{
"error": {
"code": 433,
"message": "계정 잔액 부족, 충전 후 다시 시도하세요"
}
}
{
"error": {
"code": 500,
"message": "서버 내부 오류, 나중에 다시 시도하세요"
}
}
Wan2.7-Image-Pro
Wan2.7-Image-Pro 이미지 생성
- 비동기 처리 모드, 작업 ID 반환으로 후속 조회 가능
- 텍스트 → 이미지, 이미지 → 이미지 두 가지 생성 모드 지원
- aspect_ratio 필드를 통해 다양한 이미지 비율 지원 (기본값 auto 자동 조정)
- 1K / 2K / 4K 해상도 선택 지원
- output_n 필드를 통해 한 번에 여러 장 이미지 생성 가능
- 제출된 프롬프트는 플랫폼의 민감어 및 보안 심사 통과, 위반 내용은 즉시 거부
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": "wan2_7_image_pro",
"params": {
"prompt": "따뜻한 스튜디오 조명 아래 캔버스에 묘사된 인간 초상화를 정성스럽게 그리는 고양이. 부드러운 집중력을 가진 브러시를 들고 있으며, 세밀하고 사실적인 유화 스타일로 풍부한 질감, 레이어드된 색상과 극적인 조명을 통해 매우 예술적인 분위기를 연출합니다.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"out_task_id": "my_task_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"image_url": ["https://static.aireiter.com/upload/wan2_7_image_pro/20260624/4g7c6b7UyTsOks_XWbVpq.webp"],
"resolution": "2K",
"aspect_ratio": "auto"
},
"out_task_id": "my_task_img2img_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"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: "wan2_7_image_pro",
params: {
prompt: "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
output_n: "1",
resolution: "2K",
aspect_ratio: "auto"
},
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": "wan2_7_image_pro",
"params": map[string]interface{}{
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto",
},
"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": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"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" => "wan2_7_image_pro",
"params" => [
"prompt" => "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n" => "1",
"resolution" => "2K",
"aspect_ratio" => "auto"
],
"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: "wan2_7_image_pro",
params: {
prompt: "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
output_n: "1",
resolution: "2K",
aspect_ratio: "auto"
},
out_task_id: "my_task_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": "wan2_7_image_pro",
"params": [
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
],
"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"": ""wan2_7_image_pro"",
""params"": {
""prompt"": ""부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이."",
""output_n"": ""1"",
""resolution"": ""2K"",
""aspect_ratio"": ""auto""
},
""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\":\"wan2_7_image_pro\","
"\"params\":{"
"\"prompt\":\"부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.\","
"\"output_n\":\"1\","
"\"resolution\":\"2K\","
"\"aspect_ratio\":\"auto\""
"},"
"\"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": @"wan2_7_image_pro",
@"params": @{
@"prompt": @"부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
@"output_n": @"1",
@"resolution": @"2K",
@"aspect_ratio": @"auto"
},
@"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": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"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': 'wan2_7_image_pro',
'params': {
'prompt': '부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.',
'output_n': '1',
'resolution': '2K',
'aspect_ratio': 'auto'
},
'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 = "wan2_7_image_pro",
params = list(
prompt = "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
output_n = "1",
resolution = "2K",
aspect_ratio = "auto"
),
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",
"estimated_credits": 100,
"created_at": "2026-06-24T06: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 관리 페이지에 방문하여 API Key를 받으세요.사용 시 요청 헤더에 다음을 추가하세요:
Authorization: Bearer YOUR_API_KEY
Body
string
필수
모델 이름고정값:
"wan2_7_image_pro"object
필수
모델 매개변수 객체
표시 params 객체 속성
표시 params 객체 속성
string
필수
이미지 생성을 위한 텍스트 설명
- 한중문 지원, 자세하게 설명하는 것을 권장함
- 제출 전 플랫폼 민감어 / 보안 심사 진행, 위반 내용 적발 시 오류 반환
string[]
참고 이미지의 URL 목록, 입력 시 이미지 기반 생성 모드로 전환
- 다음 두 가지 형식 지원:
- 공개 접근 가능한 URL
- Base64 인코딩 형식
- 반드시 전체 Data URI 형식 사용:
data:image/{형식};base64,{base64데이터} - 지원 이미지 형식: jpeg, png, webp
- 예시:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABg... - ⚠️ 주의:
data:image/jpeg;base64,접두어 포함 필수
- 반드시 전체 Data URI 형식 사용:
string
기본값:"auto"
이미지 생성 가로세로 비율다음 값 지원:
auto- 자동으로 최적의 비율 선택 (기본값)1:1- 정사각형16:9/9:16- 와이드 가로 / 세로4:3/3:4- 표준 가로 / 세로3:2/2:3- 클래식 가로 / 세로
비율 문자열 또는
auto만 지원; 해상도(예: 1024x1024) 전달 시 오류 발생string
기본값:"2K"
이미지 해상도 단계실제 출력 이미지 선명도 제어:
1K- 기본 해상도, 비용 절감용 일상적 사용 가능2K- 표준 해상도, 포스터 / 고화질 요구에 적합 (기본값)4K- 고화질 해상도
string
기본값:"1"
생성할 이미지 수지원 값:
1- 1장 생성 (기본값)2- 2장 생성4- 4장 생성
string
필수
발신자 작업 ID사용자가 정의하는 작업 식별자로 필수 입력
Response
string
발신자 작업 ID로, 결과 조회에 사용할 수 있습니다
string
초기 상태로, 고정값은
"pending" 입니다number
예상 소모 크레딧
string
생성 시간 (ISO 형식)
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2_7_image_pro",
"params": {
"prompt": "따뜻한 스튜디오 조명 아래 캔버스에 묘사된 인간 초상화를 정성스럽게 그리는 고양이. 부드러운 집중력을 가진 브러시를 들고 있으며, 세밀하고 사실적인 유화 스타일로 풍부한 질감, 레이어드된 색상과 극적인 조명을 통해 매우 예술적인 분위기를 연출합니다.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"out_task_id": "my_task_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"image_url": ["https://static.aireiter.com/upload/wan2_7_image_pro/20260624/4g7c6b7UyTsOks_XWbVpq.webp"],
"resolution": "2K",
"aspect_ratio": "auto"
},
"out_task_id": "my_task_img2img_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"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: "wan2_7_image_pro",
params: {
prompt: "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
output_n: "1",
resolution: "2K",
aspect_ratio: "auto"
},
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": "wan2_7_image_pro",
"params": map[string]interface{}{
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto",
},
"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": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"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" => "wan2_7_image_pro",
"params" => [
"prompt" => "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n" => "1",
"resolution" => "2K",
"aspect_ratio" => "auto"
],
"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: "wan2_7_image_pro",
params: {
prompt: "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
output_n: "1",
resolution: "2K",
aspect_ratio: "auto"
},
out_task_id: "my_task_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": "wan2_7_image_pro",
"params": [
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
],
"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"": ""wan2_7_image_pro"",
""params"": {
""prompt"": ""부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이."",
""output_n"": ""1"",
""resolution"": ""2K"",
""aspect_ratio"": ""auto""
},
""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\":\"wan2_7_image_pro\","
"\"params\":{"
"\"prompt\":\"부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.\","
"\"output_n\":\"1\","
"\"resolution\":\"2K\","
"\"aspect_ratio\":\"auto\""
"},"
"\"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": @"wan2_7_image_pro",
@"params": @{
@"prompt": @"부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
@"output_n": @"1",
@"resolution": @"2K",
@"aspect_ratio": @"auto"
},
@"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": "wan2_7_image_pro",
"params": {
"prompt": "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
"output_n": "1",
"resolution": "2K",
"aspect_ratio": "auto"
},
"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': 'wan2_7_image_pro',
'params': {
'prompt': '부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.',
'output_n': '1',
'resolution': '2K',
'aspect_ratio': 'auto'
},
'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 = "wan2_7_image_pro",
params = list(
prompt = "부드러운 집중력을 가진 브러시를 들고 이젤 위에 인간 초상화를 정성스럽게 그리는 고양이.",
output_n = "1",
resolution = "2K",
aspect_ratio = "auto"
),
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",
"estimated_credits": 100,
"created_at": "2026-06-24T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "요청 파라미터가 유효하지 않습니다",
"ok": false
}
{
"error": {
"code": 401,
"message": "인증 실패, API 키를 확인하세요"
}
}
{
"error": {
"code": 433,
"message": "계정 잔액 부족, 충전 후 다시 시도하세요"
}
}
{
"error": {
"code": 500,
"message": "서버 내부 오류, 나중에 다시 시도하세요"
}
}