Skill: Update Project Status

Learn how to update a project's health, stage, priority, and timeline using the change_column_value mutation

A project's status fields live on the portfolio board as column values on the project's item. You can update them using the change_column_value mutation.

See Get Project Status / Health for how to identify the portfolio board and find the project item ID.

Update a status column

mutation {
  change_column_value(
    board_id: PORTFOLIO_BOARD_ID,
    item_id: PROJECT_ITEM_ID,
    column_id: "portfolio_project_rag",
    value: "{\"index\": 1}"
  ) {
    id
  }
}

Writable columns

Column IDTitleType
portfolio_project_ragProject Health (RAG)status
portfolio_project_stepStagestatus
portfolio_project_priorityPrioritystatus
portfolio_project_planned_timelinePlanned Timelinetimeline
portfolio_project_scopeProject Descriptiontext

Project Health (RAG) values

IndexLabel
0At risk
1On track
2Off track
👍

Discovering status label indexes

To find the available index values for other status columns, attempt a write with an invalid label — the API error response will list all valid options.

Updating a timeline

To set or update the Planned Timeline, pass from and to dates as a JSON string:

mutation {
  change_column_value(
    board_id: PORTFOLIO_BOARD_ID,
    item_id: PROJECT_ITEM_ID,
    column_id: "portfolio_project_planned_timeline",
    value: "{\"from\": \"2026-01-01\", \"to\": \"2026-03-31\"}"
  ) {
    id
  }
}

Important notes

  • mirror columns (Project Progress, Actual Timeline) are read-only — they aggregate data from the tasks board and cannot be set directly. This matches the behavior in the UI.
  • To update status across multiple projects, send one change_column_value mutation per project item.