| name | monday |
| description | Monday.com GraphQL API via curl. Use this skill to manage boards, items, and projects. |
| vm0_secrets | MONDAY_API_KEY |
Monday.com API
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/
When to Use
Use this skill when you need to:
- Query boards and items from Monday.com
- Create, update, or delete items in boards
- Manage board columns and groups
- Sync data between Monday.com and other systems
- Automate project workflows
Prerequisites
- Log in to Monday.com
- Go to your avatar → Developers → My Access Tokens
- Generate a new API token
- Store it in the environment variable
MONDAY_API_KEY
export MONDAY_API_KEY="your-api-token"
API Info
- GraphQL endpoint:
https://api.monday.com/v2 - All requests are POST
- Requires
Authorizationheader with API token - Requires
API-Versionheader (use2024-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 .
How to Use
All examples below assume you have MONDAY_API_KEY set.
1. Get Current User
Query the authenticated user's info:
Write to /tmp/monday_request.json:
{
"query": "query { me { id name email } }"
}
Then run:
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 @/tmp/monday_request.json' | jq .
2. List All Boards
Get all boards in your account:
Write to /tmp/monday_request.json:
{
"query": "query { boards (limit: 10) { id name state items_count } }"
}
Then run:
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 @/tmp/monday_request.json' | jq .
3. Get Board Details
Get a specific board with its groups and columns:
BOARD_ID="1234567890"
Write to /tmp/monday_request.json:
{
"query": "query { boards (ids: ${BOARD_ID}) { id name groups { id title } columns { id title type } } }"
}
Then run:
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 @/tmp/monday_request.json' | jq .
Note: Replace
BOARD_IDwith an actual board ID from the "List All Boards" response (example 2).
4. Get Items from a Board
Get items (rows) from a specific board:
BOARD_ID="1234567890"
Write to /tmp/monday_request.json:
{
"query": "query { boards (ids: ${BOARD_ID}) { items_page (limit: 10) { items { id name column_values { id text value } } } } }"
}
Then run:
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 @/tmp/monday_request.json' | jq .
Note: Replace
BOARD_IDwith an actual board ID from the "List All Boards" response (example 2).
5. Create a New Item
Create a new item in a board:
BOARD_ID="1234567890"
GROUP_ID="topics"
ITEM_NAME="New Task"
Write to /tmp/monday_request.json:
{
"query": "mutation { create_item (board_id: ${BOARD_ID}, group_id: \"${GROUP_ID}\", item_name: \"${ITEM_NAME}\") { id name } }"
}
Then run:
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 @/tmp/monday_request.json' | 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
6. Create Item with Column Values
Create an item with specific column values:
BOARD_ID="1234567890"
GROUP_ID="topics"
Write to /tmp/monday_request.json:
{
"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\"}}"
}
}
Then run:
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 @/tmp/monday_request.json' | 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
7. Update an Item
Update an existing item's column values:
ITEM_ID="9876543210"
BOARD_ID="1234567890"
Write to /tmp/monday_request.json:
{
"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\"}}"
}
}
Then run:
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 @/tmp/monday_request.json' | 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)
8. Delete an Item
Delete an item from a board:
ITEM_ID="9876543210"
Write to /tmp/monday_request.json:
{
"query": "mutation { delete_item (item_id: ${ITEM_ID}) { id } }"
}
Then run:
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 @/tmp/monday_request.json' | jq .
Note: Replace
ITEM_IDwith an actual item ID from the "Get Items from a Board" response (example 4).
9. Create a New Board
Create a new board:
Write to /tmp/monday_request.json:
{
"query": "mutation { create_board (board_name: \"My New Board\", board_kind: public) { id name } }"
}
Then run:
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 @/tmp/monday_request.json' | jq .
10. Search Items
Search for items across boards:
Write to /tmp/monday_request.json:
{
"query": "query { items_page_by_column_values (limit: 10, board_id: 1234567890, columns: [{column_id: \"name\", column_values: [\"Task\"]}]) { items { id name } } }"
}
Then run:
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 @/tmp/monday_request.json' | jq .
Note: Replace the
board_idvalue1234567890with an actual board ID from the "List All Boards" response (example 2).
Common Column Types
| 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} |
Guidelines
- Use variables for complex queries: GraphQL variables make escaping easier
- Check column IDs: Use the board query to get exact column IDs before updating
- API versioning: Always include
API-Versionheader for consistent behavior - Rate limits: API has rate limits; add delays for bulk operations
- Column values are JSON strings: When using
column_values, pass as escaped JSON string