Skip to content

Update site metadata (admin)

PATCH
/api/sites/{path}
curl --request PATCH \
--url https://example.com/api/sites/example \
--header 'Content-Type: application/json' \
--header 'Remote-User: <Remote-User>' \
--data '{ "title": "example", "description": "example", "date": "example", "tags": [ "example" ], "repo": "example", "preview": "example", "hidden": true }'
path
required
string

Full site path — group segments (0–2) plus the slug, e.g. claude/app or demo.

Media typeapplication/json

Metadata-only update. Omit a field to leave it unchanged.

object
title
string
description
string
date
string
tags
Array<string>
repo
string
preview
string
hidden
boolean
Examplegenerated
{
"title": "example",
"description": "example",
"date": "example",
"tags": [
"example"
],
"repo": "example",
"preview": "example",
"hidden": true
}

The updated site.

Media typeapplication/json
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
Examplegenerated
{
"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"
}

Missing or invalid credentials.

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

Authenticated, but not permitted for this target/capability.

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

No such site, key, or connection.

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