What’s New in v3
October 27, 2025
Table of contents
- Real-time SSE Streaming
- Real-time Webhook Callbacks
- Flexible Request Formats
- Settings Command Support
- Separate Image/Video Quotas
- Execute-Once Pattern
- Parent-Child Job Tracking
- Enhanced Error Handling
- Classic Polling Available
Real-time SSE Streaming
Get instant progress updates with stream: true:
- No polling required - events arrive in real-time
- Live progress percentages as jobs execute
- Immediate status notifications (created → started → progress → completed/moderated/failed)
- See SSE Streaming Guide for implementation details
Real-time Webhook Callbacks
Receive job events at your server with replyUrl:
- Works with both
stream: trueandstream: false - All events POST-ed instantly to your webhook URL
- Ideal for server-to-server integrations
- No client connection required
Flexible Request Formats
Send requests as JSON or multipart/form-data:
Content-Type: application/json- Simple JSON payloadsContent-Type: multipart/form-data- File uploads (describe, blend)
Settings Command Support
Full support for Midjourney settings commands with structured response parsing:
- POST /jobs/settings - View all current settings (version, stylize, RAW, personalization, public/private, remix, variability, speed modes, suffix)
- POST /jobs/info - Account info with speed mode settings
- POST /jobs/fast, /relax, /turbo - Toggle speed modes
- POST /jobs/remix, /variability - Toggle mode settings
- All settings responses include
response.settingsobject with explicit values
Separate Image/Video Quotas
Better resource management with independent limits:
maxImageJobs- Concurrent image generation limitmaxVideoJobs- Concurrent video generation limit- Optimized for mixed workloads
Execute-Once Pattern
U1-U4 upscale buttons and seed retrieval can only be executed once per job:
- Prevents accidental duplicate upscales and redundant seed requests
- Subsequent requests return existing result immediately
- Cleaner job tracking and efficient resource usage
Parent-Child Job Tracking
Jobs automatically track their children:
response.childrenshows all child jobs- Easy navigation through job hierarchies
- Track imagine → upscale → variations workflows
Enhanced Error Handling
More specific HTTP status codes:
410- Job expired (older than 62 days)596- Moderation/CAPTCHA required (with email notification)
Classic Polling Available
Traditional polling still supported via GET /jobs/jobid:
- Use as fallback when SSE/webhooks unavailable
- Returns same job data as SSE events
- Last resort approach - prefer SSE or webhooks