Skip to main content

Midjourney Overview

Crazyrouter provides a complete Midjourney API proxy, supporting all operations including Imagine, Blend, Describe, Upscale, Variation, and more. All requests are processed asynchronously via tasks.

Base Path

https://crazyrouter.com/mj

Authentication

Pass your API Key in the request header:
Authorization: Bearer YOUR_API_KEY

Task Object

Each Midjourney request submission returns a task object. The task object contains the following fields:
FieldTypeDescription
idstringUnique task identifier
actionstringTask type: IMAGINE, UPSCALE, VARIATION, BLEND, DESCRIBE, etc.
statusstringTask status
promptstringSubmitted prompt
promptEnstringTranslated English prompt
descriptionstringTask description
submitTimenumberSubmission time (millisecond timestamp)
startTimenumberProcessing start time
finishTimenumberCompletion time
progressstringProgress percentage, e.g. "100%"
imageUrlstringGenerated image URL
failReasonstringFailure reason (only present on failure)
propertiesobjectAdditional properties
buttonsarrayList of available action buttons

Task Status

StatusDescription
NOT_STARTTask submitted, waiting to be processed
SUBMITTEDTask submitted to Midjourney
IN_PROGRESSTask is being processed
SUCCESSTask completed
FAILURETask failed

Action Buttons

After a task completes, the buttons field contains available follow-up actions:
{
  "buttons": [
    {"customId": "MJ::JOB::upsample::1::hash", "emoji": "U1", "label": "U1", "style": 2},
    {"customId": "MJ::JOB::upsample::2::hash", "emoji": "U2", "label": "U2", "style": 2},
    {"customId": "MJ::JOB::upsample::3::hash", "emoji": "U3", "label": "U3", "style": 2},
    {"customId": "MJ::JOB::upsample::4::hash", "emoji": "U4", "label": "U4", "style": 2},
    {"customId": "MJ::JOB::variation::1::hash", "emoji": "V1", "label": "V1", "style": 2},
    {"customId": "MJ::JOB::variation::2::hash", "emoji": "V2", "label": "V2", "style": 2},
    {"customId": "MJ::JOB::variation::3::hash", "emoji": "V3", "label": "V3", "style": 2},
    {"customId": "MJ::JOB::variation::4::hash", "emoji": "V4", "label": "V4", "style": 2}
  ]
}
Use the customId to call the Action endpoint to perform the corresponding operation (upscale, variation, etc.).

API Endpoints Overview

MethodEndpointDescription
POST/mj/submit/imagineSubmit an Imagine task
POST/mj/submit/actionExecute an action (upscale, variation, etc.)
POST/mj/submit/blendBlend images
POST/mj/submit/describeDescribe an image
POST/mj/submit/modalSubmit modal confirmation
POST/mj/submit/shortenShorten a prompt
GET/mj/task/{id}/fetchQuery a single task
POST/mj/task/list-by-conditionBatch query tasks
GET/mj/task/{id}/image-seedGet image seed
Midjourney tasks are processed asynchronously. After submission, you need to poll the task status. It is recommended to query every 3-5 seconds until the status becomes SUCCESS or FAILURE.