API Changelog

You can track any changes in the API by subscribing to the changelog RSS feed using your application of choice (Slack, Outlook, Chrome extension, etc.).
Looking for updates to the apps framework instead? Check out our apps framework changelog.

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: "user12345678@monday.com"} }, { user_id: 87654321, user_attribute_updates: {birthday: "1975-01-20", email: "user87654321@monday.com"} } ] ) { 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 } } }