Configure Midjourney Channel
October 27, 2025
Table of contents
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
API tokenis required, see Setup useapi.net for details.
Request Body
{
"discord": "Discord token",
"maxJobs": 3,
"maxImageJobs": 3,
"maxVideoJobs": 3,
"replyUrl": "https://your-server.com/webhook"
}
-
discordis required. Your Discord bot token. See Setup Midjourney for details. -
maxJobsis 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. -
maxImageJobsis optional (default: 3). Maximum concurrent image generation jobs. Must be between 1 and 12. Must be ≤maxJobs. -
maxVideoJobsis optional (default: 3). Maximum concurrent video generation jobs. Must be between 1 and 12. Must be ≤maxJobs. -
replyUrlis 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
-
New channel configuration created successfully.
{ "discord": "MTI...xyz", "channel": "1234567890123456789", "maxJobs": 3, "maxImageJobs": 3, "maxVideoJobs": 3, "replyUrl": "https://your-server.com/webhook" }channelis automatically discovered from your Discord token (Midjourney DM (direct messages) channel ID).
-
Existing channel configuration updated successfully.
{ "discord": "MTI...xyz", "channel": "1234567890123456789", "maxJobs": 5, "maxImageJobs": 5, "maxVideoJobs": 3, "replyUrl": "https://your-server.com/webhook" } -
Validation error (missing/invalid parameters).
{ "error": "Required parameter discord is missing or empty" } -
Invalid API token or Discord token.
{ "error": "Unauthorized" } -
Subscription expired or insufficient credits.
{ "error": "Account has no subscription or subscription expired" } -
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())