Everything an AI agent can do with the monday.com API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints32
API version2026-04
Last updated23 June 2026
Orientation

How the monday.com API works.

The monday.com API is how an app or AI agent works with a monday account: reading boards and items, creating items, changing column values, posting updates, and managing groups and workspaces. Access is granted through a token and a set of permission scopes, each naming a resource and whether the call reads or writes, and an agent is limited to what those scopes and the user's own visibility allow. Versions are dated and selected per call, and monday can push board events to a registered webhook.

32Endpoints
8Capability groups
11Read
21Write
11Permissions
Authentication
monday.com authenticates calls with a token in the Authorization header. An app connects through OAuth 2.0, sending the user to auth.monday.com to approve scopes and exchanging the code for an access token that carries only those scopes; tokens do not expire until the app is uninstalled. An installed app can also use an app token with an explicit scope set, and a personal V2 token inherits one user's full UI permissions with no scope restriction.
Permissions
Access is governed by OAuth scopes, each naming a resource and read or write, such as boards:read, boards:write, updates:read, updates:write, users:read, webhooks:write, and workspaces:write. Most board, item, column, and group operations sit under boards:read or boards:write, while updates, users, teams, workspaces, and webhooks have their own scopes. A scope governs whether an operation is allowed, and a personal token is further bound to what the user can already see in the monday.com UI.
Versioning
The API is versioned by date through the API-Version header, on a quarterly cycle. The current default is 2026-04, which carries only bug fixes; a newer version sits on a release-candidate track (2026-07 and 2026-10 are in preview), and an older one moves to maintenance before deprecation, announced at least six months ahead. monday.com recommends pinning a version in every call rather than relying on the default.
Data model
monday.com is a single GraphQL endpoint at https://api.monday.com/v2, where a query reads and a mutation writes, instead of many REST paths. The model nests items inside groups inside boards inside workspaces, with column values holding each item's data. Application errors are returned in the body of an HTTP 200 response, so the errors array must be checked, not just the status code. monday.com can also push board events to a registered webhook URL.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to monday.com determines what it can reach. There is a route for making calls, a route for receiving events, and a first-party server that exposes monday.com tools to agents, and each is governed by the token behind it and the permissions that token carries.

Ways to connect

GraphQL API

The monday.com Platform API is a single GraphQL endpoint at https://api.monday.com/v2. An app sends a query to read or a mutation to write, and selects a dated version through the API-Version header. A call authenticates with a token in the Authorization header.

Best forConnecting an app or AI agent to monday.com.
Governed byThe token and the permissions it carries.
Docs ↗

MCP server (Model Context Protocol)

monday.com publishes a first-party MCP server that lets an agent call monday.com through the Model Context Protocol. The hosted remote server connects through OAuth 2.0 with monday.com as the identity provider, and does not store customer tokens, while a local server is run from the npm package @mondaydotcomorg/monday-api-mcp with an API token. It exposes over 50 tools across boards, items, columns, workspaces, users, and more. The source is at github.com/mondaycom/mcp.

Best forConnecting an AI agent to monday.com through MCP.
Governed byThe OAuth grant or the API token and the permissions it carries.
Docs ↗

Webhooks

Webhooks deliver the events that have been chosen on a board, like an item created or a column value changed, to a receiver URL. On creation, monday.com sends a challenge that the receiver must echo back to confirm the URL.

Best forReceiving monday.com events at an app or AI agent.
Governed byThe webhooks:write permission used to register the subscription.
Docs ↗
Authentication

OAuth 2.0

An app uses the OAuth 2.0 authorization-code flow, sending the user to auth.monday.com to approve a chosen set of scopes, then exchanging the code for an access token. The token carries only the scopes the user granted, so the app reaches only what those scopes allow. Tokens do not expire and stay valid until the user uninstalls the app.

TokenOAuth access token (bearer)
Best forApps connecting to accounts they do not own
Docs ↗

App token

An installed app receives a token that carries an explicit set of permission scopes, set when the app is configured, which restrict the queries and mutations it can call. It is the least-privilege choice, because the scopes bound to the token cap what it can reach.

TokenApp access token
Best forScoped, least-privilege app access
Docs ↗

Personal API token

