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/visite/plan | Shooting plan for the 4K visit: lens (focal length in mm) + camera path. Rendering happens in the editor — "Visite 4K" button |
GET /api/v1/cao/visite/objectifs | Lens catalogue (14–85 mm) with fields of view — free, no key |
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, always FLAT (one z/hauteur per segment): {x1,y1,x2,y2, hauteur(default 1000, NF P01-012), z}. Correct as-is for a balcony/mezzanine/landing. Along an open stair FLIGHT the rule is different (≥900 mm measured vertically above EACH step's nose, rising with the stair, then ≥1000 mm on the landing) — a single flat segment can't satisfy both ends at once, so use several garde_corps[] entries, one per step; POST /cao/integrite computes and proposes this rake automatically as a correctif when a flight is left unprotected.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 and/or /cao/pdf; for the video, /cao/visite/plan
(lens + camera path) rendered by the editor's "Visite 4K" button.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}]}
]
}
Rendering is done by one engine only, the browser GPU — editor “Visite 4K”
button: 3840×2160 cinematic tour (exterior, then interior room-by-room and up the stairs, bare
shell or furnished), frame-locked capture so every frame in the file is a real rendered frame.
The API directs that camera: POST /api/v1/cao/visite/plan (MCP
cao_visite_plan) returns a shooting plan — lens in millimetres (20 mm interior,
35 mm exterior, 50 mm closing shot), speeds, per-room dwell and the full waypoint list in mm.
Edit it, resend it, paste it into “Plan de caméra piloté”. Lens catalogue (free):
GET /api/v1/cao/visite/objectifs. Still boards: /cao/pdf or
/cao/render.
No account? POST /api/v1/cao/visite/studio returns a studio URL to open in
any browser — it converts your scene into visitable geometry, replays the plan and downloads the
MP4. Token valid 2 h, nothing stored.
The same response also returns url_visite_virtuelle
(/cao/visite-xr?t=…, same token): a live, interactive exploration of the
model — no video ever gets recorded. Immediate classic mode (mouse/touch, no hardware
needed), a VR headset button (Meta Quest, Pico, HTC Vive…) and an AR button (places
the model in a real room via surface detection — you walk around it for real). Deliberate design
choice: a real 3D scene — the same engine as the video walkthrough — instead of flat 360°
panorama photos per room (Matterport-style): real movement, real stereo depth in a headset, no
separate panorama-rendering pipeline. Points of interest show the room name, its floor area and
ceiling height — the only fields the scene model actually carries (no per-room energy rating or
glazing type, which don't exist anywhere in the CAO schema). Honest platform limit: WebXR AR
is today widely supported only on Chrome for Android (ARCore) — the button stays disabled, with an
explanation, on Safari/iOS.
The computed visit is a full choreography: good, but closed. When one view is
wrong — façade cut off, ridge out of frame, you want the next room — rewriting a whole path would
be absurd. Steer instead. In the render studio the keyboard drives the camera, and the
numeric keypad is a compass rose, so there is nothing to learn:
Ctrl+8 forward, Ctrl+2 back, Ctrl+4/6 strafe
left/right, Ctrl+7/9/1/3 diagonals, Ctrl+5 zoom in,
Ctrl+Shift+5 zoom out, Ctrl+←/→ pan, Ctrl+↑/↓ tilt,
Ctrl+PgUp/PgDn altitude, Ctrl+Home back to the starting view,
Ctrl+End overall view, Ctrl+Ins/Del next/previous room. Hold
Shift for a ×4 step.
Agents get the very same grammar — POST /api/v1/cao/visite/camera (MCP
cao_visite_camera) takes a sequence of actions instead of coordinates:
{"actions": ["avancer x3", "pivoter_gauche", "monter", "zoom_arriere"]}, and the
keyboard shortcuts are accepted verbatim ("ctrl+8"). A view prepared by the agent is
therefore reproduced exactly by hand, and vice versa. Post the scene as well: a step
that would end inside a partition is refused and explained, never silently applied, and the
response carries the camera state after each action. The returned chemin goes
straight back to /cao/visite/studio — steer first, render 4K second. Free catalogue:
GET /api/v1/cao/visite/commandes.
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.