Switch to Relax Mode

October 27, 2025

Table of contents

  1. Request Headers
  2. Request Body
  3. Parameters
  4. Response • JSON • stream: false
  5. Response • SSE Stream • stream: true
  6. Model
  7. Examples
  8. Try It

Switch Midjourney account to Relax mode using the /relax command.

https://api.useapi.net/v3/midjourney/jobs/relax

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

{
  "channel": "1234567890123456789"
}

Parameters

  • channel is optional if only one Midjourney account is configured under GET /accounts. You must specify the channel when you have multiple accounts setup and wish to use a specific account from the configured list.

  • 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.

Response • JSON • stream: false

Response with content-type: application/json.

  • 201 Created

    Job created successfully. Use returned jobid with GET /jobs/jobid to poll status, or wait for webhook callbacks if replyUrl provided.

    Mode setting will be available in response.settings.relax when job completes.

    {
        "jobid": "j1024181730288780346-u12345-c1234567890987654321-bot:midjourney",
        "verb": "relax",
        "status": "created",
        "created": "2025-10-24T18:17:30.288Z",
        "request": {
            "replyUrl": "https://api-callback.matthieu.leblanc.workers.dev/",
            "replyRef": "2025-10-24T18:17:29.230Z",
            "stream": false
        }
    }
    
  • 400 Bad Request

    Validation error.

    {
      "error": "Parameter prompt is required"
    }
    
  • 401 Unauthorized

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

    {
      "error": "Account has no subscription or subscription expired"
    }
    
  • 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."
    }
    

Response • SSE Stream • stream: true

Returns content-type: text/event-stream with real-time job progress events. See SSE Streaming Guide for implementation details. See Job Response Model for complete job response object structure.

data: {"event":"initialized","message":"Stream initialized","jobId":"j1024181745044609922-u12345-c1234567890987654321-bot:midjourney","seq":0,"ts":"18:17:45.057"}

data: {"event":"midjourney_created","job":{"jobid":"j1024181745044609922-u12345-c1234567890987654321-bot:midjourney","verb":"relax","status":"created","created":"2025-10-24T18:17:45.044Z","request":{"replyUrl":"https://api-callback.matthieu.leblanc.workers.dev/","replyRef":"2025-10-24T18:17:44.027Z"},"updated":"2025-10-24T18:17:46.175Z"},"seq":12,"ts":"18:17:46.185"}

data: {"event":"midjourney_progress","job":{"jobid":"j1024181745044609922-u12345-c1234567890987654321-bot:midjourney","verb":"relax","status":"progress","created":"2025-10-24T18:17:45.044Z","request":{"replyUrl":"https://api-callback.matthieu.leblanc.workers.dev/","replyRef":"2025-10-24T18:17:44.027Z"},"updated":"2025-10-24T18:17:46.445Z","response":{"webhook_id":"936929561302675456","type":20,"tts":false,"timestamp":"2025-10-24T18:17:46.251000+00:00","position":0,"pinned":false,"nonce":"1025181745044609922","mentions":[],"mention_roles":[],"mention_everyone":false,"interaction_metadata":{"user":{"username":"matthieu_leblanc_975","public_flags":0,"primary_guild":null,"id":"9876543210123456789","global_name":null,"display_name_styles":null,"discriminator":"0","collectibles":null,"clan":null,"avatar_decoration_data":null,"avatar":null},"type":2,"name":"relax","id":"1431708331008987248","command_type":1,"authorizing_integration_owners":{"0":"0"}},"interaction":{"user":{"username":"matthieu_leblanc_975","public_flags":0,"primary_guild":null,"id":"9876543210123456789","global_name":null,"display_name_styles":null,"discriminator":"0","collectibles":null,"clan":null,"avatar_decoration_data":null,"avatar":null},"type":2,"name":"relax","id":"1431708331008987248"},"id":"1431708332200165436","flags":192,"embeds":[],"edited_timestamp":null,"content":"","components":[],"channel_type":1,"channel_id":"1234567890987654321","author":{"username":"Midjourney Bot","public_flags":589824,"primary_guild":null,"id":"936929561302675456","global_name":null,"display_name_styles":null,"discriminator":"9282","collectibles":null,"clan":null,"bot":true,"avatar_decoration_data":null,"avatar":"b9c7b4c65e3c66f246b9a6741bd3cbe5"},"attachments":[],"application_id":"936929561302675456"}},"seq":14,"ts":"18:17:46.467"}

