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}"
}
API version: 2024-10 and later

The create_webhook mutation now returns InvalidArgumentException errors when:

  • the board ID is not found
  • a subitem board ID is passed

Check out the sample error responses below:

{
  "data": {
    "create_webhook": null
  },
  "errors": [
    {
      "message": "Board not found",
      "locations": [
        {
          "line": 1,
          "column": 10
        }
      ],
      "path": [
        "create_webhook"
      ],
      "extensions": {
        "code": "InvalidArgumentException",
        "status_code": 200,
        "error_data": {
          "board_id": 1186075578
        }
      }
    }
  ]
}
{
  "data": {
    "create_webhook": null
  },
  "errors": [
    {
      "message": "Creating webhook on subitems board isn't allowed",
      "locations": [
        {
          "line": 1,
          "column": 10
        }
      ],
      "path": [
        "create_webhook"
      ],
      "extensions": {
        "code": "InvalidArgumentException",
        "status_code": 200,
        "error_data": {
          "board_id": 118607557
        }
      }
    }
  ]
}
API version: 2025-04

The new end_date field on the app subscription details object allows you to query the date an inactive subscription ended. It returns null for any subscriptions with an active status.

query {
  app_subscriptions (app_id: 1234567890) {
    cursor
    total_count 
    subscriptions {
      account_id
      monthly_price
      currency
      status
      end_date
    }
  }
}

To improve error consistency, we've released a bug fix that impacts the error response format for complexity budget exhausted errors. This fix applies to versions 2025-01 and later.

Now, errors are returned in the following format when the complexity budget is exhausted:

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

In API versions 2025-04 and later, you can create page break blocks using the create_doc_block mutation.

mutation {
  create_doc_block (type: page_break, doc_id: 1234567, after_block_id: "a3f6b7c9-ee2f-5b10-8921-cc47e7d745d3", content: "{\"alignment\":\"left\",\"direction\":\"ltr\"}") {
    id
  }
}