Midjourney image API
Midjourney v8.2 on Essevin — fixed four-image tasks, prompt parameters, aspect ratios, and the task lifecycle.
Midjourney on Essevin is an asynchronous API: submit a task, then poll the Essevin task ID. Use a key from the Midjourney plan group and confirm the exact model ID with GET /v1/models before sending paid work.
Endpoints
| Method | Path | Purpose |
|---|---|---|
| POST | /v1/images/generations | Submit a Midjourney image task |
All requests use Authorization: Bearer sk-your-key and Content-Type: application/json. The model ID is midjourney-v8-2.
Every task returns exactly four images
This model always renders a set of four images per task, and every returned image is billed. The count is fixed upstream: n accepts only 4 or nothing at all, and there is no way to order a single image. Budget for four images per submission.
Request contract
| Field | Required | Notes |
|---|---|---|
model | Yes | midjourney-v8-2 |
prompt | Yes | Description plus optional parameters. A request with only images and no description is rejected |
images | No | At most one reference image, as {"url": "https://…"} or {"file_id": "…"} |
n | No | Only 4, or omit it. Any other value is rejected |
quality | No | Not used by this model. Ask for 2K with --hd in the prompt instead |
curl https://api.essevin.com/v1/images/generations \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{"model":"midjourney-v8-2","prompt":"a red apple on a wooden table, studio light --ar 16:9"}'Size and aspect ratio
Image size is not a request field. It comes from --ar in the prompt, and --hd renders natively at roughly twice the edge length. Sizes below are measured, not derived — --hd is not an exact doubling.
--ar | Default | With --hd |
|---|---|---|
1:1 (default) | 1024 × 1024 | 2048 × 2048 |
16:9 | 1456 × 816 | 2944 × 1648 |
9:16 | 816 × 1456 | 1648 × 2944 |
4:3 | 1232 × 928 | 2544 × 1904 |
21:9 | 1680 × 720 | 3376 × 1440 |
14:1 | 4096 × 288 | Rejected — see below |
--ar takes whole numbers only; --ar 1.5:1 is rejected. The ratio may not exceed 14:1 in either direction, and --hd lowers that ceiling to 4:1, so --hd --ar 14:1 is rejected while --hd --ar 4:1 renders at 4096 × 1184.
Prompt parameters
These are accepted and passed through:
| Parameter | Range | Purpose |
|---|---|---|
--ar | whole ratio | Aspect ratio |
--hd | flag | Native 2K render |
--s / --stylize | 0-1000 | Stylization strength |
--c / --chaos | 0-100 | Variation across the four images |
--weird / --w | 0-3000 | Unconventional aesthetics |
--iw | 0-3 | Weight of the reference image |
--sref + --sw | --sw 0-1000 | Style reference and its strength |
--no | text | Exclude elements |
--seed | integer | Reproducibility |
--tile, --exp | flag / 0-100 | Seamless tiling; dynamic range |
Parameters this model version does not accept
These are rejected with 400 at submission, with the reason in the error message. They are refused rather than forwarded because the upstream either ignores them silently — leaving you paying for an effect you never got — or fails the task minutes later.
| Parameter | Why |
|---|---|
--q / --quality | Has no effect on this model version |
--niji | Niji is a separate model version, not a parameter here |
--repeat / --r | Has no effect; the image count per task is fixed |
--oref, --cref | Omni and character reference are unavailable on v8.x |
--stealth, --stop | Not supported on this model version |
--draft | Returns 24 low-resolution images per task; not offered |
--profile | Personalization profiles are not supported through this API |
:: | Multi-prompt weighting is not supported on this model version |
Submit and poll
A successful submit returns 202 with the task ID in id, plus images_per_task. Poll it the same way as any other asynchronous media task, without a billing header:
-H "Authorization: Bearer sk-your-key"status moves through queued → processing → completed or failed; only those last two are terminal, so treat any other value as still running. A completed task carries four output URLs in outputs, served from the console.essevin.com domain — signed links valid for 6 hours from the moment the task completes. Querying again returns the same URL without extending it, and an expired link returns 410, so download results within that window. Only a task that completes successfully is billed; a failed task never is.
Failures
| What you see | What it means |
|---|---|
400 at submission | A field or prompt parameter is invalid. The message names it; fix it and resubmit |
| Task fails, content rejected | The prompt was refused by content moderation. Rephrase and submit again |
| Task fails, service busy | The plan group is at its concurrency ceiling for this model. Retry shortly; nothing is billed |
Concurrency is limited on this model
Midjourney allows only a small number of prompts to render at once, far fewer than the synchronous image models. Submitting a large batch in parallel will fail most of them rather than queueing them. Submit a few at a time and retry the ones that come back busy — failed tasks are not billed.
Rates
Midjourney bills per returned image, so a task costs four images at the rate for its tier: the default render and the --hd 2K render are priced separately. Official list prices are on the pricing page. Your own rate is the one shown in the signed-in model catalog, and each request's actual charge is in your usage record.