VidMage

VidMage is an AI video and image creation platform for creators. Turn your ideas and images into videos and fresh visuals.

Open the creator tools
Explore APIs
AI Video APIsAI Image APIsAI Audio APIsAI 3D APIsAI Face Swap APIsAI Effects APIs
Build with VidMage
QuickstartAPI keysVidMage MCPError reference
Your account
Developer consoleAbout VidMagePlans and creditsAPI billingContact support
© 2026 VidMage. All rights reserved.
Privacy PolicyTerms of ServiceReport Abuse
Skip to content
VidMage/Developers
Overview
APIs
All APIsAI Video APIsAI Image APIsAI Audio APIsAI 3D APIsAI Face Swap APIsAI Effects APIs
DocumentationVidMage MCPOpen console
Developers/Midjourney Image API

Midjourney Image API

Integrate Midjourney image generation into your app with text prompts, image references, and separate style and subject references. Configure reference weights, aspect ratio, and styling controls in your API requests.

Get API keyView API docs
Abstract illustration for Midjourney Image API
PlaygroundAPIPricingGuideFAQs

Midjourney Image API Playground

Use your existing API key and subscription. Submitting a generation uses credits; uploading and preparing a request does not start a generation.

API access is available to subscribers only. Your subscription credits are shared across the website and the API.

View plans

Parameter

16 parameters

Text prompt describing the image to generate (max 8192 chars). For an unspecified character or figurine, use an original non-branded character with no logos and no resemblance to existing copyrighted superheroes; preserve any character the user explicitly names.

Output aspect ratio.(Optional)

Default: 1:1

Describe content that should not appear in the image.(Optional)

Increase variation and unpredictability.(Optional)

Default: 0min 0max 100

Rendering quality level.(Optional)

Default: 1

Control the strength of Midjourney styling.(Optional)

Default: 0min 0max 1000

Control unconventional and experimental aesthetics.(Optional)

Default: 0min 0max 3000

Reduce automatic styling for more literal prompt control.(Optional)

Default: false

Optional base image prompt.(Optional)

Control the influence of the base image prompt. Requires imageUrl when supplied.(Optional)

Default: 1min 0max 3

Optional style reference image.(Optional)

Control the influence of the style reference. Requires sref when supplied.(Optional)

Default: 100min 0max 1000

Style reference model version. Requires sref when supplied.(Optional)

Default: 4min 1max 6

Optional Omni reference image.(Optional)

Control the influence of the Omni reference. Requires oref when supplied.(Optional)

Default: 100min 1max 1000

Create a seamless repeating pattern.(Optional)

Default: false

Request code

#!/usr/bin/env bash
set -euo pipefail
# Set this once per intended task; preserve it and the body for transport retries.
: "${VIDMAGE_IDEMPOTENCY_KEY:?Set a unique key for this task}"

SUBMIT_RESPONSE="$(curl --fail-with-body --silent --show-error -X POST "https://vidmage.ai/api/v1/midjourney-ai-image-generator/submit" \
  -H "Authorization: Bearer ${VIDMAGE_API_KEY}" \
  -H "Idempotency-Key: ${VIDMAGE_IDEMPOTENCY_KEY}" \
  -H "Content-Type: application/json" \
  --data-raw '{
  "prompt": "A serene mountain observatory above the clouds at sunrise, cinematic wide-angle landscape photography",
  "aspectRatio": "1:1",
  "chaos": 0,
  "quality": "1",
  "stylize": 0,
  "weird": 0,
  "raw": false,
  "iw": 1,
  "sw": 100,
  "sv": 4,
  "ow": 100,
  "tile": false
}')"
TASK_ID="$(printf '%s' "$SUBMIT_RESPONSE" | jq -er '.["taskId"]')"

