Sites

Update a site's settings

Changes the settings you send and leaves the rest alone. title is the display name. keyConvention is flat or directory (how content keys map to URLs). editingMode is live (every editor save goes public) or staged (saves stay drafts until you publish); API writes always stage. signature sets the "Made with Dotsy" badge and takes effect on the live site at once. trailingSlash (ignore, the default, never or always) sets the page URL form: with never or always the other form 301s to it, and the canonical tag and sitemap use it; it takes effect on the live site at once. ownSeoFiles (off by default) lets the next publish use the site's own robots.txt when it blocks the whole site (Disallow: /) and its own static sitemap.xml, which replaces the generated one; a robots.txt without Disallow: / is used either way. integrations resolves pending clone integrations. aiAccess sets what AI agents and API keys may do on the site (viewer, contributor, editor or owner, the default). Only the site owner signed in to the dashboard can change it: an API key or MCP token answers 403 ai_access_limited.

A guest token can change the title but not editingMode (it answers 403 guest_requires_account).

patch/api/v1/sites/{slug}

Request

  • Base URL: https://api.dotsy.ai
  • URL: https://api.dotsy.ai/api/v1/sites/{slug}
  • Auth: one of:
    • HTTP bearer
    • HTTP bearer

Path parameters

slugstring required
Example:acme-studio

Site slug or site id (UUID). An old slug answers 301/308 and a site id 307 to the canonical slug path.

Request body

titlestring
keyConvention'flat' | 'directory'
editingMode'live' | 'staged'

How the editor's Save behaves. 'live' (default) publishes each save immediately; 'staged' keeps saves as drafts until publish_site. Prefer 'staged' when an agent will hand the editor to a person (see start_edit_session → draftEditorUrl) so keystrokes don't go straight to the public site. API writes always stage regardless of this setting.

trailingSlash'ignore' | 'never' | 'always'

Page URL form. 'ignore' (default): /blog and /blog/ both serve the page. 'never': /blog/ 301s to /blog. 'always': /blog 301s to /blog/. The canonical tag and sitemap use the same form. Live immediately, no publish needed.

ownSeoFilesboolean

Use the site's own robots.txt and sitemap.xml even when they can hurt search: a robots.txt that blocks the whole site (Disallow: /), and a static sitemap.xml, which replaces the generated one (collection pages included). Off by default; a robots.txt without Disallow: / is always used. Takes effect at the next publish.

aiAccess'viewer' | 'contributor' | 'editor' | 'owner'

What AI agents and API keys may do on this site: viewer (read only), contributor (save drafts; a person publishes), editor (drafts and publish) or owner (full access, the default). Only an owner signed in to the dashboard can change it.

Example request

{
  "title": "Acme Studio",
  "editingMode": "staged"
}

Response

Updated.

okboolean required
titlestring nullable required
editingMode'live' | 'staged' required
keyConvention'flat' | 'directory' required
updatedAtnumber required
trailingSlash'ignore' | 'never' | 'always'

The saved trailing-slash policy (present when the request changed it).

ownSeoFilesboolean

The saved ownSeoFiles switch (present when the request changed it). Takes effect at the next publish.

aiAccess'viewer' | 'contributor' | 'editor' | 'owner'

The saved AI access level (present when the request changed it).

Changes

No recorded changes to this operation across all 1 revision of this API.