What can we help you with?

Does monday.com have an API?

We most certainly do! Our API is built on GraphQL and will give you a ton of flexibility for accessing and changing information in your monday.com account.

 

Why GraphQL?

Our users use monday.com to manage all sorts of information, and we wanted to build an API that is as flexible as our platform. Therefore, we built an API that could handle expressive queries to get exactly the information you need, when you need it. If you want to know more about GraphQL as a query language, check out graphql.org :)

 

Documentation and Testing

To make using our API easier, we have written documentation explaining the queries and mutations you can do to your data here. You can also test your queries in our GraphQL explorer here

 

Authenticating with your API Token

Any request to our API must be accompanied by an API token, to let us know you're you 😊

API for admins users

Each admin on the account has their own API token -- make sure to keep this safe! To generate your API token: 

  1. Log into your monday.com account.
  2. Click on your avatar in the bottom left corner.
  3. Select Admin.
  4. Select "API" on the left side of the admin page.
  5. Scroll down to the "API V2 Token" section, and click "Generate".
  6. Copy this token. This is what you should be looking at:

API.png

API for non-admins users

If you are not an admin of your monday.com account, you can get your API tokens via the developers section, following these steps: 

  • Activate monday apps in monday.labs
  • Go to avatar menu > developers
  • Click "My Tokens" in the top

toek.png

You can use this API token to authenticate all your requests to our API, as well as in our testing environment. If you need to, you can regenerate the token at any time (causing the old one to expire). 

API tokens generated through OAuth

You can also generate a token for specific apps using the OAuth Authorization Flow. The permissions of these tokens are limited based on the authorization scopes of the app to which they are linked. For more information, check out our OAuth documentation.

 

API Token Permissions

Each user's API token is scoped to the permissions of that user themselves. 

For example, if the user has read-only access to a certain board, the API token will not be able to update any information on that board. 

Similarly, if a user does not have access to a private board -- any apps that use the API token will not have access to that board either. 

 

Note: We currently do not support "superuser" API tokens that have read and write access to every board on an account. 

 

Accessing our GraphQL API

We know that our users like to test things out before implementing them, so we included a query editor directly in our platform! You can use this to try queries and mutations before implementing them in your application. To use the API explorer, go to this link 

Once you've opened the explorer page, enter your API token in this field: 

image_1.png

After supplying your token, you will enter our testing environment. The left pane of the explorer is where you enter your query or mutation, and when you press "Play" at the top left, the right pane will contain your results. 

graphQL_query_results.png

You can also click the "Docs" button in the top right to access our documentation directly from the explorer. To access our documentation outside the explorer, check out this link!

 

Sending Requests

So, you've tested your queries and you're ready to send them directly from your application? Well, you've come to the right place 😊

All requests to our server should be POST requests sent to api.monday.com/v2. 

Be sure to use the application/json content type, and pass your API key as an "Authorization" parameter in the headers:

{
"Content-Type" : "application/json",
"Authorization" : "mySuperSecretAPIKey"
}

The request body is where your query and variables are passed. It should look like this:

{ 
"query" : "...",
"variables" : {"myVariable" : "foo", "yourVariable" : "bar"}
}  

 

Simple Example in cURL

Putting all this together, we can use the following cURL command to get a user's name using the GraphQL API: 

curl -X "POST" -H "Content-Type:application/json" -H "Authorization:XXXXX" -d '{"query":"{me{name}}"}' 'https://api.monday.com/v2'

 

Limitations

The API rate limits are based on complexity level, which is limited to 10,000,000 / minute per account. You can learn more about this here!

 

Happy coding!

Now that you've got a basic understanding of sending requests to our API, go ahead and check out our documentation here. You can also play around with our testing environment here!

And last but certainly not least, check out our quickstart tutorials in different programming languages:

 

 If you have any further questions please don't hesitate to reach out to us at [email protected]