Use CometAPI POST /mj/submit/action to apply Midjourney actions—upscale, variation, reroll, zoom, and more—on images generated via imaging.
curl --request POST \
--url https://api.cometapi.com/mj/submit/action \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customId": "MJ::JOB::variation::3::example",
"taskId": "1773314942177684"
}
'{
"code": 123,
"description": "<string>",
"result": "<string>",
"properties": {
"numberOfQueues": 123,
"discordInstanceId": "<string>",
"discordChannelId": "<string>"
}
}taskId from the original or most recent Midjourney taskcustomId from the latest buttons array returned by Fetch Single TaskcustomId is not stable. Never hardcode it. Always read it from the latest polling response.U1 to U4: upscale one image from the gridV1 to V4: generate variations from one image positionPoll the new task
Handle modal-only actions
MODAL, continue with Modal to supply the extra input.Bearer token authentication. Use your CometAPI key.
Action id taken from the latest buttons array returned by the fetch endpoint.
Midjourney task id you want to continue from.
Custom state string. Returned as-is in the task result and webhook callback for your own tracking.
Whether to force remix mode when the current action supports it.
Whether to prefer the same channel account used by the current task.
curl --request POST \
--url https://api.cometapi.com/mj/submit/action \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customId": "MJ::JOB::variation::3::example",
"taskId": "1773314942177684"
}
'{
"code": 123,
"description": "<string>",
"result": "<string>",
"properties": {
"numberOfQueues": 123,
"discordInstanceId": "<string>",
"discordChannelId": "<string>"
}
}