Skip to content

Project pages overview ​

Project pages are the documents that live inside a project.

The project page object ​

Attributes ​

  • access integer

    Who can see this.

  • archived_at string (date-time)

    When the record was archived, or null if it is active.

  • collection_id string

    Always null on project page reads. Collections hold workspace (wiki) pages.

  • color string

    Hex color used wherever this is rendered, for example #3f76ff.

  • created_at string (date-time)

    When the project page was created.

  • updated_at string (date-time)

    When the project page was last updated.

  • created_by_id string (uuid)

    The user who created the project page.

  • updated_by_id string (uuid) or null

    The user who last updated the project page. null until someone updates it.

  • description_html string

    Rich-text body as HTML. This is the field the Plane editor round-trips.

  • description_stripped string

    The description stripped.

  • external_id string

    Your system's identifier for this record, for sync and import correlation.

  • external_source string

    The system external_id came from, for example github or jira.

  • id string (uuid)

    Unique identifier.

  • is_global boolean

    Whether this lives at the workspace level rather than inside a project.

  • is_locked boolean

    Prevents further edits to the content. A locked page can still be archived and unarchived.

  • logo_props string

    Editor-owned logo descriptor. Pass back what you read rather than composing it by hand.

  • name string

    Display name.

  • owned_by_id string (uuid)

    The related owned by.

  • parent_id string (uuid)

    The related parent.

  • project_ids array of string (uuid)

    Every project the page belongs to. A page can be shared into more than one project, so the list can hold more than the project in the path. Deleted projects, and projects the page was removed from, don't appear. List rows omit this field by default. Request it with ?fields=.

  • sort_order number

    Manual ordering weight. Lower sorts first.

  • view_props string

    Editor-owned layout descriptor. Pass back what you read.

Response200
json
{
  "access": 0,
  "archived_at": null,
  "collection_id": null,
  "color": "#3f76ff",
  "created_at": "2026-01-14T09:22:41.478363Z",
  "created_by_id": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
  "description_html": "<p>Details go here.</p>",
  "description_stripped": "example",
  "external_id": null,
  "external_source": null,
  "id": "b7e42a19-3c5d-4f80-9a26-8d1c0f4e7b53",
  "is_global": false,
  "is_locked": false,
  "logo_props": null,
  "name": "Example name",
  "owned_by_id": "f960d3c2-8524-4a41-b8eb-055ce4be2a7f",
  "parent_id": "f960d3c2-8524-4a41-b8eb-055ce4be2a7f",
  "project_ids": ["4af68566-94a4-4eb3-94aa-50dc9427067b"],
  "sort_order": 65535,
  "view_props": null
}

Endpoints ​

MethodPathDescription
GET/api/v2/workspaces/{slug}/projects/{project_id}/pages/List project pages
GET/api/v2/workspaces/{slug}/projects/{project_id}/pages/{pk}/Get a project page
POST/api/v2/workspaces/{slug}/projects/{project_id}/pages/Create a project page
PATCH/api/v2/workspaces/{slug}/projects/{project_id}/pages/{pk}/Update a project page
DELETE/api/v2/workspaces/{slug}/projects/{project_id}/pages/{pk}/Delete a project page
POST/api/v2/workspaces/{slug}/projects/{project_id}/pages/{pk}/archive/Archive a project page
POST/api/v2/workspaces/{slug}/projects/{project_id}/pages/{pk}/unarchive/Unarchive a project page

Archiving and deleting ​

You must archive a page before you can delete it. Archive a project page archives the page and its nested pages, and unpublishes the page if it was published. Unarchive a project page restores them. An archived page stays readable, with archived_at set.

Response shaping ​

Every project page read accepts ?fields= for sparse responses. See Sparse fields. Errors follow the shared problem+json contract.