🏷️ API version: 2024-10 and later

We increased the maximum dimensions of workdoc tables. You can now create tables up to 25 rows tall and 10 columns wide.

Example query:

mutation {
  create_doc_block (
    type: table, 
    doc_id: 500152767, 
    content: "{\"column_count\": 10, \"row_count\": 25}"
  ) {
    id
  }
}

We delivered this feature because we got multiple requests for it from our developer community. If you have a feature request, submit it to us through the developer's category.

🏷️ API version: 2025-04

The value field for connect boards, dependency, and subtask columns will now return null instead of including linked item IDs and their last updated timestamp. This change improves overall column values performance.

You can retrieve this information by querying the relevant fields directly (read more below).

Examples

The following examples show the same query's behavior before and after this change.

Previous behavior (2025-01 and earlier)

Query

query {  
  boards(ids: 1234567890) {  
    items_page {  
      items {  
        column_values(ids: ["connect_boards"]) {  
          value  
          id  
        }  
      }  
    }  
  }  
}

Response

...
					{
              "column_values": [
                {
                  "value": "{\"changed_at\":\"2025-03-18T18:27:14.832Z\",\"linkedPulseIds\":[{\"linkedPulseId\":9876543210}]}",
                  "id": "connect_boards"
                }
              ]
            },
...

New behavior (2025-04 onward)

Query

query {  
  boards(ids: 1234567890) {  
    items_page {  
      items {  
        column_values(ids: ["connect_boards"]) {  
          value  
          id  
        }  
      }  
    }  
  }  
}

Response

...
            },
            {
              "column_values": [
                {
                  "value": null,
                  "id": "connect_boards"
                }
              ]
            },
...

How to retrieve linked item IDs and their timestamps

To retrieve the missing data, query the linked_items and linked_item_ids fields directly as shown below.

query {  
  boards(ids: 1234567890) {  
    items_page {  
      items {  
        column_values(ids: ["connect_boards"]) {  
          value  
          ... on BoardRelationValue {  
            linked_item_ids  
            linked_items {
              name
              updated_at
            }
          }  
          id  
        }  
      }  
    }  
  }  
}

Response

...
            {
              "column_values": [
                {
                  "value": null,
                  "linked_item_ids": [
                    "9876543210"
                  ],
                  "linked_items": [
                    {
                      "name": "Item 4",
                      "updated_at": "2023-08-29T15:38:11Z"
                    }
                  ],
                  "id": "connect_boards"
                }
              ]
            },
...
🏷️ API version: 2025-04

We've recently added two new fields to the users object, making it easier to query and manage custom fields in the user profile:

  1. custom_field_metas: Retrieves metadata about the custom field, including its type, description, and whether or not it is editable
  2. custom_field_values: Fetches the values users input into the custom field

The example below retrieves the custom fields' type, description, id, and editability using the custom_field_metas field. It also retrieves the fields' meta ID and value using the custom_field_values field.

query {
  users (ids: 1234567) {
    custom_field_metas { 
      field_type
      description
      id 
      editable
    }
    custom_field_values {
      custom_field_meta_id
      value
    }
  }
}
🏷️ API version: 2025-04

You can now query the max_units field on app_subscription queries.

  • For seat-based apps, this will return the maximum number of seats allowed.
  • For feature-based apps, this will return null.
query {
  app_subscription {
    billing_period
    days_left
    is_trial
    plan_id
    renewal_date
    max_units
  }
}

If you reach the IP limit, you will receive the following updated error message. Wait for the duration specified in the retry_in_seconds fields before retrying your request.

{
  "errors": [
    {
      "message": "IP rate limit exceeded",
      "extensions": {
        "code": "IP_RATE_LIMIT_EXCEEDED",
        "retry_in_seconds": 30
      }
    }
  ]
}
API version: 2024-10 and later

To help increase performance and provide consistent results for the subitems query, we have changed the way we return results and fetch subitems via the existing query. The following fixes have been introduced:

  • Empty result for subitems on a deleted board: When querying the subitems of a deleted board, the API will now return an empty result.
  • Subitems field limit: A new field-level limit has been introduced when querying the subitems field. If this limit is exceeded, the following errors will be returned, depending on the API version you're using:
{
  "data": {
    "items": [
      {
        "subitems": null
      }
    ]
  },
  "errors": [
    {
      "message": "Concurrency limit exceeded for the field",
      "locations": [
        {
          "line": 1,
          "column": 25
        }
      ],
      "path": [
        "items",
        0,
        "subitems"
      ],
      "extensions": {
        "code": "FIELD_LIMIT_EXCEEDED",
        "status_code": 429,
        "retry_in_seconds": 15,
        "error_data": {
          "entity": "subitems"
        }
      }
    }
  ]
}
{
  "errors": [
    {
      "message": "Concurrency limit exceeded for the field",
      "locations": [
        {
          "line": 1,
          "column": 25
        }
      ],
      "path": [
        "items",
        0,
        "subitems"
      ],
      "extensions": {
        "code": "FIELD_LIMIT_EXCEEDED",
        "status_code": 429,
        "retry_in_seconds": 15,
        "error_data": {
          "entity": "subitems"
        }
      }
    }
  ],
  "status_code": 429,
  "error_data": {
    "entity": "subitems"
  },
  "error_code": "FIELD_LIMIT_EXCEEDED",
  "error_message": "Concurrency limit exceeded for the field",
  "account_id": 12345
}

Through the new API analytics dashboard, you can monitor your account's daily API usage and trends. It provides insights into your overall API consumption, allowing you to track:

  • Daily usage
  • Daily usage trends
  • Top individual contributors
  • Top app contributors

The dashboard is currently only available for Enterprise accounts. It is accessible from two locations:

For tips on optimizing your API usage, check out our guide!

API version: 2025-04

You can now update one or multiple users' attributes through the update_multiple_users mutation.

mutation {
  update_multiple_users (
    user_updates: [
      { 
        user_id: 12345678, 
        user_attribute_updates: {birthday: "1985-06-01", email: "[email protected]"}
      },
      { 
        user_id: 87654321, 
        user_attribute_updates: {birthday: "1975-01-20", email: "[email protected]"}
      }
    ]
  ) {
    updated_users {
      name
      birthday
      email
      id
    }
    errors {
      message
      code
      user_id
    }
  }
}
API version: 2025-04

Variables can now only be sent as a JSON object instead of a JSON string. Queries using JSON string variables will fail. This update impacts all users and queries where the variables were previously sent as a string.

Check out the example below of the same query before and after this change:

{
  "query": "query GetBoardItems($boardId: [ID!]) { boards(ids: $boardId) { items_page(limit: 1) { cursor items { id subitems { id name column_values { column { title } text ... on MirrorValue { display_value } ... on BoardRelationValue { linked_item_ids linked_items { name } } } } } } } }",
  "variables": {
    "boardId": 7670657643
  }
}
{
  "query": "query GetBoardItems($boardId: [ID!]) { boards(ids: $boardId) { items_page(limit: 1) { cursor items { id subitems { id name column_values { column { title } text ... on MirrorValue { display_value } ... on BoardRelationValue { linked_item_ids linked_items { name } } } } } } } }",
  "variables": "{\"boardId\":7670657643}"
}