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

MethodPathPurpose
POST/v1/images/generationsSubmit 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

FieldRequiredNotes
modelYesmidjourney-v8-2
promptYesDescription plus optional parameters. A request with only images and no description is rejected
imagesNoAt most one reference image, as {"url": "https://…"} or {"file_id": "…"}
nNoOnly 4, or omit it. Any other value is rejected
qualityNoNot 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.

--arDefaultWith --hd
1:1 (default)1024 × 10242048 × 2048
16:91456 × 8162944 × 1648
9:16816 × 14561648 × 2944
4:31232 × 9282544 × 1904
21:91680 × 7203376 × 1440
14:14096 × 288Rejected — 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:

ParameterRangePurpose
--arwhole ratioAspect ratio
--hdflagNative 2K render
--s / --stylize0-1000Stylization strength
--c / --chaos0-100Variation across the four images
--weird / --w0-3000Unconventional aesthetics
--iw0-3Weight of the reference image
--sref + --sw--sw 0-1000Style reference and its strength
--notextExclude elements
--seedintegerReproducibility
--tile, --expflag / 0-100Seamless 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.

ParameterWhy
--q / --qualityHas no effect on this model version
--nijiNiji is a separate model version, not a parameter here
--repeat / --rHas no effect; the image count per task is fixed
--oref, --crefOmni and character reference are unavailable on v8.x
--stealth, --stopNot supported on this model version
--draftReturns 24 low-resolution images per task; not offered
--profilePersonalization 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 queuedprocessingcompleted 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 seeWhat it means
400 at submissionA field or prompt parameter is invalid. The message names it; fix it and resubmit
Task fails, content rejectedThe prompt was refused by content moderation. Rephrase and submit again
Task fails, service busyThe 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.

On this page