What’s New in v3
October 27, 2025
Table of contents
- Real-time SSE Streaming
- Real-time Webhook Callbacks
- Flexible Request Formats
- Separate Image/Video Quotas
- Execute-Once Pattern
- Parent-Child Job Tracking
- Enhanced Error Handling
- Classic Polling Available
- Migration from v2
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)
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
Migration from v2
Important: Same Discord account cannot be used for both v2 and v3 APIs simultaneously.
To migrate:
- Delete your Midjourney account from v2 API
- Configure the account in v3 API
- Update your code to use v3 endpoints
- Enable
stream: truefor real-time updates (recommended)
See account management endpoints:
- POST /accounts - Configure channel
- GET /accounts - List channels
- DELETE /accounts/
channel- Remove channel