Monday.com GraphQL API via curl. Use this skill to manage boards, items, and projects.
/plugin marketplace add vm0-ai/api0/plugin install api0@api0This skill inherits all available tools. When active, it can use any tool Claude has access to.
Use the Monday.com GraphQL API via direct curl calls to manage boards, items, and project data.
Official docs:
https://developer.monday.com/api-reference/
Use this skill when you need to:
MONDAY_API_KEYexport MONDAY_API_KEY="your-api-token"
https://api.monday.com/v2Authorization header with API tokenAPI-Version header (use 2024-10)Important: When using
$VARin a command that pipes to another command, wrap the command containing$VARinbash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"' | jq .
All examples below assume you have MONDAY_API_KEY set.
Query the authenticated user's info:
bash -c 'curl -s -X POST "https://api.monday.com/v2" --header "Authorization: ${MONDAY_API_KEY}" --header "API-Version: 2024-10" --header "Content-Type: application/json" -d '"'"'{"query": "query { me { id name email } }"}'"'"'' | jq .
Get all boards in your account:
bash -c 'curl -s -X POST "https://api.monday.com/v2" --header "Authorization: ${MONDAY_API_KEY}" --header "API-Version: 2024-10" --header "Content-Type: application/json" -d '"'"'{"query": "query { boards (limit: 10) { id name state items_count } }"}'"'"'' | jq .
Get a specific board with its groups and columns:
BOARD_ID="1234567890"
bash -c 'curl -s -X POST "https://api.monday.com/v2" --header "Authorization: ${MONDAY_API_KEY}" --header "API-Version: 2024-10" --header "Content-Type: application/json" -d "{\"query\": \"query { boards (ids: ${BOARD_ID}) { id name groups { id title } columns { id title type } } }\"}"' | jq .
Note: Replace
BOARD_IDwith an actual board ID from the "List All Boards" response (example 2).
Get items (rows) from a specific board:
BOARD_ID="1234567890"
bash -c 'curl -s -X POST "https://api.monday.com/v2" --header "Authorization: ${MONDAY_API_KEY}" --header "API-Version: 2024-10" --header "Content-Type: application/json" -d "{\"query\": \"query { boards (ids: ${BOARD_ID}) { items_page (limit: 10) { items { id name column_values { id text value } } } } }\"}"' | jq .
Note: Replace
BOARD_IDwith an actual board ID from the "List All Boards" response (example 2).
Create a new item in a board:
BOARD_ID="1234567890"
GROUP_ID="topics"
ITEM_NAME="New Task"
bash -c 'curl -s -X POST "https://api.monday.com/v2" --header "Authorization: ${MONDAY_API_KEY}" --header "API-Version: 2024-10" --header "Content-Type: application/json" -d "{\"query\": \"mutation { create_item (board_id: ${BOARD_ID}, group_id: \\\"${GROUP_ID}\\\", item_name: \\\"${ITEM_NAME}\\\") { id name } }\"}"' | jq .
Note:
- Replace
BOARD_IDwith an actual board ID from the "List All Boards" response (example 2)- Replace
GROUP_IDwith a group ID from the "Get Board Details" response (example 3, groups array)- Replace
ITEM_NAMEwith your desired name for the new item
Create an item with specific column values:
BOARD_ID="1234567890"
GROUP_ID="topics"
bash -c 'curl -s -X POST "https://api.monday.com/v2" --header "Authorization: ${MONDAY_API_KEY}" --header "API-Version: 2024-10" --header "Content-Type: application/json" -d '"'"'{
"query": "mutation ($boardId: ID!, $groupId: String!, $itemName: String!, $columnValues: JSON!) { create_item (board_id: $boardId, group_id: $groupId, item_name: $itemName, column_values: $columnValues) { id name } }",
"variables": {
"boardId": "1234567890",
"groupId": "topics",
"itemName": "Task with Details",
"columnValues": "{\"status\": {\"label\": \"Working on it\"}, \"date\": {\"date\": \"2025-01-15\"}}"
}
}'"'"' | jq .'
Note:
- Replace
boardIdwith an actual board ID from the "List All Boards" response (example 2)- Replace
groupIdwith a group ID from the "Get Board Details" response (example 3, groups array)- Replace
itemNamewith your desired name for the new item
Update an existing item's column values:
ITEM_ID="9876543210"
BOARD_ID="1234567890"
bash -c 'curl -s -X POST "https://api.monday.com/v2" --header "Authorization: ${MONDAY_API_KEY}" --header "API-Version: 2024-10" --header "Content-Type: application/json" -d '"'"'{
"query": "mutation ($boardId: ID!, $itemId: ID!, $columnValues: JSON!) { change_multiple_column_values (board_id: $boardId, item_id: $itemId, column_values: $columnValues) { id name } }",
"variables": {
"boardId": "1234567890",
"itemId": "9876543210",
"columnValues": "{\"status\": {\"label\": \"Done\"}}"
}
}'"'"' | jq .'
Note:
- Replace
boardIdwith an actual board ID from the "List All Boards" response (example 2)- Replace
itemIdwith an item ID from the "Get Items from a Board" response (example 4)
Delete an item from a board:
ITEM_ID="9876543210"
bash -c 'curl -s -X POST "https://api.monday.com/v2" --header "Authorization: ${MONDAY_API_KEY}" --header "API-Version: 2024-10" --header "Content-Type: application/json" -d "{\"query\": \"mutation { delete_item (item_id: ${ITEM_ID}) { id } }\"}"' | jq .
Note: Replace
ITEM_IDwith an actual item ID from the "Get Items from a Board" response (example 4).
Create a new board:
bash -c 'curl -s -X POST "https://api.monday.com/v2" --header "Authorization: ${MONDAY_API_KEY}" --header "API-Version: 2024-10" --header "Content-Type: application/json" -d '"'"'{"query": "mutation { create_board (board_name: \"My New Board\", board_kind: public) { id name } }"}'"'"'' | jq .
Search for items across boards:
bash -c 'curl -s -X POST "https://api.monday.com/v2" --header "Authorization: ${MONDAY_API_KEY}" --header "API-Version: 2024-10" --header "Content-Type: application/json" -d '"'"'{"query": "query { items_page_by_column_values (limit: 10, board_id: 1234567890, columns: [{column_id: \"name\", column_values: [\"Task\"]}]) { items { id name } } }"}'"'"'' | jq .
Note: Replace the
board_idvalue1234567890with an actual board ID from the "List All Boards" response (example 2).
| Column Type | Value Format |
|---|---|
| Status | {"label": "Done"} |
| Date | {"date": "2025-01-15"} |
| Text | "Your text here" |
| Number | "123" |
| Person | {"id": 12345678} |
| Dropdown | {"labels": ["Option1", "Option2"]} |
| Checkbox | {"checked": true} |
API-Version header for consistent behaviorcolumn_values, pass as escaped JSON string