Skip to content

List sites

GET
/api/sites
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.

q
string

Free-text search.

tag
string

Filter by tag.

group
string

Filter by group subtree.

sort
string
Allowed values: date title slug
hidden
boolean

Include hidden sites (admin only).

limit
integer
offset
integer

Matching sites.

Media typeapplication/json
object
sites
Array<object>
object
id
required
integer format: int64
group
required

Group path (0–2 segments); empty for a flat site.

string
slug
required
string
title
required
string
description
string
date
string
tags
Array<string>
repo
string
preview

Optional preview image URL used by the portal instead of a live iframe.

string
hidden
required
boolean
size
required

Total on-disk size in bytes of the current revision’s files.

integer format: int64
has_favicon

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.

boolean
created_at
required
string format: date-time
updated_at
required
string format: date-time
deleted_at

Set when the site is soft-deleted; absent for live sites.

string format: date-time
tree
object
name
required
string
path
required
string
site

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
id
required
integer format: int64
group
required

Group path (0–2 segments); empty for a flat site.

string
slug
required
string
title
required
string
description
string
date
string
tags
Array<string>
repo
string
preview

Optional preview image URL used by the portal instead of a live iframe.

string
hidden
required
boolean
size
required

Total on-disk size in bytes of the current revision’s files.

integer format: int64
has_favicon

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.

boolean
created_at
required
string format: date-time
updated_at
required
string format: date-time
deleted_at

Set when the site is soft-deleted; absent for live sites.

string format: date-time
groups
Array<object> recursive
sites
Array<object>
object
id
required
integer format: int64
group
required

Group path (0–2 segments); empty for a flat site.

string
slug
required
string
title
required
string
description
string
date
string
tags
Array<string>
repo
string
preview

Optional preview image URL used by the portal instead of a live iframe.

string
hidden
required
boolean
size
required

Total on-disk size in bytes of the current revision’s files.

integer format: int64
has_favicon

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.

boolean
created_at
required
string format: date-time
updated_at
required
string format: date-time
deleted_at

Set when the site is soft-deleted; absent for live sites.

string format: date-time
count
integer
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.

Media typeapplication/json
object
error
required
string
Examplegenerated
{
"error": "example"
}