API Versioning (original) (raw)

Learn about different versions of the monday.com platform, when they are released, and how to access them

Versioning is an important approach to continuously evolve our API without disrupting existing functionality. It enables developers to make updates and improvements while maintaining a stable and predictable behavior.

We guarantee at least three different versions of the API at the same time and release a new version every quarter. Youcan read more about the latest versions in our release notes.

The current versions are:

2026-01

Release candidate

There are at least three types of API versions at any given time: release candidate, current, and maintenance. Two are stable, and the other is an unstable preview version.

This guarantees that any given version will be stable for at least six months. You can minimize your development effort by always passing a version header with your API calls.

Type Description
Release candidate (RC) Provides early access to the latest features and improvements Unstable and should not be used in production applications Previously known as the Preview version
Current Only bug fixes with no breaking changes Stable and can be used in production applications Used as the default version when no header is passed Anything built using this won't change for at least six months Previously known as the Stable version
Maintenance Only bug fixes with no breaking changes Stable and can be used in production applications (recommended to only use it when you are unable to migrate to the current version on time) Previously known as the Deprecated version

Our guides and API reference will always reflect the schema of the current version. All upcoming updates or schema changes will be announced in the

API changelog and release notes and denoted in the API reference when relevant (see the example below).

Each version moves through the following lifecycle:

New RCs are gradually released every three months at the start of each quarter at 12:00 AM UTC.

Version names are not semantic but instead refer to the year and month in which they become the default/current version. For example, the July/Q3 2024 current version would be called 2024-07.

Version name RC Current (default) Maintenance Deprecated
2024-10 July 1st, 2024 October 1st, 2024 January 15th, 2025 February 15th, 2026
2025-01 October 1st, 2024 January 15th, 2025 April 1st, 2025 February 15th, 2026
2025-04 January 15th, 2025 April 1st, 2025 July 1st, 2025 Not yet announced*
2025-07 April 1st, 2025 July 1st, 2025 October 1st, 2025 Not yet announced*
2025-10 July 1st, 2025 October 1st, 2025 January 15th, 2026 Not yet announced*
2026-01 October 1st, 2025 January 15th, 2026 April 1st, 2026 Not yet announced*

*Each version deprecation will be announced at least six months in advance!

You can access different versions of the API using a header in an HTTP request, through the SDK, or in the API playground.

👍

We strongly encourage production applications to pass a version name in each API call. If you don't, your app will always get the Current version. Passing a version name makes your app less susceptible to breaking changes and gives you more time to migrate to a new version.

You can select which API version you want to use by sending the version name in the API-Version header.

fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE',
    'API-Version' : '2025-07'
   },
   body: JSON.stringify({
     'query' : 'query{version {kind value} }'
   })
  });
curl --location --request POST 'https://api.monday.com/v2' \
--header 'API-Version: 2024-01' \
--header 'Authorization: YOUR_API_KEY_HERE' \
--header 'Content-Type: application/json' \
--data-raw '{"query":"query { version { kind value } }"}'

All API responses include the API-Version header to indicate the version used during the call, or you can query the version object to return the same data. If you'd like to see all available API versions, you can query the versions object.

We support two ways to set the API version when using the GraphQL JS SDK: setting the default version or passing the version for a specific call.

import { ApiClient } from "@mondaydotcomorg/api";

const monday = new ApiClient({
  token: process.env.MONDAY_API_TOKEN,  // required
  version: "2024-01"                    // sets default API version
});
const query = `query { me { id } }`;

const data = await monday.request(query, {
  version: "2024-01"
});

You can also use the API playground to access and test different versions of the API by clicking the clock going in reverse icon in the middle of the screen.

This will open the version selector where you can test queries and mutations with any of the versions listed.

Versioning is a powerful way to improve the API, but understanding which version to request and when can be confusing. We've compiled these hypothetical scenarios to help you better understand the flow!

  1. We announce the release of a new API called new_API in version 2024-01. You can access new_API as soon as 2024-01 is released as the RC by passing 2024-01 in the API-Version header. If you don't include the API-Version header, it will automatically call the Current version and you will get an error stating that the field does not exist.
  2. We announce the deprecation of the example field in version 2023-07. You can access the example field until January 15th, 2024 when 2023-07 is deprecated. Once you start passing 2024-04 in your request, you will no longer have access to the example field.

API versioning differs across the board, so frequently used terms may mean something slightly different in each case. This section walks through some of the most important concepts and terms we use, and more importantly, covers exactly what they mean!

Term Description
Stable Indicates that a version can reliably be used in production. Addresses only non-breaking bug fixes, regressions, and critical bugs that require breaking changes.
Default The version that will be called when no header or the default header is passed in an API call.
Unstable Indicates that a version cannot reliably be used in production. Addresses both breaking and non-breaking changes.
Deprecated Indicates that a version is no longer supported. Any calls made to a deprecated version will use the Maintenance version.
Version name The version's unique identifier (e.g., 2023-10). We recommend passing the version name in your calls.
Version type The type of version:release-candidate, current, or maintenance.

Have questions about versioning? Have no fear! Keep reading to learn more about common issues below and how to resolve them.

{
  "errors": [
    {
      "message": "Field 'new_field' doesn't exist on type 'Boards'",
      "locations": [
        {
          "line": 4,
          "column": 5
        }
      ],
      "path": [
        "query",
        "boards",
        "new_field"
      ],
      "extensions": {
        "code": "undefinedField",
        "typeName": "Boards",
        "fieldName": "new_field"
      }
    }
  ],
  "account_id": 1
}

Updated 1 day ago