Configure Midjourney Channel

October 27, 2025

Table of contents

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

Configure your Midjourney Discord channel for API access. The API automatically discovers your Midjourney DM (direct messages) channel from your Discord token.

Multiple accounts supported: Configure multiple Discord accounts with automatic load balancing.

Important: Same Discord account cannot be used for both v2 and v3 APIs simultaneously. If you have the account configured in v2, delete it from v2 first before configuring in v3. See Migration from v2 for details.

https://api.useapi.net/v3/midjourney/accounts

Request Headers

Authorization: Bearer {API token}
Content-Type: application/json

Request Body

{
  "discord": "Discord token",
  "maxJobs": 3,
  "maxImageJobs": 3,
  "maxVideoJobs": 3,
  "replyUrl": "https://your-server.com/webhook"
}
  • discord is required. Your Discord bot token. See Setup Midjourney for details.

  • maxJobs is optional (default: 3). Maximum total concurrent jobs (all types combined) per channel. Must be between 1 and 15. Should match your Midjourney subscription plan Maximum Concurrent Jobs. Important: Specifying a higher number than your subscription supports will prevent API from functioning properly.

  • maxImageJobs is optional (default: 3). Maximum concurrent image generation jobs. Must be between 1 and 12. Must be ≤ maxJobs.

  • maxVideoJobs is optional (default: 3). Maximum concurrent video generation jobs. Must be between 1 and 12. Must be ≤ maxJobs.

  • replyUrl is optional. Webhook URL for real-time job event callbacks. All job events will be POST-ed to this URL as they occur. Maximum length 2048 characters.

Responses

  • 201 Created

    New channel configuration created successfully.

    {
      "discord": "MTI...xyz",
      "channel": "1234567890123456789",
      "maxJobs": 3,
      "maxImageJobs": 3,
      "maxVideoJobs": 3,
      "replyUrl": "https://your-server.com/webhook"
    }
    
    • channel is automatically discovered from your Discord token (Midjourney DM (direct messages) channel ID).
  • 200 OK

    Existing channel configuration updated successfully.

    {
      "discord": "MTI...xyz",
      "channel": "1234567890123456789",
      "maxJobs": 5,
      "maxImageJobs": 5,
      "maxVideoJobs": 3,
      "replyUrl": "https://your-server.com/webhook"
    }
    
  • 400 Bad Request

    Validation error (missing/invalid parameters).

    {
      "error": "Required parameter discord is missing or empty"
    }
    
  • 401 Unauthorized

    Invalid API token or Discord token.

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

    Subscription expired or insufficient credits.

    {
      "error": "Account has no subscription or subscription expired"
    }
    
  • 409 Conflict

    v2 API configuration detected for this channel. v2 and v3 are incompatible.

    {
      "error": "Legacy v2 Midjourney configuration detected for channel 1234567890123456789. v2 and v3 APIs are incompatible and cannot coexist. Please delete the v2 configuration first: DELETE https://api.useapi.net/v2/midjourney/account/1234567890123456789 (requires Authorization header with your API key). After deletion, you can configure this channel for v3."
    }
    

Model

{ // TypeScript, all fields are optional
  discord: string          // Discord token (first 3 and last 3 chars shown)
  channel: string          // Discord channel ID (auto-discovered)
  maxJobs: number          // Max total concurrent jobs
  maxImageJobs: number     // Max concurrent image jobs
  maxVideoJobs: number     // Max concurrent video jobs
  replyUrl?: string        // Webhook URL for callbacks
  error?: string           // Error message (if failed)
}

Examples

  • curl -H "Accept: application/json" \
         -H "Content-Type: application/json" \
         -H "Authorization: Bearer YOUR_API_TOKEN" \
         -X POST "https://api.useapi.net/v3/midjourney/accounts" \
         -d '{
           "discord": "YOUR_DISCORD_TOKEN",
           "maxJobs": 3,
           "maxImageJobs": 3,
           "maxVideoJobs": 3,
           "replyUrl": "https://your-server.com/webhook"
         }'
    
  • const apiUrl = 'https://api.useapi.net/v3/midjourney/accounts';
    const token = 'YOUR_API_TOKEN';
    const discord = 'YOUR_DISCORD_TOKEN';
    
    const response = await fetch(apiUrl, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        discord: discord,
        maxJobs: 3,
        maxImageJobs: 3,
        maxVideoJobs: 3,
        replyUrl: 'https://your-server.com/webhook'
      })
    });
    
    const result = await response.json();
    console.log('Channel configured:', result);
    
  • import requests
    
    apiUrl = 'https://api.useapi.net/v3/midjourney/accounts'
    token = 'YOUR_API_TOKEN'
    discord = 'YOUR_DISCORD_TOKEN'
    
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {token}'
    }
    
    body = {
        'discord': discord,
        'maxJobs': 3,
        'maxImageJobs': 3,
        'maxVideoJobs': 3,
        'replyUrl': 'https://your-server.com/webhook'
    }
    
    response = requests.post(apiUrl, headers=headers, json=body)
    print(response.status_code, response.json())
    

Try It