---
title: "Get a Room-by-Room Renovation Budget — AI API"
description: "Return an LLM-generated line-item renovation budget broken down room by room from property photos. The standard call for fix-and-flip and BRRRR rehab numbers."
---

# LLM-powered room-by-room renovation cost breakdown

`POST /api/properties/renovation-cost-breakdown/`

5 credits

## What it returns

An itemized **room-by-room renovation cost breakdown** powered by a multimodal LLM analyzing the property's images plus its size/feature metadata. Returns per-room scope, material/labor split, and total cost — significantly more detailed than the top-level `renovation-cost` aggregate.

## When to use it

- Generate detailed scope-of-work documents from photos.
- Underwrite specific renovation strategies.
- Show investor clients exactly where the money goes.

## Pricing

5 credits.

## Request

Provide ONE input mode:

- **`property_id`** — we pull the listing images and metadata for it.
- **`property_address`** — we resolve the property server-side.
- **Your own photos** — the full `property` object (address, total_sqft, bedrooms, bathrooms) plus an `images` array of URLs, **or** a `multipart/form-data` upload with repeated `images` file fields (JPEG/PNG/WebP) alongside `property_id`/`property_address`.

At most **30 images** are analyzed per request; extras are ignored. Analyses of your own photos are private: they always run fresh, are never served from or written to the shared per-property cache, and never change the property's stored condition.

## FAQ

### Can I send my own photos?
Yes, two ways: a JSON `images` array of http(s) URLs, or a `multipart/form-data` upload with repeated `images` file fields (JPEG/PNG/WebP). Pair them with the `property` object (or `property_id`/`property_address`). At most **30 images** are analyzed per request; extras are ignored. Your photos stay private — the analysis always runs fresh and never touches the shared per-property cache or the property's stored condition.

### Can I force a fresh LLM analysis (bypass cache)?
Yes — set `force_refresh: true` in the request body. Bypasses the per-property cache.

### What LLM is used?
A multimodal model tuned for construction-cost estimation. Outputs are in domain terms (rooms, materials, line-items) and stable across model swaps.
