Midjourney /blend Command
October 27, 2025
Table of contents
Blend 2-5 images together using Midjourney’s /blend command.
https://api.useapi.net/v3/midjourney/jobs/blend
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data (required for Blob content uploads).
# Content-Type: multipart/form-data
Request Body
{
"imageUrl_1": "https://example.com/image1.jpg",
"imageUrl_2": "https://example.com/image2.jpg",
"imageUrl_3": "https://example.com/image3.jpg",
"blendDimensions": "Square",
"stream": true
}
Parameters
-
channelis optional. Discord channel ID to use. See GET /accounts for configured channels. If not provided, API automatically selects available channel with capacity. Specify when you want to use a specific configured channel. -
imageUrl_1andimageUrl_2ORimageBlob_1andimageBlob_2are required. Minimum 2 images, maximum 5 images. Can mix URLs and blobs (e.g.,imageUrl_1+imageBlob_2). Cannot specify both URL and blob for same number (e.g., bothimageUrl_1andimageBlob_1). -
imageUrl_3,imageUrl_4,imageUrl_5are optional. -
imageBlob_3,imageBlob_4,imageBlob_5are optional. -
blendDimensionsis optional. One of:Portrait,Square,Landscape. Default:Square. streamis optional (default:true).true- ReturnsContent-Type: text/event-streamwith live progress events. See SSE Streaming Guidefalse- ReturnsContent-Type: application/jsonwith initial job state. Use GET /jobs/jobidto retrieve updates and results
-
replyUrlis optional. Webhook URL for real-time job event callbacks. If channel has defaultreplyUrlconfigured, it will be used when job-specific one is not provided. All job events POST-ed to this URL as they occur.
Overrides channel-levelreplyUrlif specified.
Maximum length 1024 characters. replyRefis optional. Your reference ID stored with job.
Returned in all responses and callbacks asresponse.replyRef.
Maximum length 1024 characters.
Responses
-
Real-time SSE streaming (
stream: true)Returns
Content-Type: text/event-streamwith live events. See SSE Event Format for details. -
Job created successfully.
{ "jobid": "j1023...", "verb": "blend", "jobType": "image", "status": "created", "request": { "imageUrl_1": "https://example.com/image1.jpg", "imageUrl_2": "https://example.com/image2.jpg", "blendDimensions": "Square", "stream": false } } -
{ "error": "At least 2 images are required for blend" } -
{ "error": "Unauthorized" } -
{ "error": "Account has no subscription or subscription expired" } -
Channel at capacity or rate limited. Wait 10-30 seconds and retry.
{ "error": "Channel 1234567890123456789 is busy executing 3 image jobs" } -
Channel has pending moderation/CAPTCHA. Email notification sent. Log into Discord and address moderation message/CAPTCHA. Execute POST /accounts/
channel/reset.{ "error": "All configured Midjourney channels (2) have errors (pending moderation, CAPTCHA, etc.). Please resolve channel issues before making new requests." }
Model
See Job Response Model for complete response structure.
Examples
-
# With URLs curl -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -X POST "https://api.useapi.net/v3/midjourney/jobs/blend" \ -d '{"imageUrl_1":"https://example.com/1.jpg","imageUrl_2":"https://example.com/2.jpg","stream":true}' # With file uploads curl -H "Authorization: Bearer YOUR_API_TOKEN" \ -F "[email protected]" \ -F "[email protected]" \ -F "blendDimensions=Square" \ -F "stream=true" \ "https://api.useapi.net/v3/midjourney/jobs/blend" -
// With file uploads const formData = new FormData(); formData.append('imageBlob_1', file1); formData.append('imageBlob_2', file2); formData.append('blendDimensions', 'Square'); formData.append('stream', 'true'); const response = await fetch('https://api.useapi.net/v3/midjourney/jobs/blend', { method: 'POST', headers: {'Authorization': 'Bearer YOUR_API_TOKEN'}, body: formData }); -
import requests # With file uploads files = { 'imageBlob_1': open('image1.jpg', 'rb'), 'imageBlob_2': open('image2.jpg', 'rb') } data = {'blendDimensions': 'Square', 'stream': 'true'} response = requests.post( 'https://api.useapi.net/v3/midjourney/jobs/blend', headers={'Authorization': 'Bearer YOUR_API_TOKEN'}, files=files, data=data )