rreAPI Docs
rreAPI Docs
HomepageWelcome

Image

flux-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

kling-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

minimax-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-v7

Midjourney V7 on reAPI — async image generation (4 images per request) with native MJ syntax, Omni Reference, Style Reference, and eleven edit operations (upscale, variation, remix, inpaint, outpaint, pan, enhance, retexture, canvas edit, remove background).

Midjourney V7 on reAPI. Four images per request, native MJ prompt syntax (--ar, --s, --chaos, --sref, --oref, …), and eleven edit operations that chain off any generated image. 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 rk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mj-v7",
    "prompt": "a serene Japanese garden with cherry blossoms --ar 16:9 --s 500",
    "model_params": { "speed": "fast" }
  }'
import requests

resp = requests.post(
    "https://reapi.ai/api/v1/images/generations",
    headers={
        "Authorization": "Bearer rk_live_xxx",
        "Content-Type": "application/json",
    },
    json={
        "model": "mj-v7",
        "prompt": "a serene Japanese garden with cherry blossoms --ar 16:9 --s 500",
        "model_params": {"speed": "fast"},
    },
    timeout=30,
)
task_id = resp.json()["id"]
const resp = await fetch('https://reapi.ai/api/v1/images/generations', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer rk_live_xxx',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'mj-v7',
    prompt: 'a serene Japanese garden with cherry blossoms --ar 16:9 --s 500',
    model_params: { speed: 'fast' },
  }),
});
const { id } = await resp.json();
body := strings.NewReader(`{
  "model": "mj-v7",
  "prompt": "a serene Japanese garden with cherry blossoms --ar 16:9 --s 500",
  "model_params": { "speed": "fast" }
}`)
req, _ := http.NewRequest("POST", "https://reapi.ai/api/v1/images/generations", body)
req.Header.Set("Authorization", "Bearer rk_live_xxx")
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. Each request returns 1–4 images (content review may filter some) and is billed once per request.

Endpoint

POST https://reapi.ai/api/v1/images/generations
GET  https://reapi.ai/api/v1/tasks/:task_id
HeaderValue
AuthorizationBearer rk_live_xxx
Content-Typeapplication/json

reAPI accepts only public http(s) image URLs for every image input — never base64 or data: URIs. For image-to-image, place the URL at the start of the prompt; for the direct-image edits, pass it in image_urls.

Models

The family is one base generator plus eleven edit operations. Each is a separate model id on the same endpoint.

modelOperationReferences a prior task?
mj-v7Text-to-image / image-to-image—
mj-v7-variationSubtle/strong variationsyes (task_id + image_number)
mj-v7-upscaleUpscale one imageyes
mj-v7-remixRe-prompt an imageyes
mj-v7-enhanceEnhance a draft imageyes (draft tasks only)
mj-v7-panExtend the canvas directionallyyes
mj-v7-outpaintZoom out / extend the frameyes
mj-v7-inpaintRepaint a masked regionyes
mj-v7-editCanvas edit (reposition + fill)yes
mj-v7-remove-bgRemove backgroundno (image_urls)
mj-v7-retextureRe-texture / restyleno (image_urls)
mj-v7-upload-paintUpload + masked repaintno (image_urls)

The eight parent-referencing edits take the reAPI task_id of a completed Midjourney V7 generation in model_params.task_id, plus model_params.image_number (0–3) to pick which of the four grid images to act on. reAPI resolves your task id to the upstream reference automatically.

Base generation — mj-v7

FieldTypeRequiredDefaultNotes
modelstringyes—mj-v7
promptstringyes—Native MJ syntax, ≤ 8192 chars. Image-to-image: place public image URL(s) at the start. A single image with no text is rejected.
model_params.speedstringnofastdraft / fast / turbo

Native MJ parameters are written inside the prompt, not as JSON fields:

FlagRangeDefaultMeaning
--ar W:Hany ratio1:1Aspect ratio
--s0–1000100Stylize
--chaos / --c0–1000Variation spread
--nokeywords—Negative prompt
--seed0–4294967295randomReproducible seed
--weird / --w0–30000Unconventional degree
--exp0–1000Experimental aesthetic (V7)
--rawflagoffDisable default beautification
--tileflagoffSeamless tile
--sref [URL]URL—Style Reference
--sw0–1000100Style weight
--sv1–64Style version
--oref [URL]URL—Omni Reference (doubles cost)
--ow1–1000100Omni Reference weight
--iw0–31Image-prompt weight

--v / --version / --niji are ignored (the version is locked to V7). Speed is set via model_params.speed, not a prompt flag.

Edit operations

All edits share the endpoint and the async task_id lifecycle. speed (where present) is fast / turbo (default fast).

Parent-referencing edits

Common model_params: task_id (required, the reAPI task id of a completed Midjourney V7 generation), image_number (0–3, default 0).

modelExtra model_paramsTop-level prompt
mj-v7-variationtype: subtle | strong (default subtle); speedoptional
mj-v7-upscaletype: standard | creative (default standard)—
mj-v7-remixmode: strong | subtle (default strong); speedrequired
mj-v7-enhance— (parent must be a draft task)—
mj-v7-pandirection: down | right | up | left (default down); scale 1.1–3 (default 1.5); speedoptional
mj-v7-outpaintscale 1.1–2 (default 1.5); speedoptional
mj-v7-inpaintmask (required); speedoptional
mj-v7-editcanvas (required); img_pos (required); mask (optional); speedrequired

mask is one of two shapes (mutually exclusive):

{ "mask": { "areas": [ { "width": 200, "height": 200, "points": [50,50,50,250,250,250,250,50] } ] } }
{ "mask": { "url": "https://example.com/mask.png" } }

points is a flat [x1,y1,x2,y2,…] closed polygon; for the URL form, white = repaint region, black = preserve. canvas is width / height (px); img_pos is width / height / x / y (placement of the source image on the canvas).

Example — upscale image 0 of a prior generation:

{
  "model": "mj-v7-upscale",
  "model_params": { "task_id": "task_xxx", "image_number": 0, "type": "standard" }
}

Direct-image edits

These take the source image in image_urls (exactly one public http(s) URL) and do not reference a prior task.

modelRequiredmodel_params
mj-v7-remove-bgimage_urls—
mj-v7-retextureprompt, image_urlsspeed (optional)
mj-v7-upload-paintprompt, image_urlsmask (required), canvas (required), img_pos (required), speed

Pricing

Midjourney V7 bills per request (four images), not per image. Cost scales with:

  • Speed tier — draft < fast < turbo.
  • Operation — base generation and lightweight edits (remove-bg, pan, outpaint, enhance) cost less than heavy edits (upscale, variation, remix, inpaint, canvas edit, retexture, upload-paint).
  • --oref — Omni Reference in the prompt doubles the cost.

Integer credits, 1 credit = $0.001:

credits = ceil(request_price_usd × 1000)

where request_price_usd is the (model, speed) rate, doubled when the prompt carries --oref. 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 of the four). 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

  • A single reference image with no text is rejected — add a short description.
  • Use --oref for subject consistency and --sref for style transfer; they combine. --oref doubles the bill, so reserve it for shots that need it.
  • Generate with mj-v7 first, then chain mj-v7-upscale / mj-v7-variation / mj-v7-inpaint off the returned task_id — no re-upload needed.
  • mj-v7-enhance only accepts a parent created with speed: "draft".
  • Keep the version implicit — --v / --niji are ignored on V7.

Related

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

Table of Contents

Quick example
Endpoint
Models
Base generation — mj-v7
Edit operations
Parent-referencing edits
Direct-image edits
Pricing
Output
Errors
Tips
Related