rreAPI Docs
rreAPI Docs
HomeWelcome

Image

midjourney-v8flux-2z-imageqwen-image-2midjourney-v7wan-2-7-imagegpt-image-2gpt-image-2-officialgemini-2.5-flash-image-previewgemini-3-pro-image-previewgemini-3.1-flash-image-previewdoubao-seedream-5-0-liteimagen-4-0

Audio

Mureka V9 Song APIVocal Remover APIMusic Extractor APIVoice Cleaner APIMultistem Splitter APIVoice Changer API

Video

topaz-video-upscalerkling-3-0music-video-1-0wan-2-7-videokling-motion-controlpixverse-v6doubao-seedance-2.0doubao-seedance-2.0-officialdoubao-seedance-2.0-betahappyhorse-1.0happyhorse-1.0-officialviduq3grok-imagine-video-1.5-betagrok-imagine-1.0-videoVeo 3.1gemini-omni

Chat

claude-fable-5minimax-m3deepseek-v4gpt-5.5gpt-5.4claude-opus-4-8claude-opus-4-7claude-sonnet-4-6

Text

ai-essay-writerhumanizeai-text-detector

Tools

enhance-video-1.0
X (Twitter)

midjourney-v8

Midjourney V8 on reAPI — async image generation (4 images per request) with structured MJ parameters, versions v5.1–v8.1 and niji, character/style/depth references, follow-up operations (upscale, variation, zoom, pan, reroll, reshape), and image-to-video.

Midjourney V8 on reAPI. One midjourney model with an action parameter covering generation, blend, edit, and the upscale / variation / zoom / pan / reroll / reshape toolkit; a separate midjourney-video model animates a still into a short clip. Async-first: submit returns a task_id; poll until ready. See current pricing on the model page.

Quick example

curl https://reapi.ai/api/v1/images/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "midjourney",
    "prompt": "a serene Japanese garden with cherry blossoms, painterly",
    "version": "8.1",
    "size": "16:9",
    "speed": "fast"
  }'
import requests

resp = requests.post(
    "https://reapi.ai/api/v1/images/generations",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "model": "midjourney",
        "prompt": "a serene Japanese garden with cherry blossoms, painterly",
        "version": "8.1",
        "size": "16:9",
        "speed": "fast",
    },
    timeout=30,
)
task_id = resp.json()["data"][0]["task_id"]
const resp = await fetch('https://reapi.ai/api/v1/images/generations', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'midjourney',
    prompt: 'a serene Japanese garden with cherry blossoms, painterly',
    version: '8.1',
    size: '16:9',
    speed: 'fast',
  }),
});
const { data } = await resp.json();
body := strings.NewReader(`{
  "model": "midjourney",
  "prompt": "a serene Japanese garden with cherry blossoms, painterly",
  "version": "8.1",
  "size": "16:9",
  "speed": "fast"
}`)
req, _ := http.NewRequest("POST", "https://reapi.ai/api/v1/images/generations", body)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)

Generation is asynchronous. The call returns a task_id; poll GET /api/v1/tasks/:task_id until status is completed, then read the image URLs. Generation returns 1–4 images (content review may filter some) and is billed once per request.

Endpoint

POST https://reapi.ai/api/v1/images/generations   # midjourney (image)
POST https://reapi.ai/api/v1/videos/generations    # midjourney-video
GET  https://reapi.ai/api/v1/tasks/:task_id
HeaderValue
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

reAPI accepts only public http(s) URLs for every media input (image_urls, cref, sref, dref, mask_url, …) — never base64 or data: URIs.

Operations — action

midjourney runs one operation per request, selected by action (default imagine). All share the images endpoint.

actionOperationReferences a prior task?
imagineText-to-image / image-to-image—
blendFuse 2–4 images—
editsRewrite an image from a prompt—
upscaleUpscale one tileyes (task_id + index)
variationVariations of one tileyes
high_variationStrong variationyes
low_variationSubtle variationyes
rerollRe-roll the whole gridyes (task_id)
zoomZoom out / outpaintyes
panExtend the canvas directionallyyes
remix_strongStrong reshape (v8 / v8.1)yes (task_id + index)
remix_subtleSubtle reshape (v8 / v8.1)yes

The parent-referencing actions take the reAPI task_id of a completed midjourney task plus index (1–4) to pick which grid image to act on. reAPI resolves your task id to the upstream reference automatically.

Generate — action: "imagine"

FieldTypeRequiredDefaultNotes
modelstringyes—midjourney
actionstringnoimagineOperation selector
promptstringyes—Image description
image_urlsstring[]no—Image-to-image reference(s)
speedstringnorelaxrelax / fast / turbo

The structured parameters below are the JSON form of Midjourney's native --flags. You may also type the flags into prompt; a body field overrides the matching flag. Ranges mirror Midjourney exactly.

