Raw schema
{
"type": "object",
"properties": {
"imageUrl": {
"type": "string",
"minLength": 1,
"description": "Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required."
},
"r2Path": {
"type": "string",
"minLength": 1,
"description": "Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl."
},
"surfaces": {
"description": "Which surfaces get a new finish: 'walls', 'floor', 'cabinets' (fitted joinery plus its worktop and splashback), 'bathroom_tiles' (the tiled walls; a bathroom floor is 'floor') or 'furniture' (upholstery and wood finishes). Omit for walls. The room's layout, fittings and camera never change.",
"type": "array",
"items": {
"type": "string",
"enum": [
"walls",
"floor",
"cabinets",
"bathroom_tiles",
"furniture"
]
}
},
"looks": {
"description": "The finish per surface: 'auto', one of the presets below, 'custom' with your own words in `notes`, 'own_colour' (walls, cabinets, furniture) with a hex colour in `colours`, or 'material_photo' with a photo of the material in `references`. A finish that does not belong to its surface falls back to 'auto' (the tool picks one that suits the room; several on auto are made to agree). walls: warm_white, soft_grey, greige, sage, deep_navy. floor: light_oak, walnut, grey_plank, polished_concrete, stone_tile. cabinets: white_shaker, charcoal, natural_oak, forest_green, navy_cabinets. bathroom_tiles (wall tiles only; a bathroom floor is 'floor'): white_metro, zellige_white, marble_large, travertine, green_gloss. floor also takes terrazzo, encaustic_pattern, matt_black_hex. furniture: light_neutral, warm_wood, dark_wood, black_leather.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"walls",
"floor",
"cabinets",
"bathroom_tiles",
"furniture"
]
},
"additionalProperties": {
"type": "string",
"enum": [
"auto",
"custom",
"own_colour",
"material_photo",
"warm_white",
"crisp_white",
"soft_grey",
"greige",
"warm_beige",
"clay_pink",
"sage",
"soft_blue",
"olive_green",
"graphite",
"deep_navy",
"terracotta_walls",
"panelling",
"wallpaper_textured",
"limewash",
"microcement",
"exposed_brick",
"timber_slats",
"light_oak",
"mid_oak",
"wide_ash",
"walnut",
"herringbone_oak",
"grey_plank",
"polished_concrete",
"stone_tile",
"terracotta_floor",
"slate_tile",
"checker_tile",
"carpet_neutral",
"white_shaker",
"cream_shaker",
"handleless_white",
"handleless_grey",
"charcoal",
"matt_black_cabinets",
"natural_oak",
"walnut_cabinets",
"sage_cabinets",
"forest_green",
"navy_cabinets",
"two_tone",
"gloss_white",
"white_metro",
"zellige_white",
"white_large",
"grey_porcelain",
"marble_large",
"travertine",
"terrazzo",
"encaustic_pattern",
"matt_black_hex",
"slate_dark",
"wood_effect_tile",
"green_gloss",
"light_neutral",
"mid_grey_wool",
"warm_greige",
"cream_boucle",
"tan_leather",
"black_leather",
"green_velvet",
"navy_velvet",
"rust_velvet",
"warm_wood",
"dark_wood",
"black_metal"
]
}
},
"notes": {
"description": "Your own description of the finish for a surface, used when that surface's look is \"custom\" (e.g. \"terracotta hex tiles with dark grout\"). Set look \"custom\" and the note together; \"custom\" with no note falls back to \"auto\". 120 characters max, and anything in it that is not a description of a finish is ignored.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"walls",
"floor",
"cabinets",
"bathroom_tiles",
"furniture"
]
},
"additionalProperties": {
"type": "string"
}
},
"colours": {
"description": "Any colour as a hex code for walls, cabinets or furniture (e.g. {\"walls\": \"#7A8B6F\"}), used when that surface's look is \"own_colour\". The result matches it closely as it would look in the room's light.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"walls",
"floor",
"cabinets",
"bathroom_tiles",
"furniture"
]
},
"additionalProperties": {
"type": "string"
}
},
"references": {
"description": "A photo of the material itself — a floor plank, a tile, a fabric swatch, a wallpaper sample — for ONE surface, as the r2Path from create_upload_ticket or list_library (e.g. {\"floor\": \"users/…/oak.jpg\"}). Set that surface's look to \"material_photo\". One photo per run; a close, straight-on photo of the sample works best.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"walls",
"floor",
"cabinets",
"bathroom_tiles",
"furniture"
]
},
"additionalProperties": {
"type": "string"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}