while true; do
  QUERY_RESPONSE="$(curl --fail-with-body --silent --show-error -X POST "https://vidmage.ai/api/v1/midjourney-ai-image-generator/query" \
    -H "Authorization: Bearer ${VIDMAGE_API_KEY}" \
    -H "Content-Type: application/json" \
    --data-raw "{\"taskId\":\"${TASK_ID}\"}")"
  STATUS="$(printf '%s' "$QUERY_RESPONSE" | jq -r '(.status // .data.status // "") | ascii_downcase')"
  case "$STATUS" in
    success|succeeded|completed)
      RESULT="$(printf '%s' "$QUERY_RESPONSE" | jq -r '(.result // .["imageUrl"] // .data["imageUrl"] // empty)')"
      if [ -z "$RESULT" ]; then
        printf '%s' "Result missing; preserve task $TASK_ID and query the same task again. Do not resubmit." >&2
        exit 2
      fi
      printf '%s\n' "$RESULT"
      break
      ;;
    needs_input)
      printf '%s' "Face selection required; preserve task $TASK_ID" >&2
      exit 2
      ;;
    failed|error)
      printf '%s' "$QUERY_RESPONSE" | jq -r '(.message // .error // .data.error // "Task failed")' >&2
      exit 1
      ;;
  esac
  sleep 5
done

Response data

Submit the task to see the API response here.
PlaygroundCapabilities

API documentation

Submit a request, track the task, and retrieve your result.

Required inputs
prompt
Output
Image·imageUrl
Request setup & limitsHeaders, input options and media limits

Request headers

Authorization
Bearer YOUR_API_KEY

Keep your API key on your server.

Content-Type
application/json
Idempotency-Key
YOUR_UNIQUE_KEY

Use a new key per task. Reuse it only when retrying the same submission.

Input options & limits

Request controls follow each task's parameter rules; they do not guarantee output properties.

Midjourney AI Image Generator

Modes: text-to-image

Requiredprompt
Optional inputsimageUrl
Request controls
  • aspectRatio: "1:1", "4:3", "3:2", "16:9", "3:4", "2:3", "9:16"
  • negativePrompt: see parameter rules
  • chaos: default 0
  • quality: "1", "2", "4"
  • stylize: default 0
  • weird: default 0
  • raw: default false
  • iw: default 1

Input retention and output-link lifetime depend on the API contract. Confirm API-specific retention terms before making promises to your users. Upload guide ↗

Midjourney AI Image Generator

POST /api/v1/midjourney-ai-image-generator/submit

Full API documentation ↗

prompt is required.

Required inputs

promptstring
Text prompt describing the image to generate (max 8192 chars). For an unspecified character or figurine, use an original non-branded character with no logos and no resemblance to existing copyrighted superheroes; preserve any character the user explicitly names.

Edit the sample inputs for your own task before submitting.

