curl --request POST \
--url https://api.omniall.ai/mj/submit/edits \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "change coat to red",
"taskId": "xxxx",
"maskBase64": "..."
}
'import requests
url = "https://api.omniall.ai/mj/submit/edits"
payload = {
"prompt": "change coat to red",
"taskId": "xxxx",
"maskBase64": "..."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({prompt: 'change coat to red', taskId: 'xxxx', maskBase64: '...'})
};
fetch('https://api.omniall.ai/mj/submit/edits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.omniall.ai/mj/submit/edits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => 'change coat to red',
'taskId' => 'xxxx',
'maskBase64' => '...'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.omniall.ai/mj/submit/edits"
payload := strings.NewReader("{\n \"prompt\": \"change coat to red\",\n \"taskId\": \"xxxx\",\n \"maskBase64\": \"...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.omniall.ai/mj/submit/edits")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"change coat to red\",\n \"taskId\": \"xxxx\",\n \"maskBase64\": \"...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omniall.ai/mj/submit/edits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"change coat to red\",\n \"taskId\": \"xxxx\",\n \"maskBase64\": \"...\"\n}"
response = http.request(request)
puts response.read_body{
"code": 123,
"description": "<string>",
"result": "<string>",
"properties": "<unknown>"
}{
"error": {
"message": "<string>",
"type": "new_api_error",
"code": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "new_api_error",
"code": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "new_api_error",
"code": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "new_api_error",
"code": "<string>"
}
}Midjourney Edits
MJ edits / inpaint-style submit (maskBase64 when needed).
Base: https://api.omniall.ai + path. Auth: Authorization: Bearer sk-.... Tasks are async — use GET /mj/task/{id}/fetch.
curl --request POST \
--url https://api.omniall.ai/mj/submit/edits \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "change coat to red",
"taskId": "xxxx",
"maskBase64": "..."
}
'import requests
url = "https://api.omniall.ai/mj/submit/edits"
payload = {
"prompt": "change coat to red",
"taskId": "xxxx",
"maskBase64": "..."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({prompt: 'change coat to red', taskId: 'xxxx', maskBase64: '...'})
};
fetch('https://api.omniall.ai/mj/submit/edits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.omniall.ai/mj/submit/edits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => 'change coat to red',
'taskId' => 'xxxx',
'maskBase64' => '...'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.omniall.ai/mj/submit/edits"
payload := strings.NewReader("{\n \"prompt\": \"change coat to red\",\n \"taskId\": \"xxxx\",\n \"maskBase64\": \"...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.omniall.ai/mj/submit/edits")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"change coat to red\",\n \"taskId\": \"xxxx\",\n \"maskBase64\": \"...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omniall.ai/mj/submit/edits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"change coat to red\",\n \"taskId\": \"xxxx\",\n \"maskBase64\": \"...\"\n}"
response = http.request(request)
puts response.read_body{
"code": 123,
"description": "<string>",
"result": "<string>",
"properties": "<unknown>"
}{
"error": {
"message": "<string>",
"type": "new_api_error",
"code": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "new_api_error",
"code": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "new_api_error",
"code": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "new_api_error",
"code": "<string>"
}
}Authorizations
Use Authorization: Bearer sk-... from https://omniall.ai/dashboard
Body
Midjourney proxy submit body (/mj/submit/*). Field usage depends on action (imagine/change/blend/…).
Imagine/describe prompt text.
"a red fox in misty forest --v 6"
Reference images as Base64 (blend/edits/imagine with refs).
Action type for change/simple-change/action endpoints (e.g. UPSCALE, VARIATION).
Button/index for upscale/variation (1–4 typically).
Existing MJ task id when continuing (change/action/modal).
Button customId from a previous task buttons payload.
Optional webhook URL for task completion callbacks.
Opaque client state echoed by the proxy.
Bot type when required by your MJ proxy deployment.
Extra content for some actions (modal/shorten).
Mask image Base64 for edits/inpaint-style flows.
Response
Submit accepted (async). Poll task fetch with returned task id.