Midjourney 5,074 's default model is V8.2, released on 24 July 2026 with a new Edit Model that replaces Omni Reference, Character Reference and Retexture; V8.1 (14 April 2026) added native 2K "HD" images. You use it on midjourney.com or through its Discord 170 bot on a subscription, buying GPU time rather than images: Basic $10, Standard $30, Pro $60 or Mega $120 a month. Companies with more than $1,000,000 of yearly revenue need Pro or Mega.
There is no public API, and the Terms of Service (effective 27 May 2026) forbid a workaround: "You may not use automated tools to access, interact with, or generate Assets through the Services." Third-party "Midjourney APIs" that drive a Discord account break those terms and risk a ban. Use Midjourney by hand for art direction, and an API from this section for anything your code must generate.
<!doctype html>
<style>
body { margin: 0; padding: 8px; background: #fafaf7; font: 12px system-ui, sans-serif; color: #263238; }
svg { width: 100%; max-width: 600px; display: block; }
</style>
<script src="https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js"></script>
<p><label><input type="checkbox" id="big" checked> BookNest's parent company has more than $1,000,000 yearly revenue</label></p>
<svg viewBox="0 0 600 260" font-size="12"></svg>
<script>
const PLANS = [['Basic', 10], ['Standard', 30], ['Pro', 60], ['Mega', 120]];
const svg = d3.select('svg');
const x = d3.scaleBand(PLANS.map(p => p[0]), [20, 340]).padding(0.25), y = d3.scaleLinear([0, 130], [200, 20]);
svg.append('g').attr('transform', 'translate(0,200)').call(d3.axisBottom(x));
svg.append('g').attr('transform', 'translate(20,0)').call(d3.axisLeft(y).ticks(4, '$')).attr('opacity', 0.6);
const bars = svg.selectAll('rect.p').data(PLANS).join('rect').attr('class', 'p').attr('x', p => x(p[0])).attr('width', x.bandwidth())
.attr('y', p => y(p[1])).attr('height', p => 200 - y(p[1]));
const labels = svg.selectAll('text.v').data(PLANS).join('text').attr('class', 'v').attr('text-anchor', 'middle')
.attr('x', p => x(p[0]) + x.bandwidth() / 2).attr('y', p => y(p[1]) - 6).text(p => `$${p[1]}/mo`);
svg.append('text').attr('x', 20).attr('y', 230).text('You buy GPU time, not images. V8.2 (24 July 2026) is the default model.');
// The access diagram: people yes, scripts no
const g = svg.append('g').attr('transform', 'translate(370,30)');
[['a person on midjourney.com', '#3f7d3a', '✔'], ['a person in Discord', '#3f7d3a', '✔'], ['your code (no public API)', '#b5452f', '✘'],
['"Midjourney API" resellers', '#b5452f', '✘ ban risk']].forEach(([t, c, mark], i) => {
g.append('rect').attr('y', i * 44).attr('width', 220).attr('height', 34).attr('rx', 6).attr('fill', '#fff').attr('stroke', c);
g.append('text').attr('x', 10).attr('y', i * 44 + 21).text(`${mark} ${t}`).attr('fill', c);
});
g.append('text').attr('y', 190).attr('fill', '#546e7a').text('Terms: "You may not use automated tools…"');
function draw() {
const big = document.getElementById('big').checked;
bars.attr('fill', p => !big || p[1] >= 60 ? '#5b3f99' : '#d1c4e9');
labels.attr('fill', p => !big || p[1] >= 60 ? '#263238' : '#b0a8c0');
}
document.getElementById('big').onchange = draw;
draw();
</script>