Midjourney AI Image Generator request
# Set VIDMAGE_IDEMPOTENCY_KEY to a unique value for this task; preserve it for transport retries.
curl -X POST "https://vidmage.ai/api/v1/midjourney-ai-image-generator/submit" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: ${VIDMAGE_IDEMPOTENCY_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"imageUrl":"https://vidmage.ai/assets/images/samples/blue-eyed-woman-sunlight.webp","prompt":"A serene mountain observatory above the clouds at sunrise, cinematic wide-angle landscape photography","aspectRatio":"1:1","chaos":0,"quality":"1","stylize":0,"weird":0,"raw":false,"iw":1,"sref":"https://vidmage.ai/assets/images/samples/blue-eyed-woman-sunlight.webp","sw":100,"sv":4,"oref":"https://vidmage.ai/assets/images/samples/blue-eyed-woman-sunlight.webp","ow":100,"tile":false}'
# -> { "success": true, "taskId": "...", "creditsConsumed": ... }
Parameters and input rules16 fields
FieldTypeRequiredDefaultMeaning and limits
promptstringYesNot specifiedText prompt describing the image to generate (max 8192 chars). For an unspecified character or figurine, use an original non-branded character with no logos and no resemblance to existing copyrighted superheroes; preserve any character the user explicitly names. Minimum length: 1 · Maximum length: 8192
aspectRatiostringNo"1:1"Output aspect ratio. Values: "1:1", "4:3", "3:2", "16:9", "3:4", "2:3", "9:16" · Default: "1:1"
negativePromptstringNoNot specifiedDescribe content that should not appear in the image. Maximum length: 2000
chaosnumberNo0Increase variation and unpredictability. Default: 0 · Minimum: 0 · Maximum: 100 · Multiple of: 1 · Whole numbers only
qualitystringNo"1"Rendering quality level. Values: "1", "2", "4" · Default: "1"
stylizenumberNo0Control the strength of Midjourney styling. Default: 0 · Minimum: 0 · Maximum: 1000 · Multiple of: 1 · Whole numbers only
weirdnumberNo0Control unconventional and experimental aesthetics. Default: 0 · Minimum: 0 · Maximum: 3000 · Multiple of: 1 · Whole numbers only
rawbooleanNofalseReduce automatic styling for more literal prompt control. Default: false
imageUrlstringNoNot specifiedOptional base image prompt. No additional field constraint listed.
iwnumberNo1Control the influence of the base image prompt. Requires imageUrl when supplied. Default: 1 · Minimum: 0 · Maximum: 3 · Multiple of: 1 · Requires: imageUrl · Whole numbers only
srefstringNoNot specifiedOptional style reference image. No additional field constraint listed.
swnumberNo100Control the influence of the style reference. Requires sref when supplied. Default: 100 · Minimum: 0 · Maximum: 1000 · Multiple of: 1 · Requires: sref · Whole numbers only
svnumberNo4Style reference model version. Requires sref when supplied. Default: 4 · Minimum: 1 · Maximum: 6 · Multiple of: 1 · Requires: sref · Whole numbers only
orefstringNoNot specifiedOptional Omni reference image. No additional field constraint listed.
ownumberNo100Control the influence of the Omni reference. Requires oref when supplied. Default: 100 · Minimum: 1 · Maximum: 1000 · Multiple of: 1 · Requires: oref · Whole numbers only
tilebooleanNofalseCreate a seamless repeating pattern. Default: false
Mode-specific fields & media limits
Text To Image rules
ControlMode-specific rule
promptRequired; minimum 1 characters; maximum 8192 characters
aspectRatioValues: "1:1", "4:3", "3:2", "16:9", "3:4", "2:3", "9:16"; mode default: "1:1"
negativePromptMaximum characters: 2000
chaosRange: 0 to 100; Default: 0
qualityValues: "1", "2", "4"; Default: "1"
stylizeRange: 0 to 1000; Default: 0
weirdRange: 0 to 3000; Default: 0
rawDefault: false
imageUrlNo additional field constraint listed.
iwRange: 0 to 3; Default: 1
srefNo additional field constraint listed.
swRange: 0 to 1000; Default: 100
svRange: 1 to 6; Default: 4
orefNo additional field constraint listed.
owRange: 1 to 1000; Default: 100
tileDefault: false

Retrieve the result

Save taskId from the accepted submission and send it to this endpoint:

POST /api/v1/midjourney-ai-image-generator/query

Use the same Bearer API key. On completion, read the imageUrl result field.

Task states and recovery ↗
Midjourney AI Image Generator query
curl -X POST "https://vidmage.ai/api/v1/midjourney-ai-image-generator/query" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "taskId": "TASK_ID_FROM_SUBMIT" }'
# -> { "success": true, "data": { "status": "...", "imageUrl": "https://..." } }

Pricing

See what one image, video, or generation costs in credits. Your API and website activity share the same credit balance.

API credit rates and calculated example request costs
API / workflowExample requestPrice (credits)
Midjourney AI Image Generatorimage API1 image request: 15 credits
How this is calculated
  • Base rate: 15 credits / generation

Base charge is per generation at the selected resolution.

Estimate your own request ↗
15 credits / generationSee calculation details
Billed in credits. Shared with the website.Active subscription required. Unit rates and examples follow current API credit rules.Billing details⌄

Examples show the charge for the inputs listed above. Resolution, duration, audio, output count and reference media can change the total. Minimum charges and rounding follow the selected API.

