curl --request POST \
--url https://api.evolink.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "mj-v8.2",
"prompt": "A cinematic shot of a Maine Coon cat on a neon-lit balcony --ar 16:9 --s 500",
"quality": "standard",
"model_params": {
"speed": "fast"
}
}
'{
"created": 1757165031,
"id": "task-unified-1757165031-mjv82",
"model": "mj-v8.2",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"estimated_time": 45
},
"type": "image",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 1.8,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: mj-v8.2",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Midjourney V8.2 Image Generation
- Midjourney V8.2 model supports generating high-quality images via natural language prompts. Fast mode returns 4 images per generation; Draft mode returns 24 lightweight 512 px sketch images in a single run
- Supports text-to-image and image-to-image (reference image URLs in prompt)
- Input image URLs must be publicly reachable and fetchable within about 10 seconds; the upstream fetches images synchronously at task creation and returns 400 if it cannot. Image hosts outside mainland China (imgur, ibb, raw.githubusercontent, pinimg, picsum) fail in practice. Host images on a fast CDN or use the platform file upload
- V8.2 highlights: an aesthetics and image-quality upgrade over V8.1, a detail level set with the native
--quality/--qparameter (1–4, 4 = high-quality mode) in the prompt at no extra cost, and native 2K output (quality=hd). Turbo is not available on V8.2 (the upstream documents V8 as not supporting turbo) - Style Reference (
--sref) is supported;--oref/--crefare not supported on V8.2 and are rejected by the upstream, see Prompt Parameter Guide - Prompt parameters that the upstream does not support are passed through as-is: the task fails with a parameter error (
invalid_parameters) and reserved credits are refunded (they are no longer silently dropped) - Async processing mode, use the returned task ID to query status
- Generated image links are valid for 30 days, please save them promptly
- Timeout: approximately 20 minutes
- Parameter notes: this route runs on V8.2 and does not support niji; set the speed mode via
model_params.speedand the output quality via the top-levelqualityparameter; the detail level is written in the prompt as--quality/--q(1–4) and passed through unchanged mj-v8.2-edit/mj-v8.2-upload-paintare canvas edits (img_pos + mask). The upstream’s instruction-based edit endpoint (--edit, up to 4 reference images) is not exposed on this route yet and is being scheduled
curl --request POST \
--url https://api.evolink.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "mj-v8.2",
"prompt": "A cinematic shot of a Maine Coon cat on a neon-lit balcony --ar 16:9 --s 500",
"quality": "standard",
"model_params": {
"speed": "fast"
}
}
'{
"created": 1757165031,
"id": "task-unified-1757165031-mjv82",
"model": "mj-v8.2",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"estimated_time": 45
},
"type": "image",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 1.8,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: mj-v8.2",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}completed and billed normally; if all images are filtered, the task ends as failed and the reserved credits are refunded in full. Please make sure your prompts and reference images comply with the content guidelines.Authorizations
All endpoints require Bearer Token authentication
Get API Key:
Visit API Key Management Page to get your API Key
Add to request header:
Authorization: Bearer YOUR_API_KEY
Body
Model name
mj-v8.2 Prompt, supports all Midjourney V8.2 native parameter syntax (e.g. --ar 16:9 --s 500).
Image-to-Image: Place image URLs at the beginning of the prompt. Supported formats: .png, .gif, .webp, .jpg, .jpeg
Image-to-Image Rules:
- 1 image + no text = invalid (will return error)
- 1 image + text description = valid
- 2+ images + no text = valid
- 2+ images + text description = valid
Unsupported parameters: parameters the upstream does not support (e.g. --oref, --cref, --stop, --bs) are passed through and explicitly rejected by the upstream: the task fails with a parameter error (invalid_parameters) and reserved credits are refunded. --v / --version / --niji and the speed / hd parameters are stripped and controlled via API parameters; --quality / --q (1–4) is passed through.
2048"A cinematic shot of a Maine Coon cat on a neon-lit balcony --ar 16:9 --s 500"
Output quality
standard: Standard resolution (default), 1x multiplierhd: Native HD output, 1.5x multiplier. Mutually exclusive withspeed: draft
Pricing note: the quality multiplier is combined (multiplied) with the speed multiplier.
standard, hd Model parameters
Show child attributes
Show child attributes
HTTPS callback URL for task completion
Callback timing:
- Triggered when the task is completed or failed
- Sent after billing confirmation
Security restrictions:
- HTTPS protocol only
- Callbacks to private IP addresses are prohibited (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)
- URL length must not exceed
2048characters
Callback mechanism:
- Timeout:
10seconds - Up to
3retries after failure (retries at1s/2s/4s after failure) - Callback response body format matches the task query endpoint
- A 2xx status code is considered successful; other status codes trigger retries
"https://your-domain.com/webhooks/image-task-completed"
Response
Task created successfully
Task creation timestamp
1757165031
Task ID
"task-unified-1757165031-mjv82"
Actual model name used
"mj-v8.2"
Task object type
image.generation.task Task progress percentage (0-100)
0 <= x <= 1000
Task status
pending, processing, completed, failed "pending"
Async task info
Show child attributes
Show child attributes
Task output type
text, image, audio, video "image"
Usage and billing info
Show child attributes
Show child attributes