data: {"event":"midjourney_completed","job":{"jobid":"j1024181745044609922-u12345-c1234567890987654321-bot:midjourney","verb":"relax","status":"completed","created":"2025-10-24T18:17:45.044Z","request":{"replyUrl":"https://api-callback.matthieu.leblanc.workers.dev/","replyRef":"2025-10-24T18:17:44.027Z"},"updated":"2025-10-24T18:17:46.944Z","response":{"webhook_id":"936929561302675456","type":20,"tts":false,"timestamp":"2025-10-24T18:17:46.251000+00:00","position":0,"pinned":false,"mentions":[],"mention_roles":[],"mention_everyone":false,"interaction_metadata":{"user":{"username":"matthieu_leblanc_975","public_flags":0,"primary_guild":null,"id":"9876543210123456789","global_name":null,"display_name_styles":null,"discriminator":"0","collectibles":null,"clan":null,"avatar_decoration_data":null,"avatar":null},"type":2,"name":"relax","id":"1431708331008987248","command_type":1,"authorizing_integration_owners":{"0":"0"}},"interaction":{"user":{"username":"matthieu_leblanc_975","public_flags":0,"primary_guild":null,"id":"9876543210123456789","global_name":null,"display_name_styles":null,"discriminator":"0","collectibles":null,"clan":null,"avatar_decoration_data":null,"avatar":null},"type":2,"name":"relax","id":"1431708331008987248"},"id":"1431708332200165436","flags":64,"embeds":[],"edited_timestamp":null,"content":"Done! Your jobs now do not consume fast-hours, but might take a little longer. You can always switch back with `/fast`","components":[],"channel_type":1,"channel_id":"1234567890987654321","author":{"username":"Midjourney Bot","public_flags":589824,"primary_guild":null,"id":"936929561302675456","global_name":null,"display_name_styles":null,"discriminator":"9282","collectibles":null,"clan":null,"bot":true,"avatar_decoration_data":null,"avatar":"b9c7b4c65e3c66f246b9a6741bd3cbe5"},"attachments":[],"application_id":"936929561302675456","settings":{"relax":true,"fast":false,"turbo":false}},"code":200},"seq":17,"ts":"18:17:46.955"}

Model

See Job Response Model for complete response structure.

Speed mode settings will be available in response.settings when job completes:

settings?: {
  relax?: boolean             // Relax mode
  fast?: boolean              // Fast mode
  turbo?: boolean             // Turbo mode
}

Examples

The examples below show the JSON response format (stream: false). For real-time SSE streaming examples, see the SSE Streaming Guide.

  • curl -H "Authorization: Bearer YOUR_API_TOKEN" \
         -H "Content-Type: application/json" \
         -X POST "https://api.useapi.net/v3/midjourney/jobs/relax" \
         -d '{"stream":false}'
    
  • const response = await fetch('https://api.useapi.net/v3/midjourney/jobs/relax', {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer YOUR_API_TOKEN',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        stream: false
      })
    });
    
    const result = await response.json();
    console.log('Job created:', result.jobid);
    
    // Poll for completion using GET /jobs/jobid
    // Or use webhook with replyUrl parameter
    
  • import requests
    
    response = requests.post(
        'https://api.useapi.net/v3/midjourney/jobs/relax',
        headers={'Authorization': 'Bearer YOUR_API_TOKEN'},
        json={'stream': False}
    )
    
    result = response.json()
    print('Job created:', result['jobid'])
    
    # Poll for completion using GET /jobs/jobid
    # Or use webhook with replyUrl parameter
    

Try It