Add, replace, or delete files on an EXISTING hosted site, addressed by its IMMUTABLE pageId (never its public name). Accepts EITHER multipart/form-data (file parts to put, delete fields naming a path to remove — the SAME shape the public v1 project-files endpoint uses) OR application/json: { "changes": [...] }. Refused before the body is read if the page is moderated, plan-locked, expired, or its subject is suspended/not in good standing.Accepts a site of kind site OR kind html — a single HTML page is a project with a one-entry manifest, stored and served by exactly the same code as a multi-file site. Any other kind (a downloadable ZIP, a PDF, an image) has no individually addressable files and is refused with 400.An HTML page grows into a site. Committing a change that leaves a kind: html page holding MORE THAN ONE file promotes it to kind: site in the same transaction. The promotion is ONE-WAY and happens IN PLACE: the page id, public name, URL and entry path are all unchanged, so no link breaks and no redirect is involved. Replacing the single file of an HTML page is an edit, not an expansion, and leaves it kind: html. This response body does not report the promotion — read GET /sites/{pageId} afterwards to observe the new kind.Requires a declared Content-Length header — refused with 411 if absent, stricter than the rest of this API (see LengthRequired).
Request
Authorization
API Key
Add parameter in header
x-api-key
Example:
x-api-key: ********************
or
Bearer Token
Provide your bearer token in the
Authorization
header when making requests to protected resources.