Make your first request

Setting up a monday.com Account

If you’re not already a monday.com user, the first step is to sign up and create a trial account here.

If you'd like to create an account strictly for developing apps, you can sign up for a developer account here: monday.com Developer Signup

Authenticating with the API

Once you set up your account, the next step is to authenticate with an Access Token. Skip to the Authentication section to learn how your apps should authenticate with our API.

Using the API

If you are already familiar with the monday.com building blocks, check out our API playground to explore our GraphQL schema.

If you’re new to monday.com, it’s best to start by learning the basics of the platform. Our Help Center is great for that: Getting started with monday

GraphQL APIs use a single endpoint for all operations (unlike REST APIs). Our API endpoint is:
https://api.monday.com/v2

Requests to the API should follow these rules:

  • POST request with a JSON-formatted body
  • Access token must be sent in the Authorization header. Learn more here: Authentication
  • All queries (including mutations) should be sent with the query key in your JSON body
  • Optional variables should use the variables key
  • Content Type header must be application/json, unless you're uploading Files

Your JSON request body should look like this:

{
   "query": "query {...}," 
   "variables": {"var1":"value1", "var2":"value2", ...}
}

Examples

Below are some examples of how to access the monday.com API using different languages:

curl \
-X POST \
-H "Content-Type:application/json" \
-H "Authorization:YOUR_SUPER_SECRET_API_KEY" \
-d '{"query":"query{boards(limit:1){id name}}"}' \
"https://api.monday.com/v2/"
fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE'
   },
   body: JSON.stringify({
     'query' : 'query{boards (limit:1) {id name} }'
   })
  });
<?php
$token = 'YOUR_TOKEN_HERE';
$apiUrl = 'https://api.monday.com/v2';
$headers = ['Content-Type: application/json', 'Authorization: ' . $token];

$query = 'query { boards (limit:1) {id name} }';
$data = @file_get_contents($apiUrl, false, stream_context_create([
  'http' => [
    'method' => 'POST',
    'header' => $headers,
    'content' => json_encode(['query' => $query]),
  ]
]));
$responseContent = json_decode($data, true);

echo json_encode($responseContent);
?>
import requests
import json

apiKey = "YOUR_API_KEY_HERE"
apiUrl = "https://api.monday.com/v2"
headers = {"Authorization" : apiKey}

query2 = 'query { boards (limit:1) {id name} }'
data = {'query' : query2}

r = requests.post(url=apiUrl, json=data, headers=headers)

Below is an example of what the data returned looks like. Notice that GraphQL will return data in the same structure defined in your query:

{
    "data": {
        "boards": [
            {
                "id": "12345678",
                "name": "My Amazing CRM Board"
            }
        ]
    },
    "account_id": 98765
}

More in-depth tutorials in PHP, Python and Javascript can be found in our Developers' Community.

Developer Mode

Use monday.labs to activate "Developer Mode" in order to see template IDs, column IDs, and more. These will come in handy when using different methods in our API. For more details, check out this article: How to find board, item and column IDs.