A 3D editor in the browser, nothing to install: draw a plan, place code-compliant building elements, get costed quantities and a printable dimensioned plan — export to AutoCAD, or let an AI agent draw for you. An AI agent can drive the CAD for any project type (new build, renovation, extension, technical rooms, decoration, outdoor) through a simple JSON scene. Version française.
The same engine is exposed as a REST API and an MCP server. One JSON scene feeds
every output below. Get a free key in one call — POST /api/v1/signup (no email) or
the MCP tool obtenir_cle_api — then use header X-API-Key (REST) or
Authorization: Bearer (MCP).
| Endpoint | Purpose |
|---|---|
GET /api/v1/cao/schema | Authoritative schema (all fields + examples) — no key. Read first. |
POST /api/v1/cao/verifier | FREE geometric audit (no key) — floating dormers, absolute sill heights, blank upper floors… MCP: cao_verifier. |
POST /api/v1/cao/dxf | JSON scene → AutoCAD DXF (walls/boxes as 3DFACE, MEP on layers ELEC/PLOMB/PLOMB_RESEAUX) |
POST /api/v1/cao/metres | Same scene → costed quantities (linear m, m², counts, paint litres) — to self-check |
POST /api/v1/cao/render | Same scene → quick SVG/PNG top view (incl. electrical/plumbing/networks) — to self-check |
POST /api/v1/cao/pdf | Same scene → presentable board: top view, elevations, shaded axonometric, MEP plan, dimensions |
POST /api/v1/cao/video | Exterior orbit MP4 visit (async job_id). For more (interior room-by-room): editor → "Visite 4K" |
Coordinate system: x = right, y = depth, z = height, all in millimetres. A scene is a JSON object of lists. Field names are in French — here is the glossary:
murs = walls: {x1,y1,x2,y2, hauteur(height, def. 2500), epaisseur(thickness, def. 200)}. Close the loop for a room.ouvertures = openings (doors/windows): {mur(wall index), position(mm from x1,y1), largeur(width), hauteur(height), z, type:'porte'(door)|'fenetre'(window)}. Affects /cao/pdf only.toitures = roofs: {type, murs, hauteur_faitage(ridge height)} — plat(flat), deux_pans(gable), quatre_pans(hip), conique, dome, chien_assis(dormer), personnalise(custom). Affects /cao/pdf only.decoration = per-wall finish: {mur, face:'interieur'(inside)|'exterieur'(outside), type, couleur(hex)}. Types: peinture(paint), enduit(render), papier_peint(wallpaper), carrelage_mural(wall tiles), lambris(panelling), beton_cire(polished concrete).electricite = electrical symbols: {type, mur, position} or {type, x, y}. Types: prise(socket), prise_rj45, interrupteur(switch), va_et_vient(2-way), luminaire(light), tableau_electrique(panel), detecteur_fumee(smoke detector), vmc(MEV).plomberie = plumbing fixtures. Types: evier(sink), lavabo(basin), wc(toilet), douche(shower), baignoire(bathtub), chauffe_eau(water heater), radiateur(radiator), compteur_eau(water meter).reseaux = pipe networks: {type, diametre(diameter), trace:[{x,y}…]}. Types: ef(cold water), ec(hot water), eu(waste), ev(soil), ep(rainwater), chauffage(heating).boites = boxes/volumes (masses, furniture, slabs, terraces): {x,y,l(length),p(depth),h(height), z, rotation}; plan/cercles = 2D lines/circles.murs item accepts z (base altitude, mm) — stack as many floors as you want (ground floor z:0, first floor z:2600, …).escaliers = stairs (straight flight, sized by the French Blondel rule): {x, y, hauteur(rise to next floor), largeur(width), rotation, z}.ascenseurs = elevators/lifts (shaft + accessible cabin, NF EN 81-70 1100×1400 mm): {x, y, niveaux(floors served), hauteur(per floor), largeur, profondeur, porte, rotation, z}.garde_corps = guardrails (balcony/mezzanine/stairwell): {x1,y1,x2,y2, hauteur(default 1000, NF P01-012), z}.electricite, plomberie and
reseaux appear everywhere — DXF layers ELEC/PLOMB/PLOMB_RESEAUX, the SVG/PNG
preview, the metres counts and the PDF board. ouvertures and
toitures affect the /cao/pdf board only.GET /cao/schema → ② compose the scene → ③
POST /cao/verifier (fix critical alerts) → ④ /cao/metres + /cao/render →
⑤ deliver /cao/dxf, /cao/pdf and/or /cao/video
(orbit MP4). For more (interior tour): editor → "Visite 4K".Copy-and-adapt starting points. All dimensions in millimetres.
{
"murs": [
{"x1":0,"y1":0,"x2":9000,"y2":0,"hauteur":2600,"epaisseur":200},
{"x1":9000,"y1":0,"x2":9000,"y2":7000,"hauteur":2600,"epaisseur":200},
{"x1":9000,"y1":7000,"x2":0,"y2":7000,"hauteur":2600,"epaisseur":200},
{"x1":0,"y1":7000,"x2":0,"y2":0,"hauteur":2600,"epaisseur":200}
],
"ouvertures": [
{"mur":0,"position":3800,"largeur":1000,"hauteur":2150,"type":"porte"},
{"mur":2,"position":3500,"largeur":1400,"hauteur":1250,"z":900,"type":"fenetre"}
],
"toitures": [{"type":"deux_pans","hauteur_faitage":1800,"debord":300}],
"decoration": [{"mur":0,"face":"exterieur","type":"enduit","couleur":"#e9e2d0"}]
}
Stack as many floors as you like: repeat the walls with the right z (0, 2600, 5200…),
add one stair per level, a mezzanine guardrail, and a roof of your choice at the total height.
{
"murs": [
{"x1":0,"y1":0,"x2":8000,"y2":0,"z":0},{"x1":8000,"y1":0,"x2":8000,"y2":6000,"z":0},
{"x1":8000,"y1":6000,"x2":0,"y2":6000,"z":0},{"x1":0,"y1":6000,"x2":0,"y2":0,"z":0},
{"x1":0,"y1":0,"x2":8000,"y2":0,"z":2600},{"x1":8000,"y1":0,"x2":8000,"y2":6000,"z":2600},
{"x1":8000,"y1":6000,"x2":0,"y2":6000,"z":2600},{"x1":0,"y1":6000,"x2":0,"y2":0,"z":2600},
{"x1":0,"y1":0,"x2":8000,"y2":0,"z":5200},{"x1":8000,"y1":0,"x2":8000,"y2":6000,"z":5200},
{"x1":8000,"y1":6000,"x2":0,"y2":6000,"z":5200},{"x1":0,"y1":6000,"x2":0,"y2":0,"z":5200}
],
"escaliers": [{"x":600,"y":600,"hauteur":2600,"z":0},{"x":600,"y":600,"hauteur":2600,"z":2600}],
"ascenseurs": [{"x":2200,"y":800,"niveaux":3,"hauteur":2600,"z":0}],
"garde_corps": [{"x1":600,"y1":2000,"x2":4000,"y2":2000,"hauteur":1000,"z":2600}],
"toitures": [{"type":"quatre_pans","z":7800,"hauteur_faitage":2200,"debord":400}]
}
{
"murs": [
{"x1":0,"y1":0,"x2":2600,"y2":0},{"x1":2600,"y1":0,"x2":2600,"y2":2200},
{"x1":2600,"y1":2200,"x2":0,"y2":2200},{"x1":0,"y1":2200,"x2":0,"y2":0}
],
"plomberie": [
{"type":"douche","mur":1,"position":600},
{"type":"lavabo","mur":0,"position":1800},
{"type":"wc","mur":2,"position":500}
],
"electricite": [{"type":"vmc","x":1300,"y":1100},{"type":"luminaire","x":1300,"y":700}],
"reseaux": [
{"type":"ef","trace":[{"x":0,"y":300},{"x":600,"y":300},{"x":600,"y":100}]},
{"type":"ev","trace":[{"x":500,"y":2200},{"x":500,"y":1400},{"x":1800,"y":1400}]}
]
}
API — POST /api/v1/cao/video (MCP cao_video): exterior
orbit MP4 (async). For more — editor “Visite 4K” button: GPU cinematic tour
(exterior + interior room-by-room, 4K 30 fps, bare shell or furnished). Still boards:
/cao/pdf or /cao/render.
No — the editor runs entirely in the browser (WebGL/Three.js), no dedicated GPU required.
Yes. The JSON scene model covers construction (house, apartment, extension, commercial), interior
renovation (partitions, doors, per-room finishes), MEP lots (electrical, plumbing, networks) and
decoration. An agent reads GET /api/v1/cao/schema for exact fields, composes the scene,
self-checks with /cao/metres and /cao/render, then delivers the DXF, the PDF
board or the video.
Yes — on dedicated layers ELEC/PLOMB/PLOMB_RESEAUX (symbols + type labels), and also in the SVG/PNG
preview, the metres counts and the PDF board.