List sites
const url = 'https://example.com/api/sites?sort=date';const options = {method: 'GET', headers: {'Remote-User': '<Remote-User>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/api/sites?sort=date' \ --header 'Remote-User: <Remote-User>'Returns both a flat list and a nested group tree.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters”Free-text search.
Filter by tag.
Filter by group subtree.
Include hidden sites (admin only).
Responses
Section titled “ Responses ”Matching sites.
object
object
Group path (0–2 segments); empty for a flat site.
Optional preview image URL used by the portal instead of a live iframe.
Total on-disk size in bytes of the current revision’s files.
True when the server has a cached favicon for the site, detected
from the published index.html at publish time. Fetch the bytes from
GET /api/sites/{path}/favicon.
Set when the site is soft-deleted; absent for live sites.
object
The group’s own landing site, present when a site shares this node’s path (e.g. the site “decks” for the group “decks”).
object
Group path (0–2 segments); empty for a flat site.
Optional preview image URL used by the portal instead of a live iframe.
Total on-disk size in bytes of the current revision’s files.
True when the server has a cached favicon for the site, detected
from the published index.html at publish time. Fetch the bytes from
GET /api/sites/{path}/favicon.
Set when the site is soft-deleted; absent for live sites.
object
Group path (0–2 segments); empty for a flat site.
Optional preview image URL used by the portal instead of a live iframe.
Total on-disk size in bytes of the current revision’s files.
True when the server has a cached favicon for the site, detected
from the published index.html at publish time. Fetch the bytes from
GET /api/sites/{path}/favicon.
Set when the site is soft-deleted; absent for live sites.
Examplegenerated
{ "sites": [ { "id": 1, "group": "example", "slug": "example", "title": "example", "description": "example", "date": "example", "tags": [ "example" ], "repo": "example", "preview": "example", "hidden": true, "size": 1, "has_favicon": true, "created_at": "2026-04-15T12:00:00Z", "updated_at": "2026-04-15T12:00:00Z", "deleted_at": "2026-04-15T12:00:00Z" } ], "tree": { "name": "example", "path": "example", "site": { "id": 1, "group": "example", "slug": "example", "title": "example", "description": "example", "date": "example", "tags": [ "example" ], "repo": "example", "preview": "example", "hidden": true, "size": 1, "has_favicon": true, "created_at": "2026-04-15T12:00:00Z", "updated_at": "2026-04-15T12:00:00Z", "deleted_at": "2026-04-15T12:00:00Z" }, "groups": [], "sites": [ { "id": 1, "group": "example", "slug": "example", "title": "example", "description": "example", "date": "example", "tags": [ "example" ], "repo": "example", "preview": "example", "hidden": true, "size": 1, "has_favicon": true, "created_at": "2026-04-15T12:00:00Z", "updated_at": "2026-04-15T12:00:00Z", "deleted_at": "2026-04-15T12:00:00Z" } ] }, "count": 1}Missing or invalid credentials.
object
Examplegenerated
{ "error": "example"}