Learn how to create and update portfolio solutions boards using the platform API
The monday.com portfolio solution provides a structure for managing projects at both high and granular levels. A solution is made up of two board types:
- Portfolio board: Connects multiple project boards to give a consolidated, interactive overview of all projects.
- Project board: Used for managing individual project details. Updates sync automatically to the portfolio board.
🚧 Portfolio solutions are only available on Enterprise plans.
Building with AI agents?
See the Portfolio Agent Skills guide for multi-step workflows and implementation patterns.
Mutations
- 🚧 Only available for Enterprise plans
- Required scope:
boards:write
Create portfolio board
Creates a new portfolio board. Returns CreatePortfolioResult.
mutation {
create_portfolio(
boardName: "New Portfolio Board"
boardPrivacy: "private"
destinationWorkspaceId: 12345
callback_url: "https://your-domain.com/webhook/portfolio-created"
) {
success
message
process_id
}
}Arguments
| Argument | Type | Description | Accepted Values |
|---|---|---|---|
| boardName | String! | The new portfolio board's name. | |
| boardPrivacy | String! | The new portfolio board's privacy settings. | "private""share" |
| callback_url | String | An HTTPS URL to receive the new portfolio_id asynchronously. When provided, the mutation returns immediately with a process_id; the callback receives { is_success, process_id, portfolio_id } once the portfolio board is created. Available from version 2026-07 and later. | |
| destinationWorkspaceId | Int | The unique identifier of the workspace to create the portfolio board in. |
Create project board
Only available in versions
2026-04and later
Creates a new project board. Returns CreateProjectResult.
mutation {
create_project(
input: {
name: "Q1 2026 Marketing Campaign"
board_kind: public
workspace_id: "123456"
folder_id: "9876543210"
companions: ["resource_planner"]
callback_url: "https://your-domain.com/webhook/project-created"
}
) {
success
message
process_id
error
}
}Arguments
| Argument | Type | Description |
|---|---|---|
| input | CreateProjectInput! | An object containing the new project board's properties. |
Convert board to project
Converts an existing board into a project board. Returns ConvertBoardToProjectResult.
mutation {
convert_board_to_project(
input: {
board_id: 1234567890
column_mappings: {
project_status: "status_column_id"
project_owner: "person_column_id"
project_timeline: "date_column_id"
}
callback_url: "https://your-callback-url.com"
}
) {
success
message
process_id
projectId
}
}Arguments
| Argument | Type | Description |
|---|---|---|
| input | ConvertBoardToProjectInput! | The unique identifier of the portfolio board to connect. |
Connect project to portfolio
Connects an existing project board to a portfolio board by creating a linked item in the portfolio. Returns ConnectProjectResult.
This mutation has an additional rate limit of 40 mutations per minute.
mutation {
connect_project_to_portfolio(
projectBoardId: 1234567890
portfolioBoardId: 9876543210
) {
portfolio_item_id
process_id
message
success
}
}Arguments
| Argument | Type | Description |
|---|---|---|
| portfolioBoardId | ID! | The unique identifier of the portfolio board to connect. |
| projectBoardId | ID! | The unique identifier of the project board to connect. |
| callback_url | String | An HTTPS URL to receive the operation result asynchronously. When provided, the mutation returns immediately with a process_id; the callback receives { is_success, process_id, portfolio_item_id } once the operation completes. Available from version 2026-07 and later. |