A personal token is tied to one user and inherits all of that user's permissions in the monday.com UI, with no extra scope restriction. If the user cannot see a board in the UI, the token cannot reach it through the API either. It suits scripts and a single user's own automations.

TokenPersonal V2 API token
Best forScripts and a single user's automations
Docs ↗
Endpoint reference

Every monday.com API operation.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Boards

Read boards and their structure, and create, duplicate, archive, and delete boards.5

A query reaches only the boards the connected user can already see in the monday.com UI.

Acts onboard
Permission (capability)boards:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Creates a real board in the account.

Acts onboard
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Duplicating with content can be a large operation under the complexity budget.

Acts onboard
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Archiving is reversible from the monday.com UI.

Acts onboard
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Removes the board and the items it holds.

Acts onboard
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Items

Read items, create items on a board, and archive, delete, and move items between groups.6

Item reads, including column values, are governed by the boards:read scope.

Acts onitem
Permission (capability)boards:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

items_page is the paginated way to read a board's items in bulk.

Acts onitem
Permission (capability)boards:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

An item name longer than 255 characters returns ItemNameTooLongException.

Acts onitem
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventcreate_item
Rate limitStandard limits apply

Archiving is reversible from the monday.com UI.

Acts onitem
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventitem_archived
Rate limitStandard limits apply

Removes the item and its column values.

Acts onitem
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventitem_deleted
Rate limitStandard limits apply

Changes the item's group within its board.

Acts onitem
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Columns & values

Read a board's columns, create a column, and change the values stored against an item.5

Columns are read as part of the board they belong to.

Acts oncolumn
Permission (capability)boards:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Adds a new column to the board's structure.

Acts oncolumn
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

An incorrectly formatted value returns ColumnValueException.

Acts oncolumn value
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventchange_column_value
Rate limitStandard limits apply

The simple form covers the common column types without JSON formatting.

Acts oncolumn value
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventchange_column_value
Rate limitStandard limits apply

Batching values into one call reduces the number of mutations.

Acts oncolumn value
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventchange_column_value
Rate limitStandard limits apply

Groups

Read a board's groups, and create, duplicate, and delete groups.3

Groups are read as part of the board they belong to.

Acts ongroup
Permission (capability)boards:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Adds a new group to the board's structure.

Acts ongroup
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Deleting a board's only group returns DeleteLastGroupException.

Acts ongroup
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Updates

Read the updates posted on items, post a new update, like an update, and delete one.4

Reads only the updates the connected user can already see.

Acts onupdate
Permission (capability)updates:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Anything posted is visible to everyone who can see the item.

Acts onupdate
Permission (capability)updates:write
VersionAvailable since the API’s base version
Webhook eventcreate_update
Rate limitStandard limits apply

Records a like from the connected user.

Acts onupdate
Permission (capability)updates:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Removes the update and its replies.

Acts onupdate
Permission (capability)updates:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Users & teams

Read the authenticated user, read other users in the account, and read teams.3

Returns the identity behind the token, which is the lowest-level read.

Acts onuser
Permission (capability)me:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns people in the account, including their names and email addresses.

Acts onuser
Permission (capability)users:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Reads team structure, separate from the users:read scope for people.

Acts onteam
Permission (capability)teams:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Workspaces

Read workspaces, and create and delete a workspace.3

Reads only the workspaces the connected user can already see.

Acts onworkspace
Permission (capability)workspaces:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Adds a new top-level container to the account.

Acts onworkspace
Permission (capability)workspaces:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Removes the workspace and affects the boards inside it.

Acts onworkspace
Permission (capability)workspaces:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Webhooks

Read the webhooks registered on a board, create a webhook, and delete one.3

Lists the event subscriptions on a board.

Acts onwebhook
Permission (capability)webhooks:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

monday.com sends a challenge to the URL on creation, which must be echoed back.

Acts onwebhook
Permission (capability)webhooks:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Stops the event subscription it removes.

Acts onwebhook
Permission (capability)webhooks:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

monday.com can notify an app or AI agent when something happens on a board, like an item being created or a column value changing, instead of the app repeatedly asking. monday.com posts the event payload to a webhook URL that has been registered for the chosen events.

