🏷️ API version: 2025-07

We've added two new fields for boards queries:

  1. access_level: Returns an enum value that specifies the user's board permission level.
  2. object_type_unique_identifier: Returns a unique identifier for the board's object type.
query {
  boards (ids: 1234567890) {
    access_level
    object_type_unique_identifier
    items_page {
      items {
        id
        name
      }
    }
  }
}
🏷️ API version: 2025-07

We've updated the error code for unauthorized user actions from UserUnauthorizedException to USER_UNAUTHORIZED. This change helps maintain consistency with other standardized error codes in our API.

Here’s a comparison of the updated and previous responses:

{
  "data": {
    "me": null
  },
  "errors": [
    {
      "message": "User unauthorized to perform action",
      "locations": [
        {
          "line": 1,
          "column": 2
        }
      ],
      "path": [
        "me"
      ],
      "extensions": {
        "code": "USER_UNAUTHORIZED",
        "status_code": 403,
        "error_data": {}
      }
    }
  ]
}
{
  "data": {
    "me": null
  },
  "errors": [
    {
      "message": "User unauthorized to perform action",
      "locations": [
        {
          "line": 1,
          "column": 2
        }
      ],
      "path": [
        "me"
      ],
      "extensions": {
        "code": "UserUnauthorizedException",
        "status_code": 403,
        "error_data": {}
      }
    }
  ]
}
🏷️ API version: 2025-07

When querying updates at the root, you can now filter the results by a specific date range using the new from_date and to_date arguments. These arguments must be used together—using only one will return an error.

👉 Read more about updates here!

query {
  updates (limit: 50, to_date: "2025-06-04", from_date: "2025-01-01") {
    body
      id
      created_at
      creator {
        name
        id
    }
  }
}
🏷️ API version: 2025-07

You can now mention users, teams, boards, and projects when creating updates using the new mentions_list argument in the create_update mutation.

👉 Read more here!

mutation {
  create_update (item_id: 9876543210, body: "This update will mention user 1234567890 on an item", mentions_list: [{id: 1234567890, type: User}]) {
    id
  }
}
🏷️ API version: 2025-07

We've simplified the complexity budget exhausted error response to better align with other rate and limit errors. The response no longer includes budget-related fields such as complexity, complexity_budget_left, or status_code.

If you still need access to this data, you can retrieve it using the complexity endpoint.

Here’s a comparison of the old and new responses:

{
  "errors": [
    {
      "message": "Complexity budget exhausted",
      "extensions": {
        "code": "COMPLEXITY_BUDGET_EXHAUSTED",
        "retry_in_seconds": 60
      }
    }
  ]
}
{
  "errors": [
    {
      "message": "Complexity budget exhausted",
      "extensions": {
        "code": "COMPLEXITY_BUDGET_EXHAUSTED",
        "retry_in_seconds": 7,
        "complexity": 11,
        "complexity_budget_left": 4999967,
        "complexity_budget_limit": 5000000,
        "status_code": 429
      }
    }
  ]
}

This Sunday, the API will briefly be read-only for scheduled maintenance. Only accounts in the AU region will be affected. We estimate the maintenance will take less than 5 minutes.

During this time, queries will operate normally, but mutations will return an error. If you receive an error, please retry your API calls after a few minutes.

The maintenance will be at 12 am AEST or 2 pm UTC.

You can subscribe to updates on our status page: Maintenance on May 25th

🏷️ API version: 2025-07

Enterprise customers can now programmatically create, read, update, and delete managed status and dropdown columns via the API. Learn more here!

query {
  managed_column (state: active) {
    created_by
    revision
    settings {
      ...on StatusColumnSettings { 
        type
        labels {
          id
          description
        }
      }
    }
  }
}
🏷️ API versions: 2024-10 and later

All API responses now contain a unique request ID to help measure performance, track the full request lifecycle across services, and simplify troubleshooting. When debugging issues with our support team, you can share this ID to quickly locate the problem without needing to search through your logs.

{
  "data": {
    "timeline_item": null
  },
  "errors": [
    {
      "message": "User is not allowed to read timelineItem.",
      "locations": [
        {
          "line": 1,
          "column": 2
        }
      ],
      "path": [
        "timeline_item"
      ],
      "extensions": {
        "code": "UNAUTHORIZED"
      }
    }
  ],
  "extensions": {
    "request_id": "152b0dgb-d38c-067c-9f79-dd0c0d7238ed"
  }
}
🏷️ API version: 2025-07

You can now retrieve an item's description using the new description field on items queries. This field returns the item's ID and content blocks where the description is stored. Check out the example below:

query {
  items(ids: [1234567890]) {
    name
    description {
      id
      blocks {
        id
        content
      }
    }
  }
}
🏷️ API version: 2025-07

You can now query assets attached to an update’s replies using the new assets field. Learn more about the available fields on the Reply object here.

query {
  items (ids: 1234567890) {
    updates {
      replies {
        assets {
          id
        }
      }
    }
  }
}