ArchDiffusion v4.5-Fast
ArchDiffusion v4.5-Fast is the fast, cost-effective tier of our v4.5 rendering engine. It renders at 1K on the same brief as v4.5-Ultra — the same per-discipline art direction and the same camera lock — at a third of the cost and roughly half the time.
How it works: v4.5-Fast takes your source image and prompt, composes the same v4.5 brief the Ultra tier does, and renders it at 1K on a shorter reasoning budget. Designed for iteration: quick turnaround, the same controls, the same look.
v4.5-Fast vs v4.5-Ultra:
- • Faster processing: 1K output on a shorter reasoning budget — typically 15–30 seconds
- • Lower cost: 1 credit per generation (vs 3 credits for v4.5-Ultra)
- • Same brief: the same look block, the same camera lock, the same parameters and defaults
- • Fewer reference images: up to 3 (Ultra takes 4)
- • No drawing route: every expert renders on the standard model.
planandmasterplanonly reach the drawing model on Ultra - • One look block is skipped: the 3D-masterplan finish, which measured softer at 1K. Everything else is identical. As on Ultra, the look block applies to the photographic registers (
photoreal, the default, andauto) - • Expert types: all 7 modes (exterior, interior, masterplan, landscape, plan, product, text-to-render)
Credit Cost: 1 credit per generation
Endpoint
POST https://api.mnmlai.dev/v1/archDiffusion-v45-liteRequest
Send a POST request with multipart/form-data containing your source image and design parameters. The API processes images asynchronously, returning a request ID for status tracking.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
imageRequired | File | - | Source architectural image (JPEG, PNG, WebP). Max 15MB, min 1KB |
promptRecommended | String | expert default | Description of desired transformation (max 2000 characters). Omitting it is not an error — the expert's own default stands in and the render is composed from your parameters |
expert_name | String | "exterior" | Expert mode: "exterior", "interior", "masterplan", "landscape", "plan", "product", "text-to-render". On v4.5, "text-to-render" treats your image as the SITE and leaves the design to your prompt |
aspect_ratio | String | "auto" | Output aspect ratio: "auto" (match the input image), "1:1", "16:9", "21:9", "3:2", "4:3", "5:4", "4:5", "3:4", "2:3", "9:16", plus the panoramic "4:1", "1:4", "8:1", "1:8". "match_input_image" is accepted as an alias for "auto". An unsupported value returns 400 INVALID_ASPECT_RATIO. All of them are available on every expert here — the Fast tier has no drawing route, unlike v4.5-Ultra |
output_format | String | "png" | Output image format: "png", "jpeg", "webp" |
Expert Types
Design Parameters (Optional)
These optional form fields control the rendered scene. They mirror the styling controls of the mnml studio app, and the defaults below are identical to those of the v4.4 endpoints — so the same request body renders on either engine and is read the same way. Send each as a plain form field alongside image and prompt.
Important encoding notes
- • Field names are unprefixed (e.g.
camera_angle, notv42_camera_angle). - • Booleans (
annotation,show_dimensions) use the strings"true"/"false". - • Only the fields relevant to the chosen
expert_nameare applied; others are ignored. - •
render_styledoes not accept"auto"(use an explicit style);masterplanrender style has no"auto", andplandrawing_stylehas no"realistic"— pick a listed value.
Common (all expert types)
| Parameter | Default | Options / Notes |
|---|---|---|
render_style | photoreal | raw, photoreal, cgi_render, cad, freehand_sketch, clay_model, illustration, watercolor |
geometry | precise | precise, creative |
view_mode | auto | scene framing mode |
camera_angle | auto | expert-specific angle options |
camera_direction | front | front, left, right, back, etc. |
annotation | false | "true" / "false" |
show_dimensions | false | "true" / "false" |
seed | random | integer 0–1000000. On v4.5 the seed IS forwarded to the rendering engine, so repeating a request with the same seed and inputs gives a much closer result |
reference_image_1..3 | – | up to 3 optional reference image files. The main image is always image 1; references follow in order |
reference_mode_1..3 | auto | New in v4.5. What each reference is FOR: composition, style, material, atmosphere, color, or auto. Each role also states what to ignore in that image |
has_collage | false | Accepted for v4.4 compatibility but has no effect on v4.5 |
expert_name = "exterior"
site_context | auto |
greenery | some |
vehicles | few |
people | few |
street_props | off |
motion | subtle |
time_of_day | auto |
weather | clear |
ground_wetness | dry |
expert_name = "interior"
room_type | auto |
room_style | auto |
furnishing_level | auto |
indoor_plants | auto |
interior_accessories | off |
lighting_mode | auto |
floor_finish | auto |
people | auto |
ambience | auto |
expert_name = "masterplan"
plan_mode | 3d |
camera_angle | auto |
greenery | moderate |
vehicles | few |
people | few |
urban_density | medium |
development_type | auto |
water_features | none |
time_of_day | auto |
weather | clear |
expert_name = "landscape"
landscape_style | modern |
camera_angle | auto |
vegetation | moderate |
water_features | none |
hardscape | pathways |
outdoor_furniture | minimal |
landscape_lighting | none |
people | few |
time_of_day | auto |
weather | clear |
ground_wetness | dry |
expert_name = "product"
product_category | furniture |
camera_angle | auto |
background | white |
product_lighting | soft |
material_finish | auto |
shadow_style | contact |
expert_name = "plan"
plan_view_mode | 2d |
drawing_style | architectural |
color_mode | colored |
furniture_2d | outline |
plan_annotations | off |
wall_style | filled |
view_type_3d | isometric |
ceiling | hide |
room_style | auto |
furnishing_3d | moderate |
lighting_3d | natural |
ambience_3d | day |
Response
The API processes your request asynchronously and immediately returns a response containing a unique request ID. Use this ID with the Status Check endpoint to monitor processing progress and retrieve the final generated image.
Success Response (200 OK)
{
"status": "success",
"id": "vysqf2nr0drmc0ctqx5tkdse48",
"prompt": "Modern building with glass facade",
"expert_name": "exterior",
"parameters": {
"renderStyle": "photoreal",
"geometry": "precise",
"viewMode": "auto",
"annotation": false,
"showDimensions": false,
"referenceImageCount": 0,
"aspectRatio": "auto",
"resolution": "1K",
"thinkingLevel": "minimal",
"drawingRoute": false
},
"credits": 99
}Code Examples
1. Basic Exterior Rendering (cURL)
curl -X POST https://api.mnmlai.dev/v1/archDiffusion-v45-lite \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F "image=@/path/to/building.jpg" \
-F "prompt=Modern commercial building with glass facade" \
-F "expert_name=exterior"2. Interior Rendering
curl -X POST https://api.mnmlai.dev/v1/archDiffusion-v45-lite \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F "image=@/path/to/room.jpg" \
-F "prompt=Luxury modern living room with natural lighting" \
-F "expert_name=interior" \
-F "output_format=jpeg" \
-F "aspect_ratio=16:9"3. Node.js Implementation
const FormData = require('form-data');
const fs = require('fs');
const axios = require('axios');
const form = new FormData();
form.append('image', fs.createReadStream('building.jpg'));
form.append('prompt', 'Modern residential building with landscaping');
form.append('expert_name', 'exterior');
form.append('output_format', 'png');
const response = await axios.post(
'https://api.mnmlai.dev/v1/archDiffusion-v45-lite',
form,
{
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY',
...form.getHeaders()
}
}
);
console.log('Request ID:', response.data.id);
console.log('Remaining credits:', response.data.credits);4. Python Implementation
import requests
url = 'https://api.mnmlai.dev/v1/archDiffusion-v45-lite'
files = {
'image': open('building.jpg', 'rb')
}
data = {
'prompt': 'Modern office building with green terrace',
'expert_name': 'exterior',
'output_format': 'png'
}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
}
response = requests.post(url, headers=headers, files=files, data=data)
result = response.json()
print(f"Request ID: {result['id']}")
print(f"Remaining credits: {result['credits']}")Checking Processing Status
GET https://api.mnmlai.dev/v1/status/{id}Processing Time: Typically 15-30 seconds (faster than v4.5-Ultra). Poll the status endpoint every 3-5 seconds until the status becomes "succeeded" or "failed".
Best Practices
Image Guidelines
- Use high-quality source images (1024px or larger recommended)
- Supported formats: JPEG, PNG, WebP
- File size: 1KB - 15MB per image
- Outputs are rendered at 1K resolution for fast turnaround
When to Use v4.5-Fast vs v4.5-Ultra
- Use v4.5-Fast: Quick iterations, prototyping, budget-conscious projects, simpler transformations
- Use v4.5-Ultra: Final presentations, 2K output, up to 4 reference images, and anything where
planormasterplanquality matters — those two experts only reach the drawing model on Ultra
Prompt Tips
- Be descriptive about materials, lighting, and atmosphere in your prompt
- Include style references (e.g., "modern minimalist", "industrial loft")
- Specify time of day or weather conditions in the prompt for desired effects
Error Handling
Common Error Responses
// 400 Bad Request - Missing image
{
"status": "error",
"code": "MISSING_IMAGE",
"message": "Image file is required"
}
// 400 Bad Request - Unsupported aspect ratio
{
"status": "error",
"code": "INVALID_ASPECT_RATIO",
"message": "Unsupported aspect_ratio value. Allowed values: ...",
"details": { "receivedAspectRatio": "7:3", "drawingRoute": false }
}
// 400 Bad Request - Body was not multipart/form-data
{
"status": "error",
"code": "INVALID_REQUEST_BODY",
"message": "Request body must be multipart/form-data. ..."
}
// 400 Bad Request - Insufficient credits
{
"status": "error",
"code": "NO_CREDITS",
"message": "You do not have enough credits to use this feature. This API requires 1 credit.",
"details": { "credits": 0, "required": 1 }
}
// 400 Bad Request - Image too large
{
"status": "error",
"code": "IMAGE_TOO_LARGE",
"message": "Image file is too large",
"details": { "size": 20000000, "maxSize": 15728640 }
}Credits are only spent on accepted requests. Every validation error above is returned before the engine is called, so a rejected request costs nothing. If a request is accepted and the render then fails — or completes without producing an image — the credit is refunded automatically, once, against that request ID.
Occasionally a render is rejected by the content checker. The rendering engine screens every request, and the screen is probabilistic — the same benign architectural prompt can pass on one attempt and be flagged on the next. When it happens the request is accepted, so you get a request ID, and the render then produces nothing; the credit is refunded automatically and the status endpoint reports the failure. Retry the request.