Making your first request

Setting up a monday.com account

The first step is to sign up and create a trial account. You can also create a developer account strictly for developing apps. If you already have a monday.com account, skip to the next step!

Authenticating with the API

After setting up your monday.com account, you must authenticate with an Access Token. To learn about how your apps should authenticate with our API, check out our authentication documentation.

Using the API

After authenticating your app, you're ready to start using the API! If you’re new to monday.com, it’s best to start by learning the basics of the platform in our Help Center.

If you are already familiar with the monday.com building blocks, you can explore our GraphQL schema here or in our API playground.

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
  • API-Version header should be used to call a specific API version

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 --location 'https://api.monday.com/v2/' \
--header 'Authorization:YOUR_API_KEY_HERE' \
--header 'API-Version: 2023-07' \
--header 'Content-Type: application/json' \
--data '{"query":"query { boards (ids: 1234567890) {name}}"}'
curl -X POST -H "Content-Type:application/json" -H "Authorization:YOUR_API_KEY_HERE" -H "API-Version:2023-07" -d "{\"query\":\"query{boards(ids:1234567890){name}}\"}" "https://api.monday.com/v2/"
fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE',
    'API-Version' : '2023-04'
   },
   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, 'API-version' : 2023-04];

$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, "API-Version" : "2023-04"}

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.