Portfolio

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

ArgumentTypeDescriptionAccepted Values
boardNameString!The new portfolio board's name.
boardPrivacyString!The new portfolio board's privacy settings."private"
"share"
callback_urlStringAn 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.
destinationWorkspaceIdIntThe unique identifier of the workspace to create the portfolio board in.

Create project board

🚧

Only available in versions 2026-04 and 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

ArgumentTypeDescription
inputCreateProjectInput!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

ArgumentTypeDescription
inputConvertBoardToProjectInput!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

ArgumentTypeDescription
portfolioBoardIdID!The unique identifier of the portfolio board to connect.
projectBoardIdID!The unique identifier of the project board to connect.
callback_urlStringAn 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.