Update a project page
PUT/api/v1/workspaces/{workspace_slug}/projects/{project_id}/pages/{page_id}/
Send name, description_html, or both. description_html replaces the current content, and Plane sanitizes it before storing it. See Page content HTML for supported HTML and Plane editor components. Locked or archived pages return 400; document-service failures return 502, and an unconfigured service returns 503.
Path Parameters
workspace_slug:requiredstringThe workspace's unique slug.
project_id:requiredstringThe project UUID.
page_id:requiredstringThe page UUID.
Body Parameters
name:optionalstringThe new page title.
description_html:optionalstringHTML that Plane sanitizes and uses to replace the current page content.
At least one body parameter is required.
Scopes
write or projects.pages:write
Update a project page
bash
curl -X PUT "https://api.plane.so/api/v1/workspaces/my-workspace/projects/project-uuid/pages/page-uuid/" \
-H "X-API-Key: $PLANE_API_KEY" -H "Content-Type: application/json" \
-d '{"name":"Release notes","description_html":"<p>Current release notes</p>"}'python
import requests
response = requests.put("https://api.plane.so/api/v1/workspaces/my-workspace/projects/project-uuid/pages/page-uuid/", headers={"X-API-Key": "your-api-key"}, json={"name": "Release notes", "description_html": "<p>Current release notes</p>"})
print(response.json())javascript
// Run this example server-side. Browser apps must call your backend to keep the API key secret.
const response = await fetch(
"https://api.plane.so/api/v1/workspaces/my-workspace/projects/project-uuid/pages/page-uuid/",
{
method: "PUT",
headers: { "X-API-Key": process.env.PLANE_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({
name: "Release notes",
description_html: "<p>Current release notes</p>",
}),
},
);
const data = await response.json();Response200
json
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Release notes",
"description_html": "<p>Current release notes</p>"
}
