Create a wiki page
POST/api/v1/workspaces/{workspace_slug}/pages/
Create a workspace page. To create a child page, pass parent_id; Plane creates the page and inserts a page embed into the parent document. The parent must be visible, editable, unlocked, and active.
Path Parameters
workspace_slug:requiredstringThe workspace_slug represents the unique workspace identifier for a workspace in Plane. It can be found in the URL. For example, in the URL https://app.plane.so/my-team/projects/, the workspace slug is my-team.
Body Parameters
name:requiredstringName.
access:optionalinteger0- Public1- Private
color:optionalstringColor.
is_locked:optionalbooleanIs locked.
archived_at:optionalstringArchived at.
view_props:optionalobjectView props.
logo_props:optionalobjectLogo props.
external_id:optionalstringExternal id.
external_source:optionalstringExternal source.
description_html:requiredstringHTML content for the page body. Plane sanitizes the HTML before storing it.
parent_id:optionalstringUUID of the parent workspace page. Do not combine parent_id with collection_id.
Scopes
write or wiki.pages:write
Create a wiki page
bash
curl -X POST \
"https://api.plane.so/api/v1/workspaces/my-workspace/pages/" \
-H "X-API-Key: $PLANE_API_KEY" \
# Or use -H "Authorization: Bearer $PLANE_OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Example Name",
"access": 0,
"color": "Example Name",
"is_locked": true,
"archived_at": "2024-01-01",
"view_props": "example-value",
"logo_props": "example-value",
"external_id": "550e8400-e29b-41d4-a716-446655440000",
"external_source": "github",
"parent_id": "4d2f6f7e-9b4a-4d6a-8f4a-1c3f7c0f4a10",
"description_html": "<p>Example content</p>"
}'python
import requests
response = requests.post(
"https://api.plane.so/api/v1/workspaces/my-workspace/pages/",
headers={"X-API-Key": "your-api-key"},
json={
"name": "Example Name",
"access": 0,
"color": "Example Name",
"is_locked": true,
"archived_at": "2024-01-01",
"view_props": "example-value",
"logo_props": "example-value",
"external_id": "550e8400-e29b-41d4-a716-446655440000",
"external_source": "github",
"parent_id": "4d2f6f7e-9b4a-4d6a-8f4a-1c3f7c0f4a10",
"description_html": "<p>Example content</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/pages/", {
method: "POST",
headers: {
"X-API-Key": process.env.PLANE_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Example Name",
access: 0,
color: "Example Name",
is_locked: true,
archived_at: "2024-01-01",
view_props: "example-value",
logo_props: "example-value",
external_id: "550e8400-e29b-41d4-a716-446655440000",
external_source: "github",
parent_id: "4d2f6f7e-9b4a-4d6a-8f4a-1c3f7c0f4a10",
description_html: "<p>Example content</p>",
}),
});
const data = await response.json();Response201
json
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Example Name",
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-01T00:00:00Z",
"description_html": "<p>Example content</p>",
"owned_by": "550e8400-e29b-41d4-a716-446655440000",
"access": 0,
"color": "Example Name",
"is_locked": true,
"archived_at": "2024-01-01",
"workspace": "550e8400-e29b-41d4-a716-446655440000",
"created_by": "550e8400-e29b-41d4-a716-446655440000",
"updated_by": "550e8400-e29b-41d4-a716-446655440000"
}Child-page responses
201 Created: the child was created and linked in the parent document.202 Accepted: the child was created, but Plane is still retrying the parent link. Store the returned page ID and check the parent later. The response already contains the requestedparent_id; only the parent document embed is pending.400 Bad Request: the parent is locked or archived, orparent_idconflicts withcollection_id.403 Forbidden: the caller cannot edit the parent.404 Not Found: the parent is unavailable in this workspace.502 Bad Gateway: the parent link was rejected and the new child was removed.503 Service Unavailable: the collaborative document service is not configured.

