Midjourney /blend Command

October 27, 2025

Table of contents

  1. Request Headers
  2. Request Body
  3. Parameters
  4. Responses
  5. Model
  6. Examples
  7. Try It

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

  • channel is 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_1 and imageUrl_2 OR imageBlob_1 and imageBlob_2 are 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., both imageUrl_1 and imageBlob_1).

  • imageUrl_3, imageUrl_4, imageUrl_5 are optional.

  • imageBlob_3, imageBlob_4, imageBlob_5 are optional.

  • blendDimensions is optional. One of: Portrait, Square, Landscape. Default: Square.

  • stream is optional (default: true).
    • true - Returns Content-Type: text/event-stream with live progress events. See SSE Streaming Guide
    • false - Returns Content-Type: application/json with initial job state. Use GET /jobs/jobid to retrieve updates and results
  • replyUrl is optional. Webhook URL for real-time job event callbacks. If channel has default replyUrl configured, it will be used when job-specific one is not provided. All job events POST-ed to this URL as they occur.
    Overrides channel-level replyUrl if specified.
    Maximum length 1024 characters.

  • replyRef is optional. Your reference ID stored with job.
    Returned in all responses and callbacks as response.replyRef.
    Maximum length 1024 characters.

Responses

  • Real-time SSE streaming (stream: true)

    Returns Content-Type: text/event-stream with live events. See SSE Event Format for details.

  • 201 Created

    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
      }
    }
    
  • 400 Bad Request

    {
      "error": "At least 2 images are required for blend"
    }
    
  • 401 Unauthorized

    {
      "error": "Unauthorized"
    }
    
  • 402 Payment Required

    {
      "error": "Account has no subscription or subscription expired"
    }
    
  • 429 Too Many Requests

    Channel at capacity or rate limited. Wait 10-30 seconds and retry.

    {
      "error": "Channel 1234567890123456789 is busy executing 3 image jobs"
    }
    
  • 596 Pending Moderation

    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
    )
    

Try It