Replace materials

New floors, counters and cabinets before the contractor arrives.

Resurface flooring, countertops, walls, backsplash, cabinetry or a fireplace surround with a texture photo or a named preset. Light reflections and perspective follow the room.

POST/v1/studio/staging/replace-materialasync · ~14s
Empty living room with light oak floors and a large window
The same room with herringbone white oak flooring
OriginalResurfaced
Flooring

Original photos on this page are AI-generated examples; every result is real Studio API output.

  • Flooring
  • Countertops
  • Walls
  • Backsplash
  • Cabinetry
  • Fireplace surround
Use cases

Sell the renovation, not the repair

Drag any slider to compare. Every example runs through the same endpoint.

Living room with worn beige carpet
The same room with dark walnut floors
CarpetWalnut

Flooring

Replace worn carpet or dated tile with hardwood, stone or concrete in a click.

Kitchen with dark granite countertops
The same kitchen with white quartz countertops
GraniteQuartz

Countertops

Show granite as quartz or marble — the cabinets and appliances stay the same.

Kitchen with white shaker cabinets
The same kitchen with sage green cabinets
WhiteSage

Cabinetry

Try painted cabinets before committing to a color.

API

One request. That’s the integration.

Authenticate with x-api-key or Authorization: Bearer — the same key as the Listings API.

POST/v1/studio/staging/replace-materialAsync · ~14s
01POST the photo URL, the surface and a material. You get 202 Accepted and a job_id right away.
02Poll GET /v1/studio/jobs/:job_id, stream progress over SSE, or wait for your webhook.
03Download the finished image from the CDN — plus a before/after comparison where noted.
Body parameters6
room_photo_urlstringrequired
Public URL of the room photo.
surface_typeenumrequired
flooring · walls · countertops · backsplash · cabinetry · fireplace_surround
material_sample_image_urlstring
Photo of the material or texture to apply.
material_presetstring
A named material, e.g. herringbone_white_oak.
custom_finish_notesstring
Finish and sheen details — matte, wire-brushed, honed.
webhook_urlstring
Called with the finished job when processing completes.
terminal
curl -X POST https://mlsapi.dev/v1/studio/staging/replace-material \
-H "x-api-key: $MLSAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"room_photo_url": "https://cdn.mlsapi.dev/photos/A12079565/01.webp",
"surface_type": "flooring",
"material_preset": "herringbone_white_oak",
"custom_finish_notes": "Matte finish, wire-brushed texture, realistic light reflections."
}'
202 Accepted
POST /v1/studio/staging/replace-material
{
"job_id": "job_studio_01JA0XQ4M9ZK7T",
"type": "replace_material",
"status": "processing",
"progress_percentage": 10,
"current_step": "initializing_pipeline",
"estimated_completion_seconds": 14,
"created_at": "2026-09-29T14:02:11.000Z",
"status_url": "/v1/studio/jobs/job_studio_01JA0XQ4M9ZK7T"
}

Try Replace Materials in Studio.

Sign up or log in at studio.mlsapi.dev to run it on your own photos — then call the same endpoint from your code.