ImaginePro
HomeDocs
HomeDocs
  1. Docs
  • Introduction
  • System Design
  • Get Started
  • My Account
    • Credits
    • Generation Modes
  • API Documentation
    • Generate Image
      POST
    • Get Progress
      GET
    • Upscale
      POST
    • Variation
      POST
    • Zoom
      POST
    • Pan
      POST
    • Reroll
      POST
    • Make Square
      POST
    • Cancel Job
      POST
    • Inpainting
      POST
    • Image to Text (describe)
      POST
    • Image to Image
      POST
    • Face Swap
      POST
    • Blend
      POST
    • History
      GET
    • Generate Image Boost
      POST
    • Button Boost
      POST
    • Prompt Check
      POST
    • Account Info
      GET
    • Generate Image - Flux Model
      POST
    • Remove Background
      POST
  • FLUX API Documentation
    • Generate Image
      POST
    • Upscale Image
      POST
  • DIY Plan Endpoints
    • Queue Management
      • Count jobs in queue
      • Reboot the queue
      • Pause the queue
      • Resume the queue
    • Get Linked Discord Token Details
    • Toggle Linked Discord Token
    • Get Message Trace
    • Get Ban Words List
    • Update Ban Words List
    • Get Linked Account List
    • Get Linked Account queue status
    • Excute MJ commad
  • Guide
    • FAQ
    • Troubleshoot
  • HowTos
    • How to get Discord token, server and channel ID
    • How to use ImaginePro web app
    • How to make ImaginePro API request in Postman
    • How to use Midjourney V6
    • How to link your own Discord account
    • How to debug the ImaginePro web app
  • Web App
    • Credits
  1. Docs

System Design

Our System Design#

Introduction#

To minimize the risk of spamming Midjourney, we have implemented several mechanisms to prevent system overload. These include rate limiting, queuing, concurrent handling, and load balancing.

Rate Limiting#

Rate limiting is enforced to prevent system overload. For general API endpoints, the rate limit is 1 request per 3 seconds. For the progress checking endpoint: message, the rate limit is 10 requests per second.
Note: Our rate limiting is primarily a mechanism to deter spamming. Normally, the rate limit will not introduce additional waiting time for completing Midjourney jobs, as a typical job takes significantly longer than 3 seconds to complete, and user can send another job during this period.

Queueing System#

We employ a queuing system for each account to avoid overloading both our system and Discord. New jobs are added to the queue and processed in a first-come, first-served basis. The number of queues available to you depends on your subscription plan:
For Trial, Starter, Grown, Professional, Business plan, you have one queue.
For DIY plan, you have one queue per connected Discord account.

Sample:#

In this scenario, the user has connected only 1 Discord account, and the Midjourney plan the user is subscribed to supports 3 concurrent jobs. The user has sent 8 jobs in total. Our queue system sends the first X number of jobs (X is the concurrent limit, in this example, 3) (Job1, Job2, Job3) to Discord, and will keep tracking the status of these jobs.
Since our system knows the number of concurrent jobs supported by the user's Midjourney plan when connecting the Discord account, with 3 jobs (Job1, Job2, Job3) in progress, Our system will hold the remaining jobs (Job4 to Job8) until a slot becomes available in Discord.
When Job1 is completed, our system will send Job4 to Discord. When Job2 is completed, our system will send Job5 to Discord. When Job3 is completed, our system will send Job6 to Discord. And so on.
queue1.webp
queue2.webp

Concurrent Limiting#

We have implemented a concurrent job limit to Midjourney in Discord overload. The number of the maximum concurrent limit depends on your subscription plan:
For Trial, Starter, Grown plan, the concurrent limit is 8.
For Professional, Business plan, the concurrent limit is 10.
For DIY plan plan, the concurrent limit is 3 or 12 depending on your Midjourney subscription plan (Basic and Standard Midjourney plan is 3, and Pro and Mega Midjourney plan is 12).
You can change the concurrent limit in the setup page, where you link your Discord account. Comparing your Midjourney plan's concurrency limit, we recommend using a slightly smaller number for our concurrent limit, to allow some buffering in Discord and avoid keep flooding your connected Discord account, which may increase the ban risk.

Load Balancing#

Our system includes built-in load balancing when linking multiple Discord accounts. The load balancer distributes jobs among these accounts in a round-robin manner. This ensures that the load is evenly distributed among the linked accounts.
So if you linked multiple Discord accounts, and couldn't find your specific job in one Discord account, maybe try the other ones.
Previous
Introduction
Next
Get Started
Built with