EventWhat it signalsTriggered by
create_itemFires when an item is created on a board the webhook is registered to.mutation create_item
change_column_valueFires when any column value on an item changes.mutation change_column_value
mutation change_simple_column_value
mutation change_multiple_column_values
change_status_column_valueFires when a status column value on an item changes, a narrower signal than the general column change.mutation change_column_value
mutation change_simple_column_value
mutation change_multiple_column_values
create_updateFires when an update is posted on an item.mutation create_update
item_archivedFires when an item is archived.mutation archive_item
item_deletedFires when an item is deleted.mutation delete_item
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

monday.com limits how much an app or AI agent can call, through a complexity budget that meters the size of each query and a daily cap on the number of calls, both varying by account plan.

Request rate

monday.com meters each call by complexity, a cost that reflects how much work the query asks for, rather than counting requests alone. Reads and writes draw on a combined per-minute complexity budget that follows a sliding 60-second window: a personal token has 10M points per minute (1M on trial or free accounts), and an app token has 5M points per minute. A query can add the complexity field to see its cost and the remaining budget before and after it runs. On top of that, each account has a daily call cap that varies by plan, from 1,000 calls on lower tiers up to 10,000 on Pro and 25,000 on Enterprise as soft limits, resetting at midnight UTC. A per-IP limit of 5,000 requests per 10 seconds and a concurrency limit of 40 to 250 simultaneous requests by tier also apply. Going over returns HTTP 429, and the RateLimit and RateLimit-Policy response headers report the current state.

Pagination

List-style reads page with a cursor. The items_page query returns a page of items along with a cursor that fetches the next page, and queries like users use cursor-based pagination with a limit. As of the 2026-07 and 2026-10 versions, the users query defaults to 200 results per page with a maximum of 1,000. Exceeding a page limit returns InvalidArgumentException.

Request size

An item name is capped at 255 characters, returning ItemNameTooLongException above it, and a board is capped at around 10,000 items, returning ItemsLimitationException. A single GraphQL call is bounded by the per-minute complexity budget rather than a fixed byte size, so a very large query fails on complexity rather than length.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
200ColumnValueExceptionA successful HTTP request carrying an application error in the body. monday.com returns HTTP 200 with an errors array for problems like a wrongly formatted column value, an invalid board, column, or user id (InvalidColumnIdException, InvalidBoardIdException, InvalidUserIdException), a missing resource (ResourceNotFoundException), or an item name over 255 characters (ItemNameTooLongException).Inspect the errors array in the 200 response, not just the HTTP status, and correct the named field before resending.
400Bad request / JsonParseExceptionThe query is malformed or the JSON body could not be parsed.Fix the query structure or the JSON and resend.
401UnauthorizedThe API token is missing or invalid, or the calling IP address is restricted by an account admin.Send a valid token in the Authorization header, and check any account IP restrictions.
403UserUnauthorizedExceptionThe user behind the token lacks permission for the operation, or the account is inactive or view-only. A missing OAuth scope surfaces as missingRequiredPermissions.Grant the missing scope or the UI permission the operation needs, then retry.
404ResourceNotFoundExceptionThe resource id in the request does not exist or is not visible to the token.Confirm the id is correct and the token has access to the resource.
429COMPLEXITY_BUDGET_EXHAUSTEDA rate limit was hit. This covers the per-minute complexity budget being spent (COMPLEXITY_BUDGET_EXHAUSTED), too many simultaneous requests (maxConcurrencyExceeded), the per-IP limit (IP_RATE_LIMIT_EXCEEDED), and the overall request rate (Rate Limit Exceeded).Read the RateLimit headers, wait for the window to reset, and reduce the size or rate of the calls.
500Internal Server ErrorAn error on monday.com's side.Retry after a brief delay, and contact support if it persists.
Versioning & freshness

Version history.

monday.com versions its API by date through the API-Version header. The current default is 2026-04, with newer versions on a release-candidate track and older ones in maintenance before they are deprecated.

Version history

What changed, and when

Latest version2026-04
2026-04Current version
Current default version

The 2026-04 version is the current default, carrying only bug fixes with no breaking changes, and can be used in production. monday.com versions the API by date through the API-Version header on a quarterly cycle: a release candidate becomes current after three months, then moves to maintenance, then is deprecated with at least six months notice. monday.com recommends passing a version name in every call rather than relying on the default.

