Skip to content

Commit 58024f4

Browse files
authored
Merge pull request #258 from makeplane/doc-add-project-page-docs
docs: add list project pages API reference
2 parents 731ec20 + a6bb7f5 commit 58024f4

File tree

2 files changed

+172
-0
lines changed

2 files changed

+172
-0
lines changed

docs/.vitepress/config.mts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,7 @@ export default withMermaid(
623623
{ text: "Overview", link: "/api-reference/page/overview" },
624624
{ text: "List Workspace Pages", link: "/api-reference/page/list-workspace-pages" },
625625
{ text: "Add Workspace Page", link: "/api-reference/page/add-workspace-page" },
626+
{ text: "List Project Pages", link: "/api-reference/page/list-project-pages" },
626627
{ text: "Add Project Page", link: "/api-reference/page/add-project-page" },
627628
{ text: "Get Workspace Page", link: "/api-reference/page/get-workspace-page" },
628629
{ text: "Get Project Page", link: "/api-reference/page/get-project-page" },
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
---
2+
title: List project pages
3+
description: List project pages via Plane API. HTTP request format, parameters, scopes, and example responses for listing project pages.
4+
keywords: plane, plane api, rest api, api integration, page, list project pages, project pages
5+
---
6+
7+
# List project pages
8+
9+
<div class="api-endpoint-badge">
10+
<span class="method get">GET</span>
11+
<span class="path">/api/v1/workspaces/{workspace_slug}/projects/{project_id}/pages/</span>
12+
</div>
13+
14+
<div class="api-two-column">
15+
<div class="api-left">
16+
17+
List all pages in a project with optional filtering and search.
18+
19+
<div class="params-section">
20+
21+
### Path Parameters
22+
23+
<div class="params-list">
24+
25+
<ApiParam name="workspace_slug" type="string" :required="true">
26+
27+
The 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`.
28+
29+
</ApiParam>
30+
31+
<ApiParam name="project_id" type="string" :required="true">
32+
33+
The unique identifier of the project.
34+
35+
</ApiParam>
36+
37+
</div>
38+
</div>
39+
40+
<div class="params-section">
41+
42+
### Query Parameters
43+
44+
<div class="params-list">
45+
46+
<ApiParam name="type" type="string" :required="false">
47+
48+
Filter pages by scope. Defaults to `all`.
49+
50+
- `all` — all pages the user has access to
51+
- `public` — pages with public access, excluding archived
52+
- `private` — pages owned by the user and not shared, excluding archived
53+
- `shared` — private pages explicitly shared with the user
54+
- `archived` — pages that have been archived
55+
56+
</ApiParam>
57+
58+
<ApiParam name="search" type="string" :required="false">
59+
60+
Case-insensitive search on page title.
61+
62+
</ApiParam>
63+
64+
<ApiParam name="per_page" type="integer" :required="false">
65+
66+
Number of results per page. Defaults to `20`, maximum `100`.
67+
68+
</ApiParam>
69+
70+
<ApiParam name="cursor" type="string" :required="false">
71+
72+
Pagination cursor for getting the next or previous set of results.
73+
74+
</ApiParam>
75+
76+
</div>
77+
</div>
78+
79+
<div class="params-section">
80+
81+
### Scopes
82+
83+
`projects.pages:read`
84+
85+
</div>
86+
87+
</div>
88+
89+
<div class="api-right">
90+
91+
<CodePanel title="List project pages" :languages="['cURL', 'Python', 'JavaScript']">
92+
<template #curl>
93+
94+
```bash
95+
curl -X GET \
96+
"https://api.plane.so/api/v1/workspaces/my-workspace/projects/project-id/pages/?type=public&search=welcome&per_page=20" \
97+
-H "X-API-Key: $PLANE_API_KEY" \
98+
# Or use -H "Authorization: Bearer $PLANE_OAUTH_TOKEN"
99+
```
100+
101+
</template>
102+
<template #python>
103+
104+
```python
105+
import requests
106+
107+
response = requests.get(
108+
"https://api.plane.so/api/v1/workspaces/my-workspace/projects/project-id/pages/",
109+
headers={"X-API-Key": "your-api-key"},
110+
params={"type": "public", "search": "welcome", "per_page": 20},
111+
)
112+
print(response.json())
113+
```
114+
115+
</template>
116+
<template #javascript>
117+
118+
```javascript
119+
const response = await fetch(
120+
"https://api.plane.so/api/v1/workspaces/my-workspace/projects/project-id/pages/?type=public&search=welcome&per_page=20",
121+
{
122+
method: "GET",
123+
headers: {
124+
"X-API-Key": "your-api-key",
125+
},
126+
}
127+
);
128+
const data = await response.json();
129+
```
130+
131+
</template>
132+
</CodePanel>
133+
134+
<ResponsePanel status="200">
135+
136+
```json
137+
{
138+
"grouped_by": null,
139+
"sub_grouped_by": null,
140+
"total_count": 4,
141+
"next_cursor": "20:1:0",
142+
"prev_cursor": "20:-1:1",
143+
"next_page_results": false,
144+
"prev_page_results": false,
145+
"count": 4,
146+
"total_pages": 1,
147+
"total_results": 4,
148+
"extra_stats": null,
149+
"results": [
150+
{
151+
"id": "b3478c56-31f6-4f7e-b445-8392a4b26621",
152+
"name": "welcome 3 b",
153+
"owned_by": "5b0af4aa-e310-408a-a480-868429af5701",
154+
"access": 0,
155+
"is_locked": false,
156+
"archived_at": null,
157+
"workspace": "8725ddfa-c181-49f6-9173-97b8d0b7d599",
158+
"created_at": "2026-04-01T15:41:19.062280Z",
159+
"updated_at": "2026-04-07T19:30:39.274060Z",
160+
"logo_props": {},
161+
"parent_id": "a2819c8b-f7ac-4cbd-b971-682726c4f8cc"
162+
}
163+
]
164+
}
165+
```
166+
167+
</ResponsePanel>
168+
169+
</div>
170+
171+
</div>

0 commit comments

Comments
 (0)