Update site metadata
PATCH
/ingest/sites/{path}
const url = 'https://example.com/ingest/sites/example';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"title":"example","description":"example","date":"example","tags":["example"],"repo":"example","preview":"example","hidden":true}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://example.com/ingest/sites/example \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "title": "example", "description": "example", "date": "example", "tags": [ "example" ], "repo": "example", "preview": "example", "hidden": true }'Requires the patch capability on the target group.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters”path
required
string
Full site path — group segments (0–2) plus the slug, e.g. claude/app or demo.
Request Bodyrequired
Section titled “Request Bodyrequired”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}Responses
Section titled “ Responses ”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"}