curl --request POST \
--url https://api.omniall.ai/mj/submit/action \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"taskId": "xxxx",
"customId": "MJ::JOB::upsample::1"
}
'import requests
url = "https://api.omniall.ai/mj/submit/action"
payload = {
"taskId": "xxxx",
"customId": "MJ::JOB::upsample::1"
}
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({taskId: 'xxxx', customId: 'MJ::JOB::upsample::1'})
};
fetch('https://api.omniall.ai/mj/submit/action', 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/action",
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([
'taskId' => 'xxxx',
'customId' => 'MJ::JOB::upsample::1'
]),
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/action"
payload := strings.NewReader("{\n \"taskId\": \"xxxx\",\n \"customId\": \"MJ::JOB::upsample::1\"\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/action")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"taskId\": \"xxxx\",\n \"customId\": \"MJ::JOB::upsample::1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omniall.ai/mj/submit/action")
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 \"taskId\": \"xxxx\",\n \"customId\": \"MJ::JOB::upsample::1\"\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 Action
Execute a button action via customId from a previous task.
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/action \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"taskId": "xxxx",
"customId": "MJ::JOB::upsample::1"
}
'import requests
url = "https://api.omniall.ai/mj/submit/action"
payload = {
"taskId": "xxxx",
"customId": "MJ::JOB::upsample::1"
}
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({taskId: 'xxxx', customId: 'MJ::JOB::upsample::1'})
};
fetch('https://api.omniall.ai/mj/submit/action', 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/action",
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([
'taskId' => 'xxxx',
'customId' => 'MJ::JOB::upsample::1'
]),
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/action"
payload := strings.NewReader("{\n \"taskId\": \"xxxx\",\n \"customId\": \"MJ::JOB::upsample::1\"\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/action")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"taskId\": \"xxxx\",\n \"customId\": \"MJ::JOB::upsample::1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omniall.ai/mj/submit/action")
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 \"taskId\": \"xxxx\",\n \"customId\": \"MJ::JOB::upsample::1\"\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.