HTTP API
Everything the dashboard does goes through a small JSON API on the same port. There is no authentication, and the server only listens on 127.0.0.1 unless you start it with --host.
| Method and path | Purpose |
|---|---|
GET /api/tiles |
List tiles |
POST /api/tiles |
Create a tile |
PUT /api/tiles/{id} |
Replace a tile |
DELETE /api/tiles/{id} |
Delete a tile |
PUT /api/layout |
Bulk-update x, y, w, h, collapsed, parent_id, page_id for many tiles (page_id: 0 leaves the page alone) |
GET /api/pages, POST /api/pages |
List and create pages ({ name, mode, cols }) |
PUT /api/pages/{id}, DELETE /api/pages/{id} |
Rename, change mode or order; delete a page and its tiles (409 for the last page) |
GET /api/icons, POST /api/icons |
List and upload SVG icons ({ name, svg }) |
GET /api/icons/{id}, DELETE /api/icons/{id} |
Serve and delete an icon |
POST /api/images?name=… |
Upload a raster image (raw body, Content-Type: image/png and so on) |
GET /api/images/{id}, DELETE /api/images/{id} |
Serve and delete an image |
GET /api/settings, PUT /api/settings |
Read and merge settings (bgColor, bgImage, glass, autoHideBar) |
POST /api/run |
Run an HTTP request for the curl runner (localhost origin only) |
POST /api/net/ping |
Ping a host ({ host, count?, timeout? }): replies, times, loss. See network tools; localhost origin only |
POST /api/net/trace |
Trace the route to a host ({ host, max_hops?, timeout? }) |
POST /api/net/dns |
Look up DNS records ({ name, type?, resolver? }) |
A tile looks like this:
{ "id": 1, "type": "bookmarks", "title": "AWS", "icon": "iconify:fa6-brands:aws", "x": 0, "y": 0, "w": 3, "h": 12, "collapsed": false, "color": null, "parent_id": null, "page_id": 1, "config": { "links": [{ "title": "Console home", "url": "https://aws.amazon.com/console/" }] }}type is bookmarks, dev, github, widget or group, and config depends on the type. color is a palette name such as blue (or null), parent_id is the group the tile sits in (or null for the page), and page_id is the page. Deleting a group deletes the tiles inside it. A page has { id, name, mode, cols, position }, where mode is free or columns and cols is 2 to 6. The API is an implementation detail of the interface: it can change between beta versions.
Support the project: Buy Me a Coffee or GitHub Sponsors.