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. plan and masterplan only 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, and auto)
  • Expert types: all 7 modes (exterior, interior, masterplan, landscape, plan, product, text-to-render)

Credit Cost: 1 credit per generation

Endpoint

HTTP Method
POST https://api.mnmlai.dev/v1/archDiffusion-v45-lite

Request

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

ParameterTypeDefaultDescription
imageRequiredFile-Source architectural image (JPEG, PNG, WebP). Max 15MB, min 1KB
promptRecommendedStringexpert defaultDescription 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_nameString"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_ratioString"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_formatString"png"Output image format: "png", "jpeg", "webp"

Expert Types

exterior: Building exteriors
interior: Interior spaces
masterplan: Site plans & urban
landscape: Outdoor landscapes
plan: Floor plans
product: Product renders

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, not v42_camera_angle).
  • • Booleans (annotation, show_dimensions) use the strings "true" / "false".
  • • Only the fields relevant to the chosen expert_name are applied; others are ignored.
  • render_style does not accept "auto" (use an explicit style); masterplan render style has no "auto", and plan drawing_style has no "realistic" — pick a listed value.

Common (all expert types)

ParameterDefaultOptions / Notes
render_stylephotorealraw, photoreal, cgi_render, cad, freehand_sketch, clay_model, illustration, watercolor
geometrypreciseprecise, creative
view_modeautoscene framing mode
camera_angleautoexpert-specific angle options
camera_directionfrontfront, left, right, back, etc.
annotationfalse"true" / "false"
show_dimensionsfalse"true" / "false"
seedrandominteger 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..3up to 3 optional reference image files. The main image is always image 1; references follow in order
reference_mode_1..3autoNew 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_collagefalseAccepted for v4.4 compatibility but has no effect on v4.5

expert_name = "exterior"

site_contextauto
greenerysome
vehiclesfew
peoplefew
street_propsoff
motionsubtle
time_of_dayauto
weatherclear
ground_wetnessdry

expert_name = "interior"

room_typeauto
room_styleauto
furnishing_levelauto
indoor_plantsauto
interior_accessoriesoff
lighting_modeauto
floor_finishauto
peopleauto
ambienceauto

expert_name = "masterplan"

plan_mode3d
camera_angleauto
greenerymoderate
vehiclesfew
peoplefew
urban_densitymedium
development_typeauto
water_featuresnone
time_of_dayauto
weatherclear

expert_name = "landscape"

landscape_stylemodern
camera_angleauto
vegetationmoderate
water_featuresnone
hardscapepathways
outdoor_furnitureminimal
landscape_lightingnone
peoplefew
time_of_dayauto
weatherclear
ground_wetnessdry

expert_name = "product"

product_categoryfurniture
camera_angleauto
backgroundwhite
product_lightingsoft
material_finishauto
shadow_stylecontact

expert_name = "plan"

plan_view_mode2d
drawing_stylearchitectural
color_modecolored
furniture_2doutline
plan_annotationsoff
wall_stylefilled
view_type_3disometric
ceilinghide
room_styleauto
furnishing_3dmoderate
lighting_3dnatural
ambience_3dday

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

Status Check Endpoint
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 plan or masterplan quality 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.