openapi: "3.0.2"
info:
title: Midjourney REST API v2 by useapi.net
description: Simple, reliable and affordable way to use Midjourney via standard REST API
version: "1.0"
servers:
- url: https://api.useapi.net/v2
components:
securitySchemes:
apiToken:
type: http
scheme: bearer
description: API Token
schemas:
accountResponse:
type: object
properties:
email:
type: string
created:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
name:
type: string
verified:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
sub:
type: string
replyUrl:
type: string
error:
type: string
errorDetails:
type: string
code:
type: integer
midjourneyResponse:
type: object
properties:
discord:
type: string
channel:
type: string
server:
type: string
maxJobs:
type: integer
pendingModMessage:
description: Your Discord account has received a pending moderation message from Midjourney. Please address this issue and reset pendingModMessage before making any new API calls
type: string
error:
type: string
errorDetails:
type: string
code:
type: integer
imagineResponse:
type: object
properties:
jobid:
description: Use returned jobid value to retrieve job status and results
type: string
verb:
type: string
enum:
- imagine
status:
type: string
enum:
- started
- moderated
- failed
created:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
updated:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
prompt:
type: string
discord:
description: Provided for debugging purposes only, contains the first 3 and the last 3 characters of the original value
type: string
channel:
type: string
server:
type: string
maxJobs:
type: integer
replyUrl:
type: string
replyRef:
type: string
messageId:
type: string
content:
description: Contains message generated by Midjourney reflecting current generation parameters and progress
type: string
timestamp:
type: string
error:
type: string
errorDetails:
type: string
executingJobs:
type: array
items:
type: string
code:
type: integer
buttonResponse:
type: object
properties:
jobid:
description: Use returned jobid value to retrieve job status and results
type: string
verb:
type: string
enum:
- button
status:
type: string
enum:
- started
- moderated
- failed
created:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
updated:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
button:
type: string
enum:
- U1
- U2
- U3
- U4
- V1
- V2
- V3
- V4
- ⬅️
- ➡️
- ⬆️
- ⬇️
- 🔄
- Vary (Strong)
- Vary (Subtle)
- Zoom Out 1.5x
- Zoom Out 2x
- Upscale (2x)
- Upscale (4x)
- Upscale (Subtle)
- Upscale (Creative)
- Redo Upscale (2x)
- Redo Upscale (4x)
- Redo Upscale (Subtle)
- Redo Upscale (Creative)
- Make Square
- Make Variations
- Remaster
- Custom Zoom
prompt:
description: Required for button Custom Zoom https://docs.midjourney.com/docs/zoom-out#custom-zoom
type: string
parentJobId:
type: string
discord:
description: Provided for debugging purposes only, contains the first 3 and the last 3 characters of the original value
type: string
channel:
type: string
server:
type: string
maxJobs:
type: integer
replyRef:
type: string
replyUrl:
type: string
messageId:
type: string
content:
description: Contains message generated by Midjourney reflecting current generation parameters and progress
type: string
timestamp:
type: string
error:
type: string
errorDetails:
type: string
executingJobs:
type: array
items:
type: string
code:
type: integer
blendResponse:
type: object
properties:
jobid:
description: Use returned jobid value to retrieve job status and results
type: string
verb:
type: string
enum:
- blend
status:
type: string
enum:
- started
- moderated
- failed
created:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
updated:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
blendUrls:
type: array
items:
type: string
blendDimensions:
type: string
enum:
- Portrait
- Square
- Landscape
discord:
description: Provided for debugging purposes only, contains the first 3 and the last 3 characters of the original value
type: string
channel:
type: string
server:
type: string
maxJobs:
type: integer
replyRef:
type: string
replyUrl:
type: string
messageId:
type: string
content:
description: Contains message generated by Midjourney reflecting current generation parameters and progress
type: string
timestamp:
type: string
error:
type: string
errorDetails:
type: string
executingJobs:
type: array
items:
type: string
code:
type: integer
describeResponse:
type: object
properties:
jobid:
description: Use returned jobid value to retrieve job status and results
type: string
verb:
type: string
enum:
- describe
status:
type: string
enum:
- started
- moderated
- failed
created:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
updated:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
describeUrl:
type: string
discord:
description: Provided for debugging purposes only, contains the first 3 and the last 3 characters of the original value
type: string
channel:
type: string
server:
type: string
maxJobs:
type: integer
replyRef:
type: string
replyUrl:
type: string
messageId:
type: string
content:
description: Contains message generated by Midjourney reflecting current generation parameters and progress
type: string
timestamp:
type: string
error:
type: string
errorDetails:
type: string
executingJobs:
type: array
items:
type: string
code:
type: integer
jobResponse:
type: object
properties:
jobid:
type: string
parentJobId:
type: string
verb:
type: string
enum:
- imagine
- button
- blend
- describe
- info
- relax
- fast
- turbo
- variability
status:
description: If value is created, started or progress wait in a loop for at least 10..30 seconds and retry again
type: string
enum:
- created
- started
- moderated
- progress
- completed
- failed
- cancelled
created:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
updated:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
prompt:
type: string
blendUrls:
type: array
items:
type: string
blendDimensions:
type: string
enum:
- Portrait
- Square
- Landscape
describeUrl:
type: string
button:
type: string
enum:
- U1
- U2
- U3
- U4
- V1
- V2
- V3
- V4
- ⬅️
- ➡️
- ⬆️
- ⬇️
- 🔄
- Vary (Strong)
- Vary (Subtle)
- Zoom Out 1.5x
- Zoom Out 2x
- Upscale (2x)
- Upscale (4x)
- Upscale (Subtle)
- Upscale (Creative)
- Redo Upscale (2x)
- Redo Upscale (4x)
- Redo Upscale (Subtle)
- Redo Upscale (Creative)
- Make Square
- Make Variations
- Remaster
- Custom Zoom
children:
type: array
items:
type: object
properties:
button:
type: string
enum:
- U1
- U2
- U3
- U4
- V1
- V2
- V3
- V4
- ⬅️
- ➡️
- ⬆️
- ⬇️
- 🔄
- Vary (Strong)
- Vary (Subtle)
- Zoom Out 1.5x
- Zoom Out 2x
- Upscale (2x)
- Upscale (4x)
- Upscale (Subtle)
- Upscale (Creative)
- Redo Upscale (2x)
- Redo Upscale (4x)
- Redo Upscale (Subtle)
- Redo Upscale (Creative)
- Make Square
- Make Variations
- Remaster
- Custom Zoom
jobid:
type: string
messageId:
type: string
buttons:
type: array
items:
type: string
enum:
- U1
- U2
- U3
- U4
- V1
- V2
- V3
- V4
- ⬅️
- ➡️
- ⬆️
- ⬇️
- 🔄
- Vary (Strong)
- Vary (Subtle)
- Zoom Out 1.5x
- Zoom Out 2x
- Upscale (2x)
- Upscale (4x)
- Upscale (Subtle)
- Upscale (Creative)
- Redo Upscale (2x)
- Redo Upscale (4x)
- Redo Upscale (Subtle)
- Redo Upscale (Creative)
- Make Square
- Make Variations
- Remaster
- Custom Zoom
discord:
description: Provided for debugging purposes only, contains the first 3 and the last 3 characters of the original value
type: string
channel:
type: string
server:
type: string
maxJobs:
type: integer
replyRef:
type: string
replyUrl:
type: string
messageId:
type: string
content:
description: Message generated by Midjourney reflecting current generation parameters and progress
type: string
timestamp:
type: string
attachments:
type: array
items:
type: object
properties:
proxy_url:
type: string
size:
type: integer
url:
type: string
width:
type: integer
content_type:
type: string
filename:
type: string
height:
type: integer
id:
type: string
embeds:
description: Contains additional information
type: array
items:
type: object
properties:
type:
type: string
description:
type: string
image:
type: object
properties:
url:
type: string
proxy_url:
type: string
width:
type: number
height:
type: number
error:
type: string
errorDetails:
type: string
code:
type: integer
jobCancelResponse:
type: object
properties:
jobid:
type: string
status:
type: string
enum:
- created
- started
- moderated
- progress
- completed
- failed
- cancelled
error:
type: string
errorDetails:
type: string
code:
type: integer
jobsResponse:
type: array
items:
type: string
completedResponse:
type: object
properties:
jobid:
type: string
verb:
type: string
enum:
- info
- relax
- fast
- turbo
- variability
status:
type: string
enum:
- completed
created:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
updated:
description: YYYY-MM-DDTHH:mm:ss.sssZ, IS0 8601, UTC
type: string
discord:
description: Provided for debugging purposes only, contains the first 3 and the last 3 characters of the original value
type: string
channel:
type: string
server:
type: string
replyUrl:
type: string
replyRef:
type: string
messageId:
type: string
content:
description: Contains message generated by Midjourney reflecting current generation parameters and progress
type: string
timestamp:
type: string
embeds:
description: Contains additional information
type: array
items:
type: object
properties:
type:
type: string
description:
type: string
image:
type: object
properties:
url:
type: string
proxy_url:
type: string
width:
type: number
height:
type: number
code:
type: integer
responseError:
type: object
properties:
error:
type: string
errorDetails:
type: string
code:
type: integer
security:
- apiToken: []
paths:
/account:
get:
description: Retrieve account information
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/accountResponse"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/accountResponse"
post:
description: Update account information
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
description: User name
type: string
replyUrl:
description: Default callback URL, API will call the provided replyUrl once generation completed to be used for all API endpoints
type: string
responses:
"204":
description: No Content
"400":
description: replyUrl is too long
content:
application/json:
schema:
$ref: "#/components/schemas/accountResponse"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/accountResponse"
/account/midjourney:
get:
description: Retrieve Midjourney accounts information, see https://useapi.net/docs/api-v2/get-account-midjourney
responses:
"200":
description: OK
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/midjourneyResponse"
/account/midjourney/{channel}:
get:
description: Retrieve Midjourney account information for specified channel
parameters:
- in: path
name: channel
schema:
type: string
required: true
description: Midjourney channel id
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/midjourneyResponse"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/midjourneyResponse"
"404":
description: Configuration not found for provided channel
delete:
description: Delete Midjourney account information for specified channel
parameters:
- in: path
name: channel
schema:
type: string
required: true
description: Midjourney channel id
responses:
"204":
description: No Content
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/midjourneyResponse"
"404":
description: Configuration not found for provided channel
post:
description: Create or update Midjourney account information for specified channel
parameters:
- in: path
name: channel
schema:
type: string
required: true
description: Midjourney channel id
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
discord:
description: Discord token
type: string
server:
description: Discord server id
type: string
channel:
description: Discord channel id
type: string
maxJobs:
description: Maximum Concurrent Jobs
type: integer
minimum: 1
maximum: 15
required:
- discord
- server
- channel
- maxJobs
responses:
"204":
description: No Content
"400":
description: One of the required params is missing, has an incorrect value, or is duplicated across another account
content:
application/json:
schema:
$ref: "#/components/schemas/accountResponse"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/accountResponse"
/account/midjourney/{channel}/reset:
post:
description: Reset the pendingModMessage field for the Midjourney account specified by the channel
parameters:
- in: path
name: channel
schema:
type: string
required: true
description: Midjourney channel id
responses:
"204":
description: No Content
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/accountResponse"
"404":
description: Configuration not found for provided channel
/jobs/imagine:
post:
description: Submit the Midjourney /imagine command
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
prompt:
description: Midjourney prompt
type: string
maxLength: 1024
discord:
description: Discord token, optional if a value has already been provided for the account via the POST /account/midjourney/{channel}
type: string
server:
description: Discord server id, optional if a value has already been provided for the account via the POST /account/midjourney/{channel}
type: string
channel:
description: Discord channel id, optional if a value has already been provided for the account via the POST /account/midjourney/{channel}
type: string
maxJobs:
description: Optional Maximum Concurrent Jobs for current Midjourney subscription, optional if a value has already been provided for the account via the POST /account/midjourney/{channel}
type: integer
minimum: 1
maximum: 15
replyUrl:
description: Optional callback URL, API will call the provided replyUrl once generation completed. Value can be provided for the account via the POST /account/midjourney/{channel}
type: string
replyRef:
description: Optional reference id which will be stored and returned along with this job response / result
type: string
required:
- prompt
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/imagineResponse"
"400":
description: prompt, discord, server or channel value is missing | prompt, replyRef or replyUrl is too long
content:
application/json:
schema:
$ref: "#/components/schemas/responseError"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/responseError"
"402":
description: Account has no subscription or subscription expired
content:
application/json:
schema:
$ref: "#/components/schemas/responseError"
"422":
description: Moderated or invalid prompt
content:
application/json:
schema:
$ref: "#/components/schemas/imagineResponse"
"429":
description: API query is full and can not accept new jobs/imagine requests or Discord rate limit detected. Please wait at least 10..30 seconds and retry again.
content:
application/json:
schema:
$ref: "#/components/schemas/imagineResponse"
"504":
description: Job queued. The API will not be able to track the progress of this job, although it will still be processed by Midjourney. You may want to adjust the maxJobs number to a lower value for the next several minutes.
content:
application/json:
schema:
$ref: "#/components/schemas/imagineResponse"
"596":
description: Your Discord account has received a pending moderation message from Midjourney. Please address this issue and reset pendingModMessage before making any new API calls
content:
application/json:
schema:
$ref: "#/components/schemas/imagineResponse"
/jobs/button:
post:
description: Midjourney upscale or create variations and enhance or modify buttons
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
jobid:
description: jobid of successfully completed (status set to completed) jobs/imagine, jobs/blend or jobs/button job
type: string
button:
description: button from buttons array of job referenced via jobid
type: string
enum:
- U1
- U2
- U3
- U4
- V1
- V2
- V3
- V4
- ⬅️
- ➡️
- ⬆️
- ⬇️
- 🔄
- Vary (Strong)
- Vary (Subtle)
- Zoom Out 1.5x
- Zoom Out 2x
- Upscale (2x)
- Upscale (4x)
- Upscale (Subtle)
- Upscale (Creative)
- Redo Upscale (2x)
- Redo Upscale (4x)
- Redo Upscale (Subtle)
- Redo Upscale (Creative)
- Make Square
- Make Variations
- Remaster
- Custom Zoom
prompt:
description: Required for button Custom Zoom https://docs.midjourney.com/docs/zoom-out#custom-zoom
type: string
discord:
description: Optional Discord token, if provided will override discord value of referenced jobid
type: string
maxJobs:
description: Optional Maximum Concurrent Jobs for current Midjourney subscription, if provided will override discord value of referenced jobid
type: integer
minimum: 1
maximum: 15
replyUrl:
description: Optional callback URL, API will call the provided replyUrl once generation completed. Value can be provided for the account via the POST /account/midjourney/{channel}
type: string
replyRef:
description: Optional reference id which will be stored and returned along with this job response / result
type: string
required:
- jobid
- button
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/buttonResponse"
"400":
description: button not supported or not found in jobid buttons array | jobid, button or prompt value is missing | replyRef or replyUrl is too long
content:
application/json:
schema:
$ref: "#/components/schemas/buttonResponse"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/buttonResponse"
"402":
description: Account has no subscription or subscription expired
content:
application/json:
schema:
$ref: "#/components/schemas/buttonResponse"
"404":
description: Unable to locate jobid
content:
application/json:
schema:
$ref: "#/components/schemas/buttonResponse"
"409":
description: Upscale button already executed by jobid
content:
application/json:
schema:
$ref: "#/components/schemas/buttonResponse"
"422":
description: Moderated or invalid prompt
content:
application/json:
schema:
$ref: "#/components/schemas/buttonResponse"
"429":
description: API query is full and can not accept new jobs/button requests. Please wait at least 10..30 seconds and retry again.
content:
application/json:
schema:
$ref: "#/components/schemas/buttonResponse"
"504":
description: Job queued. The API will not be able to track the progress of this job, although it will still be processed by Midjourney. You may want to adjust the maxJobs number to a lower value for the next several minutes.
content:
application/json:
schema:
$ref: "#/components/schemas/buttonResponse"
"596":
description: Your Discord account has received a pending moderation message from Midjourney. Please address this issue and reset pendingModMessage before making any new API calls
content:
application/json:
schema:
$ref: "#/components/schemas/buttonResponse"
/jobs/blend:
post:
description: Submit the Midjourney /blend command
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
blendUrls:
description: Must contain at least 2 valid URL image links, up to 5 URL image links supported
type: array
minItems: 2
maxItems: 5
items:
type: string
blendDimensions:
type: string
enum:
- Portrait
- Square
- Landscape
discord:
description: Discord token, optional if a value has already been provided for the account via the POST /account/midjourney/{channel}
type: string
server:
description: Discord server id, optional if a value has already been provided for the account via the POST /account/midjourney/{channel}
type: string
channel:
description: Discord channel id, optional if a value has already been provided for the account via the POST /account/midjourney/{channel}
type: string
maxJobs:
description: Optional Maximum Concurrent Jobs for current Midjourney subscription, optional if a value has already been provided for the account via the POST /account/midjourney/{channel}
type: integer
minimum: 1
maximum: 15
# --- truncated at 32 KB (54 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/useapi/refs/heads/main/openapi/useapi-midjourney-v2-openapi.yml