# gui.new HTML in, URL out. ``` POST https://gui.new/api/canvas Content-Type: application/json {"html": "

Hello

"} ``` Response: ```json { "id": "abc123", "url": "https://gui.new/abc123", "edit_token": "...", "expires_at": "2026-03-11T12:00:00Z" } ``` That URL is live. Anyone with the link sees a rendered page. JavaScript runs. Forms work. Multiple viewers see changes in real-time. ## Update ``` PUT https://gui.new/api/canvas/abc123 Authorization: Bearer {edit_token} Content-Type: application/json {"html": "

v2

"} ``` ## Why this exists Text is a lossy format for visual ideas. A dashboard described is not a dashboard seen. gui.new closes that gap. You generate the HTML, it becomes a URL someone can open, interact with, and share. ## Craft - Self-contained. Inline styles, `