Use the Playground to estimate your request before submitting it. Estimates do not start a generation. Subscription and credit-pack prices are listed on the plans page.

Your task’s recorded usage is the source of truth for the final charge.

View plans ↗Billing guide ↗

About Midjourney Image API

VidMage's Midjourney Image API is an image generation interface that creates compositions from text and optional image references. Separate inputs and weights guide image content, visual style, and subject identity. Its controls include framing, creative treatment, quality, and repeating patterns, without a mask field for selecting an edit region. To explore this model's browser workflow, open VidMage's Midjourney AI Image Generator.

Midjourney Image API capabilities

Separate subject and style references
Use image, style, and Omni Reference inputs with their corresponding weights to guide different parts of a composition.
Adjust creative treatment
Configure stylize, chaos, weird, or raw alongside the prompt and aspect ratio for a new image.
Request a repeating pattern
Use the tile option for a pattern workflow, with quality configured separately from the image composition.

What you can build

Campaign concept boards

A product reference and a style reference answer different parts of a campaign brief. Give each its own role when exploring key visuals, then collect selected compositions on a board for discussing the art direction with a client.

Character design exploration

Explore a new costume or setting around a fictional character reference. Subject and style controls help direct the composition, while a character sheet gives artists a place to compare the resulting designs and inspect their differences.

Textile and packaging patterns

Describe the motif, palette, and texture for a repeating design, and request a tiled image. Your preview canvas can repeat the result across a fabric or packaging mockup so a designer can inspect both the pattern and its joins.

How to use Midjourney Image API

  1. Get an API key

    Create a key in the Developer Console and store it on your server. Use it in the Authorization: Bearer header.

  2. Prepare and submit your inputs

    Set up your inputs in the Playground, then copy the matching API request. Send it from your server with a unique Idempotency-Key.

  3. Track the task

    Save the returned taskId and query the same operation until it completes. Keep that identifier if your app stops waiting.

  4. Retrieve the result

    Read imageUrl from the completed task. Preview the result in your app and save a copy to your own storage for later use.

Input tips
Pair references with their controls
imageUrl uses iw; sref uses sw and sv; oref uses ow. Keep these groups distinct, and remember that sv selects a style-reference version.
Treat this as image generation
The request has no mask field for selecting an edit region. Its quality strings "1", "2", and "4" are quality choices, not an output image count.

Input requirementsUpload local files

Task fields and results

Keep the task identifier with its original request and Idempotency-Key. Query the same capability until it completes, then read the documented result field.

Task identifier
taskId
Query route
POST /api/v1/midjourney-ai-image-generator/query
Completed result
imageUrl
Task states and response structure ↗
Errors, retries and limits

Retry transport failures with the same idempotency key only when the original submission may not have reached the server. For a confirmed task, keep querying the original task instead of submitting a duplicate.

Read error recovery guidance ↗

FAQs

Are failed or timed-out requests charged?

A client timeout is not a confirmed task failure. Confirmed failures are automatically refunded only when the refund outcome is certain. Unknown charges or refunds remain pending reconciliation.

Failure and refund handling ↗
How long should my app wait for a result?

The checked contract does not establish a fixed completion time. Choose a local wait budget for your app; it is not an API completion deadline.

Polling and wait budgets ↗
What are the rate and concurrency limits?

Request-rate limits control how often you can call the API; concurrency limits control simultaneous work. The documentation ties both to the stable API key but does not publish numeric limits for this operation. Confirm account limits before planning parallel jobs.

Rate-limit recovery ↗
Can I receive results through a webhook?

The checked request contract documents status queries and does not list a webhook or callback field for these routes. Check the current authenticated OpenAPI contract before making a callback part of your integration.

Query task results ↗Check the current contract ↗

Explore more APIs on VidMage

  • Midjourney Video API↗
  • Wan Image API↗
  • Grok Image API↗
  • Nano Banana API↗
  • Qwen Image API↗
  • Z-Image API↗
  • GPT Image API↗
  • Seedream API↗