FieldFlagRange / valuesNotes
size--are.g. 16:9, 1:1, 9:16Aspect ratio
quality--q0.25 / 0.5 / 1 / 2Render quality
style--stylee.g. rawStyle preset
version--v8.1 / 7 / 6.1 / 5.2 / 5.1Model version
seed--seedintegerReproducible seed
negative_prompt--nokeywordsWhat to avoid
stylize--s0–1000Stylization strength
chaos--c0–100Grid variety
weird--w0–3000Unconventional degree
tile--tilebooleanSeamless tile
niji--nijibooleanAnime model (pair with version 7 / 6)
iw--iw0–3Image-prompt weight
cw--cw0–100Character-reference weight
sw--sw0–1000Style-reference weight
cref--crefURLCharacter reference
sref--srefURLStyle reference
dref--drefURLDepth reference
dw--dw0–100Depth-reference weight
repeat--repeat2–40Repeat the prompt
raw--rawbooleanRaw mode (v5.1+)
draft--draftbooleanDraft mode (v7+)
hd--hdbooleanHD (v8 / v8.1)
stop--stop10–100Stop early (v5–6.1 / niji 5–6)
extraany --xxxstringAppended to the prompt verbatim
metadata—objectOpaque, stored with the task

Online-verified versions: 8.1, 7, 6.1, 5.2, 5.1, plus niji 7 / niji 6 (set niji: true with version: "7" or "6"). The version does not change the price.

Follow-up operations

All follow-ups share the images endpoint and the async task_id lifecycle. Common fields: task_id (required, a completed midjourney task), index (1–4, which grid image), speed, custom_id (advanced — a button id from the source task, bypassing index auto-match).

actionExtra fieldsNotes
upscaleindex | custom_idUpscale one tile
variation / high_variation / low_variationindex | custom_idVariation strength differs
reroll—Re-rolls the whole grid (no index)
zoomindex; zoom_ratioBelow 2 = 1.5× outpaint, 2 and up = 2× custom zoom
panindex; direction | custom_iddirection: left / right / up / down
remix_strong / remix_subtleindex (required); promptv8 / v8.1 only

blend takes image_urls (2–4) and an optional dimensions (SQUARE / PORTRAIT / LANDSCAPE). edits takes prompt + image_urls plus the same structured params as imagine.

Example — upscale tile 1 of a prior generation:

{
  "model": "midjourney",
  "action": "upscale",
  "task_id": "task_xxx",
  "index": 1
}

Image-to-video — midjourney-video

Animate a still into a short (~5 second) clip on the videos endpoint.

FieldTypeRequiredDefaultNotes
modelstringyes—midjourney-video
image_urlsstring[]yes—Start frame (exactly one URL)
promptstringno—Optional guidance
video_typestringnovid_1.1_i2v_480vid_1.1_i2v_480 / _720 / _start_end_480 / _start_end_720
motionstringnohighlow / high
batch_sizeintegerno11 / 2 / 4 (clips returned)
end_urlstringno—End frame (upgrades to a start-end type)

Pricing

midjourney bills per request (a 4-image grid for generation; one image for upscale and the like). The bill depends only on:

  • Operation tier — generation vs every other image action.
  • Speed — relax / fast / turbo. The model version never changes the price.

midjourney-video bills per resolution (480p / 720p) × batch_size.

Integer credits, 1 credit = $0.001:

credits = ceil(request_price_usd × 1000)        # midjourney
credits = ceil(clip_price_usd × batch_size × 1000)   # midjourney-video

See the model page for current rates.

Output

Poll GET /api/v1/tasks/:task_id. On completed:

{
  "id": "task_xxx",
  "status": "completed",
  "output": { "image_urls": ["https://cdn.reapi.ai/.../0.png", "https://cdn.reapi.ai/.../1.png"] }
}

output.image_urls holds 1–4 URLs (content review may filter some). midjourney-video returns output.video_urls. Save them promptly.

Errors

Customer-facing errors use the standard envelope { error: { code, message, request_id } }. Common cases:

SituationCode
Prompt rejected by content reviewCONTENT_POLICY_VIOLATION
Malformed / out-of-range requestINVALID_REQUEST
Referenced task not found / not yours / not completedINVALID_REQUEST
Insufficient creditsINSUFFICIENT_CREDITS
Upstream generation failedUPSTREAM_ERROR

See the full catalog at /docs/api/errors.

Tips

  • Generate with imagine first, then chain upscale / variation / zoom / pan / remix_strong off the returned task_id — no re-upload needed.
  • A body field overrides the matching --flag in the prompt, so pick one.
  • relax is the cheapest and the default; fast / turbo only change queue priority and price, not the visual result.
  • remix_strong / remix_subtle require a v8 / v8.1 parent; use the variation actions for older versions.
  • All references (cref / sref / dref, blend inputs) must be public http(s) URLs.

Related

  • Model page & live playground
  • API quickstart
  • Error codes

Table of Contents

Quick example
Endpoint
Operations — action
Generate — action: "imagine"
Follow-up operations
Image-to-video — midjourney-video
Pricing
Output
Errors
Tips
Related