Use the REST API to manage Project views
Note
Most endpoints use Authorization: Bearer <YOUR-TOKEN> and Accept: application/vnd.github+json headers, plus X-GitHub-Api-Version: 2026-03-10. Curl examples below omit these standard headers for brevity.
POST /orgs/{org}/projectsV2/{project_number}/views
Create a new view in an organization-owned project. Views allow you to customize how items in a project are displayed and filtered.
accept (string)application/vnd.github+json is recommended.org (string) (required)
The organization name. The name is not case sensitive.
project_number (integer) (required)
The project's number.
name (string) (required)
The name of the view.
layout (string) (required)
The layout of the view.
Can be one of: table, board, roadmap
filter (string)
The filter query for the view. See Filtering projects for more information.
visible_fields (array of integers)
visible_fields is not applicable to roadmap layout views.
For table and board layouts, this represents the field IDs that should be visible in the view. If not provided, the default visible fields will be used.
sort_by (array of arrays)
Sorting configuration for the view. Each element is a two-element array of [field_id, direction] where direction is "asc" or "desc". Supports multiple sort criteria applied in order.
group_by (array of integers)
The field IDs to group items by (horizontal grouping). Supports a single field. The field must support grouping; fields such as Title, Reviewers, Linked pull requests, Sub-issues progress, Tracked by, and Tracks cannot be grouped on.
vertical_group_by (array of integers)
The field IDs to use as columns in board layout (vertical grouping). Supports a single field. The field must support grouping; fields such as Title, Reviewers, Linked pull requests, Sub-issues progress, Tracked by, and Tracks cannot be grouped on.
201 - Response for creating a view in an organization-owned project.
304 - Not modified
401 - Requires authentication
403 - Forbidden
404 - Resource not found
422 - Validation failed, or the endpoint has been spammed.
503 - Service unavailable
Request:
curl -L \
-X POST \
https://api.github.com/orgs/ORG/projectsV2/PROJECT_NUMBER/views \
-d '{
"name": "All Issues",
"layout": "table",
"filter": "is:issue",
"visible_fields": [
123,
456,
789
]
}'
Response schema (Status: 201):
id: required, integernumber: required, integername: required, stringlayout: required, string, enum: table, board, roadmapnode_id: required, stringproject_url: required, stringhtml_url: required, string, format: uricreator: required, all of:
name: string or nullemail: string or nulllogin: required, stringid: required, integer, format: int64node_id: required, stringavatar_url: required, string, format: urigravatar_id: required, string or nullurl: required, string, format: urihtml_url: required, string, format: urifollowers_url: required, string, format: urifollowing_url: required, stringgists_url: required, stringstarred_url: required, stringsubscriptions_url: required, string, format: uriorganizations_url: required, string, format: urirepos_url: required, string, format: urievents_url: required, stringreceived_events_url: required, string, format: uritype: required, stringsite_admin: required, booleanstarred_at: stringuser_view_type: stringcreated_at: required, string, format: date-timeupdated_at: required, string, format: date-timefilter: string or nullvisible_fields: required, array of integersort_by: required, array of array, minItems: 2, maxItems: 2group_by: required, array of integervertical_group_by: required, array of integerRequest:
curl -L \
-X POST \
https://api.github.com/orgs/ORG/projectsV2/PROJECT_NUMBER/views \
-d '{
"name": "Sprint Board",
"layout": "board",
"filter": "is:issue is:open label:sprint",
"visible_fields": [
123,
456,
789
]
}'
Response schema (Status: 201):
id: required, integernumber: required, integername: required, stringlayout: required, string, enum: table, board, roadmapnode_id: required, stringproject_url: required, stringhtml_url: required, string, format: uricreator: required, all of:
name: string or nullemail: string or nulllogin: required, stringid: required, integer, format: int64node_id: required, stringavatar_url: required, string, format: urigravatar_id: required, string or nullurl: required, string, format: urihtml_url: required, string, format: urifollowers_url: required, string, format: urifollowing_url: required, stringgists_url: required, stringstarred_url: required, stringsubscriptions_url: required, string, format: uriorganizations_url: required, string, format: urirepos_url: required, string, format: urievents_url: required, stringreceived_events_url: required, string, format: uritype: required, stringsite_admin: required, booleanstarred_at: stringuser_view_type: stringcreated_at: required, string, format: date-timeupdated_at: required, string, format: date-timefilter: string or nullvisible_fields: required, array of integersort_by: required, array of array, minItems: 2, maxItems: 2group_by: required, array of integervertical_group_by: required, array of integerRequest:
curl -L \
-X POST \
https://api.github.com/orgs/ORG/projectsV2/PROJECT_NUMBER/views \
-d '{
"name": "Product Roadmap",
"layout": "roadmap"
}'
Response schema (Status: 201):
id: required, integernumber: required, integername: required, stringlayout: required, string, enum: table, board, roadmapnode_id: required, stringproject_url: required, stringhtml_url: required, string, format: uricreator: required, all of:
name: string or nullemail: string or nulllogin: required, stringid: required, integer, format: int64node_id: required, stringavatar_url: required, string, format: urigravatar_id: required, string or nullurl: required, string, format: urihtml_url: required, string, format: urifollowers_url: required, string, format: urifollowing_url: required, stringgists_url: required, stringstarred_url: required, stringsubscriptions_url: required, string, format: uriorganizations_url: required, string, format: urirepos_url: required, string, format: urievents_url: required, stringreceived_events_url: required, string, format: uritype: required, stringsite_admin: required, booleanstarred_at: stringuser_view_type: stringcreated_at: required, string, format: date-timeupdated_at: required, string, format: date-timefilter: string or nullvisible_fields: required, array of integersort_by: required, array of array, minItems: 2, maxItems: 2group_by: required, array of integervertical_group_by: required, array of integerPOST /users/{user_id}/projectsV2/{project_number}/views
Create a new view in a user-owned project. Views allow you to customize how items in a project are displayed and filtered.
accept (string)application/vnd.github+json is recommended.user_id (string) (required)
The unique identifier of the user.
project_number (integer) (required)
The project's number.
name (string) (required)
The name of the view.
layout (string) (required)
The layout of the view.
Can be one of: table, board, roadmap
filter (string)
The filter query for the view. See Filtering projects for more information.
visible_fields (array of integers)
visible_fields is not applicable to roadmap layout views.
For table and board layouts, this represents the field IDs that should be visible in the view. If not provided, the default visible fields will be used.
sort_by (array of arrays)
Sorting configuration for the view. Each element is a two-element array of [field_id, direction] where direction is "asc" or "desc". Supports multiple sort criteria applied in order.
group_by (array of integers)
The field IDs to group items by (horizontal grouping). Supports a single field. The field must support grouping; fields such as Title, Reviewers, Linked pull requests, Sub-issues progress, Tracked by, and Tracks cannot be grouped on.
vertical_group_by (array of integers)
The field IDs to use as columns in board layout (vertical grouping). Supports a single field. The field must support grouping; fields such as Title, Reviewers, Linked pull requests, Sub-issues progress, Tracked by, and Tracks cannot be grouped on.
201 - Response for creating a view in a user-owned project.
304 - Not modified
401 - Requires authentication
403 - Forbidden
404 - Resource not found
422 - Validation failed, or the endpoint has been spammed.
503 - Service unavailable
Request:
curl -L \
-X POST \
https://api.github.com/users/USER_ID/projectsV2/PROJECT_NUMBER/views \
-d '{
"name": "All Issues",
"layout": "table",
"filter": "is:issue",
"visible_fields": [
123,
456,
789
]
}'
Response schema (Status: 201):
Same response schema as Create a view for an organization-owned project.
Request:
curl -L \
-X POST \
https://api.github.com/users/USER_ID/projectsV2/PROJECT_NUMBER/views \
-d '{
"name": "Sprint Board",
"layout": "board",
"filter": "is:issue is:open label:sprint",
"visible_fields": [
123,
456,
789
]
}'
Response schema (Status: 201):
Same response schema as Create a view for an organization-owned project.
Request:
curl -L \
-X POST \
https://api.github.com/users/USER_ID/projectsV2/PROJECT_NUMBER/views \
-d '{
"name": "Product Roadmap",
"layout": "roadmap"
}'
Response schema (Status: 201):
Same response schema as Create a view for an organization-owned project.