curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_task_001"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mj_v7",
"params": {
"prompt": "transform into a watercolor painting style --ar 1:1",
"speed": "fast",
"image_url": ["https://example.com/reference.png"]
},
"out_task_id": "mj_v7_img_task_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_python_001"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const response = await fetch("https://aireiter.com/api/openapi/submit", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "mj_v7",
params: {
prompt: "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
speed: "fast"
},
out_task_id: "mj_v7_javascript_001"
})
});
console.log(await response.json());
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
payload := []byte(`{
"model":"mj_v7",
"params":{
"prompt":"An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed":"fast"
},
"out_task_id":"mj_v7_go_001"
}`)
req, _ := http.NewRequest(
http.MethodPost,
"https://aireiter.com/api/openapi/submit",
bytes.NewBuffer(payload),
)
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
response, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"model": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_java_001"
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://aireiter.com/api/openapi/submit"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}
<?php
$payload = [
"model" => "mj_v7",
"params" => [
"prompt" => "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed" => "fast"
],
"out_task_id" => "mj_v7_php_001"
];
$ch = curl_init("https://aireiter.com/api/openapi/submit");
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"
]);
echo curl_exec($ch);
curl_close($ch);
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://aireiter.com/api/openapi/submit")
payload = {
model: "mj_v7",
params: {
prompt: "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
speed: "fast"
},
out_task_id: "mj_v7_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": "mj_v7",
"params": [
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
],
"out_task_id": "mj_v7_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"": ""mj_v7"",
""params"": {
""prompt"": ""An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250"",
""speed"": ""fast""
},
""out_task_id"": ""mj_v7_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\":\"mj_v7\",\"params\":{\"prompt\":\"An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250\",\"speed\":\"fast\"},\"out_task_id\":\"mj_v7_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": @"mj_v7",
@"params": @{
@"prompt": @"An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
@"speed": @"fast"
},
@"out_task_id": @"mj_v7_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": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_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": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_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 = "mj_v7",
params = list(
prompt = "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
speed = "fast"
),
out_task_id = "mj_v7_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": {
"task_id": "",
"status": "pending",
"created_at": "2026-08-12T10:00:00.000Z",
"out_task_id": "mj_v7_task_001",
"estimated_credits": 0
},
"ok": true
}
{
"statusCode": 400,
"message": "Invalid speed: \"ultra\". Allowed: [draft, fast, turbo]",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
Midjourney V7
Midjourney V7 Image Generation
- Asynchronous processing mode, returns a task ID for later query
- Supports native Midjourney syntax (—ar, —s, —chaos, —seed, —sref, etc.)
- Provides three speed options: Draft, Fast, and Turbo
- Supports text-to-image and image-to-image; automatically switches to image-to-image after passing image_url
- Each request generates 4 images and returns 1-4 images in practice
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": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_task_001"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mj_v7",
"params": {
"prompt": "transform into a watercolor painting style --ar 1:1",
"speed": "fast",
"image_url": ["https://example.com/reference.png"]
},
"out_task_id": "mj_v7_img_task_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_python_001"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const response = await fetch("https://aireiter.com/api/openapi/submit", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "mj_v7",
params: {
prompt: "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
speed: "fast"
},
out_task_id: "mj_v7_javascript_001"
})
});
console.log(await response.json());
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
payload := []byte(`{
"model":"mj_v7",
"params":{
"prompt":"An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed":"fast"
},
"out_task_id":"mj_v7_go_001"
}`)
req, _ := http.NewRequest(
http.MethodPost,
"https://aireiter.com/api/openapi/submit",
bytes.NewBuffer(payload),
)
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
response, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"model": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_java_001"
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://aireiter.com/api/openapi/submit"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}
<?php
$payload = [
"model" => "mj_v7",
"params" => [
"prompt" => "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed" => "fast"
],
"out_task_id" => "mj_v7_php_001"
];
$ch = curl_init("https://aireiter.com/api/openapi/submit");
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"
]);
echo curl_exec($ch);
curl_close($ch);
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://aireiter.com/api/openapi/submit")
payload = {
model: "mj_v7",
params: {
prompt: "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
speed: "fast"
},
out_task_id: "mj_v7_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": "mj_v7",
"params": [
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
],
"out_task_id": "mj_v7_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"": ""mj_v7"",
""params"": {
""prompt"": ""An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250"",
""speed"": ""fast""
},
""out_task_id"": ""mj_v7_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\":\"mj_v7\",\"params\":{\"prompt\":\"An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250\",\"speed\":\"fast\"},\"out_task_id\":\"mj_v7_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": @"mj_v7",
@"params": @{
@"prompt": @"An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
@"speed": @"fast"
},
@"out_task_id": @"mj_v7_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": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_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": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_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 = "mj_v7",
params = list(
prompt = "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
speed = "fast"
),
out_task_id = "mj_v7_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": {
"task_id": "",
"status": "pending",
"created_at": "2026-08-12T10:00:00.000Z",
"out_task_id": "mj_v7_task_001",
"estimated_credits": 0
},
"ok": true
}
{
"statusCode": 400,
"message": "Invalid speed: \"ultra\". Allowed: [draft, fast, turbo]",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
Authorizations
string
required
All endpoints require authentication using a Bearer Token.Get the API Key:Visit the API Key management page to get your API Key.When using it, add the following to the request headers:
Authorization: Bearer YOUR_API_KEY
Body
string
required
Model name.Fixed value:
"mj_v7"object
required
Model parameters object.
Show Properties of the params object
Show Properties of the params object
string
required
Image generation prompt. Native Midjourney syntax is supported, and the following parameters can be used directly in the prompt:
--ar- Aspect ratio (for example,--ar 16:9)--s- Stylization level 0-1000--chaos- Chaos level 0-100--seed- Random seed for reproducibility--sref- Style reference image URL--oref- Image reference URL--iw- Image weight--no- Negative prompt
string
default:"fast"
Speed tier.Supported values:
draft- Low-cost rapid iterationfast- Standard generation (default)turbo- Fastest speed
string[]
Array of reference images. If provided, image-to-image mode is used automatically; if omitted, text-to-image mode is used.
- Up to 1 reference image
- Maximum size per image: 10MB
- Supports jpeg, png, and webp
- Supports the following two formats:
- Publicly accessible URL
- Complete Base64 Data URI, for example
data:image/jpeg;base64,/9j/4AAQ...
The URL must be directly accessible from the public internet and cannot require login, cookies, or temporary page authorization.
string
required
Caller-defined task ID, used for idempotent submission and result retrieval.
- Length: 1-64 characters
- Only letters, numbers, underscores, and hyphens are allowed
- Cannot be reused under the same API Key
Response
string
Caller task ID, which can be used to query the result.
string
Initial status, fixed as
"pending".number
Estimated credits consumed.
string
Creation time, in ISO 8601 format.
Query Results
After the submission is successful, call with the sameout_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": "mj_v7_task_001"
}'
pending, processing, completed, and failed. After the task is completed, the result image is located in data.output, and the actual credits used are in data.credits_used.
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_task_001"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mj_v7",
"params": {
"prompt": "transform into a watercolor painting style --ar 1:1",
"speed": "fast",
"image_url": ["https://example.com/reference.png"]
},
"out_task_id": "mj_v7_img_task_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_python_001"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const response = await fetch("https://aireiter.com/api/openapi/submit", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "mj_v7",
params: {
prompt: "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
speed: "fast"
},
out_task_id: "mj_v7_javascript_001"
})
});
console.log(await response.json());
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
payload := []byte(`{
"model":"mj_v7",
"params":{
"prompt":"An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed":"fast"
},
"out_task_id":"mj_v7_go_001"
}`)
req, _ := http.NewRequest(
http.MethodPost,
"https://aireiter.com/api/openapi/submit",
bytes.NewBuffer(payload),
)
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
response, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"model": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_java_001"
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://aireiter.com/api/openapi/submit"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}
<?php
$payload = [
"model" => "mj_v7",
"params" => [
"prompt" => "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed" => "fast"
],
"out_task_id" => "mj_v7_php_001"
];
$ch = curl_init("https://aireiter.com/api/openapi/submit");
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"
]);
echo curl_exec($ch);
curl_close($ch);
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://aireiter.com/api/openapi/submit")
payload = {
model: "mj_v7",
params: {
prompt: "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
speed: "fast"
},
out_task_id: "mj_v7_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": "mj_v7",
"params": [
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
],
"out_task_id": "mj_v7_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"": ""mj_v7"",
""params"": {
""prompt"": ""An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250"",
""speed"": ""fast""
},
""out_task_id"": ""mj_v7_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\":\"mj_v7\",\"params\":{\"prompt\":\"An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250\",\"speed\":\"fast\"},\"out_task_id\":\"mj_v7_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": @"mj_v7",
@"params": @{
@"prompt": @"An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
@"speed": @"fast"
},
@"out_task_id": @"mj_v7_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": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_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": "mj_v7",
"params": {
"prompt": "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
"speed": "fast"
},
"out_task_id": "mj_v7_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 = "mj_v7",
params = list(
prompt = "An orange cat sitting on a windowsill, warm sunlight streaming in, --ar 16:9 --s 250",
speed = "fast"
),
out_task_id = "mj_v7_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": {
"task_id": "",
"status": "pending",
"created_at": "2026-08-12T10:00:00.000Z",
"out_task_id": "mj_v7_task_001",
"estimated_credits": 0
},
"ok": true
}
{
"statusCode": 400,
"message": "Invalid speed: \"ultra\". Allowed: [draft, fast, turbo]",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}