What changed
  • Promoted to the current default version, with only bug fixes and no breaking changes
  • Selected through the API-Version header, for example API-Version: 2026-04
2026-01
Maintenance version

The 2026-01 version is in maintenance, still usable but no longer the default. It is scheduled to transition to deprecated on 15 February 2027, with at least six months notice given.

What changed
  • Moved to maintenance status after 2026-04 became the default
  • Deprecation scheduled for 15 February 2027
2026-07
Release-candidate track (User entity changes)

The 2026-07 and 2026-10 versions, on the release-candidate and preview track, restructure the User entity. Photo fields are consolidated into a nested PhotoUrl object, kind and status are replaced with new enums, and the users query pagination defaults to 200 results with a 1,000 maximum. Legacy User fields are scheduled for removal in 2026-10. These were announced on 19 April 2026.

What changed
  • User photo fields consolidated into a nested PhotoUrl object (breaking)
  • User kind and status replaced with new enums (breaking)
  • users query pagination defaults to 200 results, maximum 1,000
  • Legacy User fields scheduled for removal in 2026-10

An integration can pin a version and move up on a schedule that suits it.

monday.com API changelog ↗
Questions

monday.com API, answered.

Is the monday.com API REST or GraphQL?+
It is GraphQL. There is one endpoint at https://api.monday.com/v2, and an app sends a query to read data or a mutation to write it, asking for exactly the fields it needs in one request. There are no per-resource REST paths, so an operation is named, like the boards query or the create_item mutation, rather than addressed by a URL path.
How does authentication and which token type work?+
Every call carries a token in the Authorization header. An app uses OAuth 2.0, sending the user to auth.monday.com to approve scopes, then exchanging the code for an access token that carries only those scopes and does not expire until the app is uninstalled. An installed app can use an app token with an explicit scope set, and a personal V2 token, tied to one user, inherits that user's full UI permissions with no scope limit, which suits scripts.
How do the rate limits and the complexity budget work?+
monday.com meters each call by complexity, a cost reflecting how much the query asks for, drawn from a per-minute budget on a sliding 60-second window: 10M points for a personal token (1M on free or trial accounts) and 5M for an app token. A query can add the complexity field to read its own cost and the remaining budget. A daily call cap also applies, from 1,000 calls on lower plans up to 25,000 on Enterprise, and going over any limit returns HTTP 429 with RateLimit headers.
Why did I get a 200 response that still contains an error?+
monday.com returns application errors in the body of an HTTP 200 response rather than as an HTTP status. A wrongly formatted column value (ColumnValueException), an invalid id (InvalidBoardIdException, InvalidColumnIdException), or a missing resource (ResourceNotFoundException) comes back inside an errors array on a 200. The errors array has to be checked on every response, not just the HTTP status code.
How does API versioning work?+
The API is versioned by date through the API-Version header, on a quarterly cycle: a release candidate becomes current after three months, then moves to maintenance, then is deprecated with at least six months notice. The current default is 2026-04, and 2026-07 and 2026-10 are on the preview track. monday.com recommends passing a version name in every call so a future breaking change does not affect an integration unexpectedly.
Does monday.com have an MCP server for AI agents?+
Yes. monday.com publishes a first-party MCP server, available on all plans. A hosted remote server connects through OAuth 2.0 with monday.com as the identity provider and does not store customer tokens, and a local server can be run from the npm package @mondaydotcomorg/monday-api-mcp with an API token. It exposes over 50 tools across boards, items, columns, workspaces, and users, with the source at github.com/mondaycom/mcp.
How do I receive events instead of polling?+
Webhooks deliver board events without polling. A webhook is created on a board for a chosen event, like create_item, change_column_value, create_update, item_archived, or item_deleted, with a URL to receive it. On creation monday.com sends a challenge that the receiver echoes back to confirm the URL, after which it posts the event payload as each event fires.
Related

More productivity API guides for agents

What is Bollard AI?

Control what every AI agent can do in monday.com.

Bollard AI sits between a team's AI agents and monday.com. Grant each agent exactly the access it needs, read or write, resource by resource, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared monday.com token.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
monday.com
Ops Agent
Read boards and items ResourceOffReadFull use
Update column values ActionOffReadFull use
Delete boards ActionOffReadFull use
Per-agent access, set in Bollard AI, not in monday.com