curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mj_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_task_001"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mj_v8_1",
"params": {
"prompt": "A futuristic city skyline, flying cars weaving through neon lights --ar 16:9 --s 500",
"speed": "fast",
"quality": "hd"
},
"out_task_id": "mj_v8_1_hd_task_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "mj_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
params: {
prompt: "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
speed: "fast",
quality: "standard"
},
out_task_id: "mj_v8_1_javascript_001"
})
});
console.log(await response.json());
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
payload := []byte(`{
"model":"mj_v8_1",
"params":{
"prompt":"A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed":"fast",
"quality":"standard"
},
"out_task_id":"mj_v8_1_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_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
"params" => [
"prompt" => "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed" => "fast",
"quality" => "standard"
],
"out_task_id" => "mj_v8_1_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_v8_1",
params: {
prompt: "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
speed: "fast",
quality: "standard"
},
out_task_id: "mj_v8_1_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_v8_1",
"params": [
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
],
"out_task_id": "mj_v8_1_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_v8_1"",
""params"": {
""prompt"": ""A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300"",
""speed"": ""fast"",
""quality"": ""standard""
},
""out_task_id"": ""mj_v8_1_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_v8_1\",\"params\":{\"prompt\":\"A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300\",\"speed\":\"fast\",\"quality\":\"standard\"},\"out_task_id\":\"mj_v8_1_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_v8_1",
@"params": @{
@"prompt": @"A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
@"speed": @"fast",
@"quality": @"standard"
},
@"out_task_id": @"mj_v8_1_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_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
params = list(
prompt = "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
speed = "fast",
quality = "standard"
),
out_task_id = "mj_v8_1_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_v8_1_task_001",
"estimated_credits": 0
},
"ok": true
}
{
"statusCode": 400,
"message": "Invalid quality: \"ultra\". Allowed: [standard, hd]",
"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"
}
}
Midjourney V8.1
Midjourney V8.1 Image Generation
- Asynchronous processing mode, returns a task ID for later query
- Supports native Midjourney syntax (—ar, —s, —chaos, —seed, —sref, etc.)
- Provides two speed tiers: Draft and Fast, and two quality tiers: Standard and HD
- Supports text-to-image and image-to-image; automatically switches to image-to-image when image_url is provided
- Generates 4 images per request, with 1-4 images actually returned
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_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_task_001"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mj_v8_1",
"params": {
"prompt": "A futuristic city skyline, flying cars weaving through neon lights --ar 16:9 --s 500",
"speed": "fast",
"quality": "hd"
},
"out_task_id": "mj_v8_1_hd_task_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "mj_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
params: {
prompt: "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
speed: "fast",
quality: "standard"
},
out_task_id: "mj_v8_1_javascript_001"
})
});
console.log(await response.json());
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
payload := []byte(`{
"model":"mj_v8_1",
"params":{
"prompt":"A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed":"fast",
"quality":"standard"
},
"out_task_id":"mj_v8_1_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_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
"params" => [
"prompt" => "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed" => "fast",
"quality" => "standard"
],
"out_task_id" => "mj_v8_1_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_v8_1",
params: {
prompt: "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
speed: "fast",
quality: "standard"
},
out_task_id: "mj_v8_1_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_v8_1",
"params": [
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
],
"out_task_id": "mj_v8_1_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_v8_1"",
""params"": {
""prompt"": ""A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300"",
""speed"": ""fast"",
""quality"": ""standard""
},
""out_task_id"": ""mj_v8_1_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_v8_1\",\"params\":{\"prompt\":\"A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300\",\"speed\":\"fast\",\"quality\":\"standard\"},\"out_task_id\":\"mj_v8_1_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_v8_1",
@"params": @{
@"prompt": @"A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
@"speed": @"fast",
@"quality": @"standard"
},
@"out_task_id": @"mj_v8_1_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_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
params = list(
prompt = "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
speed = "fast",
quality = "standard"
),
out_task_id = "mj_v8_1_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_v8_1_task_001",
"estimated_credits": 0
},
"ok": true
}
{
"statusCode": 400,
"message": "Invalid quality: \"ultra\". Allowed: [standard, hd]",
"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 Bearer Token authentication.Get the API Key:Visit the API Key management page to get your API Key.When using it, add the following to the request header:
Authorization: Bearer YOUR_API_KEY
Body
string
required
Model name.Fixed value:
"mj_v8_1"object
required
Model parameters object.
Show Properties of the params object
Show Properties of the params object
string
required
Image generation instructions. 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, used for reproduction--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)
Draft speed only supports Standard quality and does not support HD quality.
string
default:"standard"
Quality tier.Supported values:
standard- Standard quality (default)hd- High-definition quality, supported only by Fast speed
HD quality is only available at Fast speed, and Draft speed does not support HD.
string[]
Array of reference images. After passing in this field, image-to-image mode is used automatically; if omitted, text-to-image mode is used.
- Up to 1 reference image
- Maximum size of a single image is 10MB
- Supports jpeg, png, 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 must not require login, Cookie, or temporary page authorization.
string
required
Caller-defined task ID, used for idempotent submission and result retrieval.
- Length is 1-64 characters
- Only letters, numbers, underscores, and hyphens are allowed
- Cannot be reused under the same API Key
Response
string
Caller task ID, can be used to query the result.
string
Initial status, fixed as
"pending".number
Estimated credits consumption.
string
Creation time, in ISO 8601 format.
Query Results
After a successful submission, call the API using 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_v8_1_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 located 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_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_task_001"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mj_v8_1",
"params": {
"prompt": "A futuristic city skyline, flying cars weaving through neon lights --ar 16:9 --s 500",
"speed": "fast",
"quality": "hd"
},
"out_task_id": "mj_v8_1_hd_task_001"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "mj_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
params: {
prompt: "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
speed: "fast",
quality: "standard"
},
out_task_id: "mj_v8_1_javascript_001"
})
});
console.log(await response.json());
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
payload := []byte(`{
"model":"mj_v8_1",
"params":{
"prompt":"A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed":"fast",
"quality":"standard"
},
"out_task_id":"mj_v8_1_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_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
"params" => [
"prompt" => "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed" => "fast",
"quality" => "standard"
],
"out_task_id" => "mj_v8_1_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_v8_1",
params: {
prompt: "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
speed: "fast",
quality: "standard"
},
out_task_id: "mj_v8_1_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_v8_1",
"params": [
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
],
"out_task_id": "mj_v8_1_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_v8_1"",
""params"": {
""prompt"": ""A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300"",
""speed"": ""fast"",
""quality"": ""standard""
},
""out_task_id"": ""mj_v8_1_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_v8_1\",\"params\":{\"prompt\":\"A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300\",\"speed\":\"fast\",\"quality\":\"standard\"},\"out_task_id\":\"mj_v8_1_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_v8_1",
@"params": @{
@"prompt": @"A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
@"speed": @"fast",
@"quality": @"standard"
},
@"out_task_id": @"mj_v8_1_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_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
"params": {
"prompt": "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
"speed": "fast",
"quality": "standard"
},
"out_task_id": "mj_v8_1_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_v8_1",
params = list(
prompt = "A tranquil lake reflecting sunset-lit mountains, cinematic lighting --ar 16:9 --s 300",
speed = "fast",
quality = "standard"
),
out_task_id = "mj_v8_1_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_v8_1_task_001",
"estimated_credits": 0
},
"ok": true
}
{
"statusCode": 400,
"message": "Invalid quality: \"ultra\". Allowed: [standard, hd]",
"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"
}
}