Back to Comparison Hub/Midjourney V8 Pricing
Text to Image

Midjourney V8 API Pricing

Generate 4 photorealistic images per run with Midjourney V8. Improved coherence and detail over V7. Supports text-to-image and reference image guidance.

Savings Alert-233% ↓Cheaper than Fal.ai

About Midjourney V8

Midjourney V8 is the latest photorealistic model, delivering improved coherence, sharper detail, and better prompt adherence over V7. Each run produces 4 high-quality images from your text prompt or reference image. At $0.10 per run it is the most capable option for demanding creative and commercial work.

Interactive Savings Calculator

Estimate monthly API spend and compare absolute developer savings.

Monthly API Generations10,000 runs
50025,00050,00075,000100,000+
MuAPI Monthly Cost

$1000.00

/bin/zsh.10 per run (4 images)
Fal.ai Cost

$300.00

Not available
Estimated Monthly Savings$-700.00
Annual Savings$-8400.00

Detailed Pricing Breakdown

ProviderEstimated RateNotes
muapiapp/bin/zsh.10 per run (4 images)Latest V8 model with full parameter control and 4 images per generation.
Fal.aiNot availableMidjourney is not available on Fal.ai.
ReplicateNot availableMidjourney is not available on Replicate.

Developer Integration Snippets

1import requests 2import time 3import json 4 5api_key = "YOUR_API_KEY" 6url = "https://api.muapi.ai/workflow/run/midjourney-v8" 7 8def poll_for_result(run_id): 9 url = f"https://api.muapi.ai/workflow/run/{run_id}/api-outputs" 10 headers = { 11 "Content-Type": "application/json", 12 "x-api-key": f"{api_key}", 13 } 14 while True: 15 response = requests.get(url, headers=headers) 16 result = response.json() 17 18 if result['status'] == 'completed': 19 return json.loads(result['outputs']) 20 21 if result['status'] == 'failed': 22 raise Exception(result.get('error', 'Generation failed')) 23 24 time.sleep(5) 25 26data = { 27 "schemas": { 28 "input_data": { 29 "x-order-properties": [ 30 "prompt", 31 "image_url", 32 "aspect_ratio", 33 "stylize", 34 "chaos", 35 "weird", 36 "negative_prompt", 37 "seed" 38 ], 39 "type": "object", 40 "properties": { 41 "prompt": { 42 "examples": [ 43 "A celestial cartographer mapping moving constellations inside a circular observatory suspended above waterfalls, rotating brass instruments casting shifting shadows, star reflections flowing across polished stone floors, elegant cinematic framing, highly detailed textures, dreamlike realism, sophisticated visual storytelling." 44 ], 45 "description": "Text description of the image to generate.", 46 "type": "string", 47 "title": "Prompt", 48 "name": "prompt" 49 }, 50 "image_url": { 51 "examples": [], 52 "description": "Optional reference image URL. Influences the style and content of the generation.", 53 "field": "image", 54 "type": "string", 55 "title": "Reference Image URL", 56 "name": "image_url" 57 }, 58 "aspect_ratio": { 59 "enum": [ 60 "1:1", 61 "16:9", 62 "9:16", 63 "3:4", 64 "4:3", 65 "21:9" 66 ], 67 "type": "string", 68 "title": "Aspect Ratio", 69 "name": "aspect_ratio", 70 "description": "Output image aspect ratio.", 71 "default": "1:1" 72 }, 73 "stylize": { 74 "type": "int", 75 "title": "Stylize", 76 "name": "stylize", 77 "description": "Controls how artistic the result is. Range: 0–1000. Lower = more literal, higher = more stylized.", 78 "default": 100, 79 "minValue": 0, 80 "maxValue": 1000, 81 "step": 10 82 }, 83 "chaos": { 84 "type": "int", 85 "title": "Chaos", 86 "name": "chaos", 87 "description": "Controls variation between the 4 images. Range: 0–100. Higher = more diverse.", 88 "default": 0, 89 "minValue": 0, 90 "maxValue": 100, 91 "step": 1 92 }, 93 "weird": { 94 "type": "int", 95 "title": "Weird", 96 "name": "weird", 97 "description": "Adds unconventional aesthetics. Range: 0–3000.", 98 "default": 0, 99 "minValue": 0, 100 "maxValue": 3000, 101 "step": 50 102 }, 103 "negative_prompt": { 104 "type": "string", 105 "title": "Negative Prompt", 106 "name": "negative_prompt", 107 "description": "Things to exclude from the image, e.g. \"text, watermark\".", 108 "examples": [ 109 "text, watermark, blurry" 110 ] 111 }, 112 "seed": { 113 "type": "int", 114 "title": "Seed", 115 "name": "seed", 116 "description": "Reproducibility seed. Range: 0–4294967295. Same seed + same prompt ≈ similar result.", 117 "default": 0, 118 "minValue": 0, 119 "maxValue": 4294967295, 120 "step": 1 121 } 122 }, 123 "title": "BaseInput", 124 "required": [ 125 "prompt" 126 ], 127 "endpoint_url": "midjourney-v8" 128 }, 129 "output_data": { 130 "type": "object", 131 "properties": { 132 "video": { 133 "examples": [ 134 "https://d3adwkbyhxyrtq.cloudfront.net/webassets/videomodels/midjourney-v81.jpg", 135 "https://d3adwkbyhxyrtq.cloudfront.net/webassets/videomodels/midjourney-v82.jpg", 136 "https://d3adwkbyhxyrtq.cloudfront.net/webassets/videomodels/midjourney-v83.jpg", 137 "https://d3adwkbyhxyrtq.cloudfront.net/webassets/videomodels/midjourney-v84.jpg" 138 ], 139 "description": "The generated video", 140 "title": "Video", 141 "comparison": false 142 } 143 }, 144 "title": "MidjourneyOutput", 145 "required": [ 146 "images" 147 ] 148 } 149 } 150} 151 152headers = { 153 "Content-Type": "application/json", 154 "x-api-key": f"{api_key}", 155} 156 157response = requests.post(url, json=data, headers=headers) 158 159result = response.json() 160print("Queued:", result) 161 162outputs = poll_for_result(result["run_id"]) 163print("Completed:", outputs) 164

Model FAQ

Ready to scale your production?

Get instant access to developer keys. Integrate high-speed dynamic models in minutes with our robust SDKs.