Midjourney API pricing: relax, fast and turbo per request, with code
You want Midjourney's look inside your own app, not a monthly seat in someone else's. Here is what a Midjourney V7 request costs through an API, at each of its three speeds, what 100 and 1,000 requests add up to, and the code to send the first one in a few minutes.
Midjourney API pricing (November 2026)
Midjourney V7 is priced by speed, not by size. Every request runs the same model; you pick how fast it comes back. One request is one charge, made only when the pictures are delivered:
| Скорость | quality | Per request | 100 requests | 1,000 requests | Для чего |
|---|---|---|---|---|---|
| Relax | relax | $0.06 | $6.00 | $60.00 | Batches, drafts, anything that can wait |
| Fast | fast | $0.07 | $7.00 | $70.00 | Most apps: a user is waiting for the result |
| Turbo | turbo | $0.13 | $13.00 | $130.00 | The quickest result, when speed matters most |
Turbo costs about twice as much as relax. If nobody is watching a spinner (overnight batches, mood boards, catalogue art), relax is the cheapest Midjourney you can call. If a user is waiting in your app, fast is the usual pick. Leave quality out and the request runs on relax.
Pay per request, no subscription
Midjourney's own plans are monthly subscriptions built around its app. That works for one person making pictures by hand. It fits badly when your product makes the pictures: you would pay for a seat whether your users generate ten images or ten thousand.
- Prepaid credit. Top up from the pricing page and spend it on Midjourney or any other model. 100 credits are one dollar.
- Charged once, on delivery. The price is held when you submit and released if the job fails. A failed request costs nothing.
- A cap on every job. Send
max_cost_usdand the request never costs more than that. - One key for every model. The same request shape calls Midjourney, Seedream, FLUX, Nano Banana Pro and GPT Image, so you can test them side by side.
Generate a Midjourney image
Send POST /v1/generations with the model id midjourney-v7, your prompt, a speed in quality and an aspect_ratio, then poll the generation until it has succeeded or failed. This request on fast costs $0.07.
export REVANA_API_KEY="sr_live_..."
# One Idempotency-Key per job, made once: resend with the same $KEY after a timeout, a 429 or a 5xx
KEY=$(uuidgen)
# 1. Submit the job (returns 202 with the generation id). max_cost_usd is your cap: the most it may cost.
curl https://api.revana.si/v1/generations \
-H "Authorization: Bearer $REVANA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $KEY" \
-d '{
"model": "midjourney-v7",
"input": {
"prompt": "A cinematic still of a lone samurai in a red maple forest, morning mist, painterly light.",
"quality": "fast",
"aspect_ratio": "16:9"
},
"max_cost_usd": 0.1
}'
# 2. Poll with the id from step 1 until status is "succeeded" or "failed".
# A failed job is free; make a new KEY before you submit it again.
curl https://api.revana.si/v1/generations/gen_01JC2V8K5T \
-H "Authorization: Bearer $REVANA_API_KEY"import os
import time
import uuid
import requests
API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
# One Idempotency-Key per job, made once. Resend after a timeout, a 429 or a 5xx with the
# same KEY: you get the same job back, never a second charge.
KEY = str(uuid.uuid4())
resp = requests.post(f"{API}/generations", headers={**HEADERS, "Idempotency-Key": KEY}, json={
"model": "midjourney-v7",
"input": {
"prompt": "A cinematic still of a lone samurai in a red maple forest, morning mist, painterly light.",
"quality": "fast",
"aspect_ratio": "16:9",
},
"max_cost_usd": 0.1, # your cap: the most this job may cost
})
resp.raise_for_status()
job = resp.json()
while job["status"] in ("queued", "running"):
time.sleep(3)
job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()
if job["status"] == "succeeded":
print(job["output"]["urls"], job["cost_usd"])
else:
# A failed job is free. To try again, make a new KEY: this one answers with the failure.
print("Failed:", job["error"])// Node 18 or later. Save as generate.mjs and run: node generate.mjs
import { randomUUID } from "node:crypto";
const API = "https://api.revana.si/v1";
const headers = {
Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
"Content-Type": "application/json",
};
// One Idempotency-Key per job, made once. Resend after a timeout, a 429 or a 5xx with the
// same key: you get the same job back, never a second charge.
const key = randomUUID();
const res = await fetch(`${API}/generations`, {
method: "POST",
headers: { ...headers, "Idempotency-Key": key },
body: JSON.stringify({
model: "midjourney-v7",
input: {
prompt: "A cinematic still of a lone samurai in a red maple forest, morning mist, painterly light.",
quality: "fast",
aspect_ratio: "16:9",
},
max_cost_usd: 0.1, // your cap: the most this job may cost
}),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}
if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error); // free; to try again, make a new key{
"id": "gen_01JC2V8K5T",
"model": "midjourney-v7",
"status": "succeeded",
"output": {
"urls": [
"https://cdn.revana.si/g/gen_01JC2V8K5T/0.png",
"https://cdn.revana.si/g/gen_01JC2V8K5T/1.png",
"https://cdn.revana.si/g/gen_01JC2V8K5T/2.png",
"https://cdn.revana.si/g/gen_01JC2V8K5T/3.png"
]
},
"cost_usd": 0.07,
"attempts": 1,
"error": null,
"created_at": "2026-11-12T10:14:02Z",
"completed_at": "2026-11-12T10:15:08Z"
}Start from a reference picture
Add image_url next to the prompt and Midjourney V7 works from your picture. If the file is on your computer, upload it first with POST /v1/uploads; the link it returns is good for 14 days. A reference costs nothing extra: this relax request is $0.06.
{
"model": "midjourney-v7",
"input": {
"prompt": "The same armchair in a sunlit Scandinavian living room, soft film grain, editorial interior photo.",
"image_url": "https://example.com/armchair.jpg",
"quality": "relax",
"aspect_ratio": "4:5"
},
"max_cost_usd": 0.1
}A speed the model does not list comes back straight away as 422 invalid_input, with the speeds it does take, and nothing is charged.
Midjourney against other image APIs
Midjourney is the pick when the look is the product: painterly, cinematic, art-directed pictures straight from a short prompt. When you need exact text in the image, strict product fidelity or 4K output, other image models are a better fit and often cheaper per picture. The cheapest image API guide lists every image model's lowest price, and GPT Image 2 vs Nano Banana Pro compares the two most used alternatives. See Midjourney V7 with its live price on its model page, every model on the models page and the full request reference in the docs, or get an API key.
Частые вопросы
How much does the Midjourney API cost?
In November 2026, Midjourney V7 costs $0.06 a request on relax, $0.07 on fast and $0.13 on turbo. There is no monthly plan: you prepay credit and each request is charged once, when it is delivered.
What is the difference between relax, fast and turbo?
Only speed and price. All three run the same Midjourney V7 model with the same prompt and settings. Relax waits in a slower queue and costs least, turbo is the quickest and costs most, and fast sits in between.
Do I need a Midjourney subscription to use the API?
No. You call Midjourney V7 with a Revana API key and pay per request from prepaid credit. There is nothing to cancel and no monthly minimum.
Can I send a reference image to Midjourney through the API?
Yes. Add image_url (or image_urls) to the input next to the prompt, and Midjourney V7 uses the picture as a reference. The price is the same as a prompt-only request.
Am I charged for a failed Midjourney request?
No. The price is held when you submit and released if the job fails, so a failed request costs nothing.
Does the API offer Midjourney video?
Not today. Midjourney V7 images are on sale; Midjourney video is not. For video from one key, see Kling, Seedance or Veo on the models page.
Call Midjourney with one key
One API key for Midjourney V7 and every other image and video model. Prepaid credit from $10, charged only for requests that are delivered.