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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration. Warm studio lighting fills the scene, with visible brushstrokes on the portrait taking shape on the canvas. Rendered in a detailed, realistic oil painting style with rich textures, layered colors, and dramatic lighting, creating a highly artistic atmosphere.",
"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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: "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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" => "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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: "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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"": ""A cat intently painting a human portrait on an easel, holding a brush with gentle concentration."",
""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\":\"A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.\","
"\"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": @"A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
@"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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': 'A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.',
'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 = "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
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": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please recharge and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
Wan2.7-Image-Pro
Wan2.7-Image-Pro Image Generation
- Asynchronous processing mode, returns a task ID for subsequent queries
- Supports text-to-image and image-to-image generation modes
- Supports multiple image aspect ratios, passed through the aspect_ratio field (default is auto for automatic adaptation)
- Supports 1K / 2K / 4K resolution options
- Supports generating multiple images at once, controlled by the output_n field
- Submitted prompts undergo platform sensitive word / security review; violating content will be rejected immediately
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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration. Warm studio lighting fills the scene, with visible brushstrokes on the portrait taking shape on the canvas. Rendered in a detailed, realistic oil painting style with rich textures, layered colors, and dramatic lighting, creating a highly artistic atmosphere.",
"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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: "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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" => "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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: "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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"": ""A cat intently painting a human portrait on an easel, holding a brush with gentle concentration."",
""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\":\"A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.\","
"\"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": @"A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
@"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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': 'A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.',
'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 = "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
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": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please recharge and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
Authorizations
string
required
All endpoints require authentication using a Bearer Token.Get API Key:Visit the API Key Management page to obtain your API Key.Add the following to the request header when using it:
Authorization: Bearer YOUR_API_KEY
Body
string
required
Model nameFixed value:
"wan2_7_image_pro"object
required
Model parameters object
Show params object properties
Show params object properties
string
required
Text description for image generation
- Supports Chinese and English, detailed descriptions are recommended
- Will undergo platform sensitive word / security review before submission; hitting prohibited content will return an error directly
string[]
List of reference image URLs; if provided, image-to-image mode will be used
- Supports the following two formats:
- Publicly accessible URL
- Base64 encoded format
- Must use complete Data URI format:
data:image/{format};base64,{base64_data} - Supported image formats: jpeg, png, webp
- Example:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABg... - ⚠️ Note: must include the prefix
data:image/jpeg;base64,
- Must use complete Data URI format:
string
default:"auto"
Aspect ratio for image generationSupported values:
auto- Automatically select the most suitable ratio (default)1:1- Square16:9/9:16- Wide horizontal / vertical4:3/3:4- Standard horizontal / vertical3:2/2:3- Classic horizontal / vertical
Only ratio strings or
auto are supported; passing pixel dimensions (e.g., 1024x1024) will cause an errorstring
default:"2K"
Image resolution tierControls the actual output clarity:
1K- Basic resolution, cost-effective for daily use2K- Standard resolution, suitable for posters / HD needs (default)4K- High definition resolution
string
default:"1"
Number of images to generateSupported values:
1- Generate 1 image (default)2- Generate 2 images4- Generate 4 images
string
required
Initiator task IDUser-defined task identifier, required
Response
string
Initiator task ID, which can be used to query the results
string
Initial status, fixed as
"pending"number
Estimated credit consumption
string
Creation time (ISO format)
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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration. Warm studio lighting fills the scene, with visible brushstrokes on the portrait taking shape on the canvas. Rendered in a detailed, realistic oil painting style with rich textures, layered colors, and dramatic lighting, creating a highly artistic atmosphere.",
"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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: "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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" => "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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: "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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"": ""A cat intently painting a human portrait on an easel, holding a brush with gentle concentration."",
""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\":\"A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.\","
"\"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": @"A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
@"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": "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
"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': 'A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.',
'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 = "A cat intently painting a human portrait on an easel, holding a brush with gentle concentration.",
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": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please recharge and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}