# 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, `