Skip to content

Monday.com - GraphQL Query

↩ Part of the Monday.com integration.

This module is the escape hatch of the Monday integration: you write the GraphQL query or mutation yourself and the node sends it to https://api.monday.com/v2 with the credential’s token and the API-Version: 2024-10 header.

Use it for everything the other five nodes do not wrap — listing boards, paginating items, creating subitems, moving an item between groups, reading users, working with workspaces, and so on. The full response object from Monday is passed on to the next node.

FieldTypeRequiredDescription
credentials_idcredentialsYesMonday credential
querytextareaYesGraphQL query or mutation
variablesjsonNoOperation variables

This module requires a Monday credential.

FieldDescription
tokenPersonal API token (Avatar → Developers → My access tokens)
timeoutOptional. Request timeout in milliseconds (default 20000)

The node returns Monday’s whole response body, so your data lives under data, one level below the field name you asked for:

{
"nextModule": null,
"data": {
"data": {
"boards": [
{
"id": "1234567890",
"name": "Sales pipeline",
"items_page": {
"cursor": null,
"items": [
{ "id": "987654321", "name": "Acme Ltd" }
]
}
}
]
},
"account_id": 5566778
},
"_meta": {
"moduleVersion": "1.0.0",
"success": true,
"totalMs": 402
}
}

In the next node you reach a value with a path such as {{data.data.boards.0.items_page.items.0.id}}.

{
"credentials_id": 8,
"query": "query($board:ID!,$limit:Int!){ boards(ids:[$board]){ id name items_page(limit:$limit){ cursor items { id name } } } }",
"variables": {
"board": "1234567890",
"limit": 50
}
}
{
"credentials_id": 8,
"query": "mutation($parent:ID!,$name:String!){ create_subitem(parent_item_id:$parent,item_name:$name){ id } }",
"variables": {
"parent": "{{data.id}}",
"name": "Follow-up call"
}
}
{
"credentials_id": 8,
"query": "mutation($item:ID!,$group:String!){ move_item_to_group(item_id:$item,group_id:$group){ id } }",
"variables": {
"item": "{{data.id}}",
"group": "closed_won"
}
}
  • Both query and variables resolve dynamic variables such as {{data.id}} before being sent. For anything user-supplied, prefer passing it through variables rather than concatenating it into the query text.
  • If variables is set but is not valid JSON, the node stops with a validation error and does not call Monday.
  • Monday answers HTTP 200 even on failure. The node reads the errors array and raises the concatenated messages as a real error, so a broken query stops the branch.
  • Rate limiting on Monday is based on query complexity. Asking for fewer fields, or a smaller limit, is usually what fixes a complexity error.
  • Ids are typed ID! in the schema; passing them as strings, as in the examples above, is always safe.