Skip to main content
POST
Publish the draft to the live site target

Body

application/json
session
string
siteId
string
siteOrigin
string
slugs
string[]

Publish only these pages and leave every other page as the live site already has it. Absent or empty means the whole draft. The non-destructive merge lives in publish-selection.ts; a selection is refused with 400 when no trustworthy published baseline can be loaded to merge against.

includeSiteConfig
boolean

Whether the site header/navigation configuration ships with this publish. Defaults to true.

Response

{ status, session, slugs, ... } — what the target reported, plus whatever that target can say about where the content went (commitSha, message, inspectUrl, deploymentId). ready means the write has already happened; triggered means a deployment is running and a later GET /publish/status is the only thing that learns how it ended. Read status rather than the HTTP code alone: a deploy-hook target whose hook rejected the call still answers 200, with status: "failed".