Users

Learn how to read, add, and delete monday users via the platform API

Every monday.com user belongs to an account or organization and is assigned a role, such as admin, member, viewer, guest, subscriber, board owner, or a custom role. Each user also has a unique profile containing their user details and permissions.

Queries

You can use the users query to retrieve user data via the API.

  • Required scope: users:read
  • Returns an array containing metadata about one or multiple users
  • Can be queried directly at the root or nested within a teams query (returns users from a specific team)
query {
  users(
    limit: 50
	) {
    created_at
    email
    account {
      name
      id
    }
  }
}
const GET_USERS = "query { users (limit: 50) { created_at email account { name id }}}";
const seamlessApiClient = new SeamlessApiClient("2025-04");

const response = await seamlessApiClient.request(GET_USERS)

fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE'
   },
   body: JSON.stringify({
     query : query
   })
  })
   .then(res => res.json())
   .then(res => console.log(JSON.stringify(res, null, 2)));

Arguments

You can use the following arguments to reduce the number of results returned in your users query.

ArgumentDescriptionEnum Values
emails [String]The specific user emails to return.
ids [ID!]The unique identifier of the specific users to return.
kind UserKindThe kind of users you want to search by.all
guests
non_guests
non_pending
limit IntThe number of users to get.
name StringA fuzzy search of users by name.
newest_first BooleanLists the most recently created users at the top.
non_active BooleanReturns the account's non-active users.
page IntThe page number to return. Starts at 1.

Fields

You can use the following fields to specify what information your users query will return. Some fields support their own subfields.

FieldField descriptionSupported Subfields
account Account!The user's account.
birthday DateThe user's date of birth. Returned as YYYY-MM-DD.
country_code StringThe user's country code.
created_at DateThe user's creation date. Returned as YYYY-MM-DD.
current_language StringThe user's language.
custom_field_metas [CustomFieldMetas]The user profile custom fields metadata. description String
editable Boolean
field_type String
flagged Boolean
icon String
id String
position String
title String
custom_field_values [CustomFieldValue]The user profile custom field values. custom_field_meta_id String
value String
email String!The user's email.
enabled Boolean!Whether the user is enabled.
greeting StringThe user's greeting.
id ID!The user's unique identifier.
is_admin BooleanWhether the user is an admin.
is_guest BooleanWhether the user is a guest.
is_pending BooleanWhether the user hasn't confirmed their email yet.
is_view_only BooleanWhether the user is a viewer.
is_verified BooleanWhether the user verified their email.
join_date DateThe date the user joined the account. Returned as YYYY-MM-DD.
last_activity DateThe last date and time the user was active. Returned as YYYY-MM-DDT00:00:00.
location StringThe user's location.
mobile_phone StringThe user's mobile phone number.
name String!The user's name.
out_of_office OutOfOfficeThe user's out-of-office status.active Boolean
disable_notifications Boolean
end_date Date
start_date Date
type String
phone StringThe user's phone number.
photo_original StringReturns the URL of the user's uploaded photo in its original size.
photo_small StringReturns the URL of the user's uploaded photo in a small size (150x150 px).
photo_thumb StringReturns the URL of the user's uploaded photo in thumbnail size (100x100 px).
photo_thumb_small StringReturns the URL of the user's uploaded photo in a small thumbnail size (50x50 px).
photo_tiny StringReturns the URL of the user's uploaded photo in tiny size (30x30 px).
sign_up_product_kind StringThe product the user first signed up to.
teams [Team]The user's teams.
time_zone_identifier StringThe user's timezone identifier.
title StringThe user's title.
url String!The user's profile URL.
utc_hours_diff IntThe user’s UTC hours difference.

Mutations

The API allows you to update users using the following mutations.

Add users to board

Required scope: boards:write

The add_users_to_board mutation adds users to a board via the API. You can specify which fields to return in the mutation response.

mutation {
  add_users_to_board(
    board_id: 1234567890
    user_ids: [
      123456
      234567
      345678
		] 
    kind: owner
	) {
    id
  }
}
let query = "mutation { add_users_to_board (board_id:1234567890, user_ids: [123456, 234567, 345678], kind: owner) { id }}";

fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE'
   },
   body: JSON.stringify({
     query : query
   })
  })
   .then(res => res.json())
   .then(res => console.log(JSON.stringify(res, null, 2)));

Arguments

You can use the following arguments to define which users to add to the board and their roles.

ArgumentDescriptionEnum Values
board_id ID!The board's unique identifier.
kind BoardSubscriberKindThe user's role.owner
subscriber
user_ids [ID!]!The users' unique identifiers.

Add users to team

The add_users_to_team mutation adds users to a team via the API. It returns the ChangeTeamMembershipResult type which allows you to specify which fields to return in the mutation response.

mutation {
  add_users_to_team(
    team_id: 7654321
    user_ids: [
      123456
      654321
      12345
    ]
  ) {
    successful_users {
      name
      email
    }
    failed_users {
      name
      email
    }
  }
}
let query = "mutation { add_users_to_team (team_id:7654321, user_ids: [123456, 654321, 012345]) { successful_users { name email } failed_users { name email }}}";

fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE'
   },
   body: JSON.stringify({
     query : query
   })
  })
   .then(res => res.json())
   .then(res => console.log(JSON.stringify(res, null, 2)));

Arguments

You can use the following arguments to specify which users to add to the team.

ArgumentDescription
team_id ID!The team's unique identifier.
user_ids [ID!]!The users' unique identifiers.

Add users to workspace

Required scope: workspaces:write

The add_users_to_workspace mutation adds users to a workspace via the API. You can specify which fields to return in the mutation response.

mutation {
  add_users_to_workspace(
    workspace_id: 1234567
    user_ids: [
      123456
      654321
      987654
    ] 
    kind: subscriber
	) {
    id
  }
}
let query = "mutation { add_users_to_workspace (workspace_id: 1234567, user_ids: [123456, 654321, 012345], kind: subscriber) { id } }";

fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE'
   },
   body: JSON.stringify({
     query : query
   })
  })
   .then(res => res.json())
   .then(res => console.log(JSON.stringify(res, null, 2)));

Arguments

You can use the following arguments to define which users to add to the workspace and their roles.

ArgumentsDescriptionEnum Values
kind WorkspaceSubscriberKindThe user's role.owner subscriber
user_ids [ID!]!The users' unique identifiers.
workspace_id ID!The workspace's unique identifier.

Activate users

The activate_users mutation activates or reactivates users in a monday.com account via the API. It returns the ActivateUsersResult type which allows you to specify which fields to return in the mutation response.

mutation {
  activate_users(
    user_ids: [
      54321
      12345
    ]
	) {
    activated_users {
     id
     name
     email
    }
    errors {
      user_id
      code
      message
    }
  }
}
let query = 'mutation { activate_users (user_ids: [54321, 12345]) { activated_users { id name email } errors { user_id code message }}}';

fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE'
   },
   body: JSON.stringify({
     'query' : query
   })
  })
   .then(res => res.json())
   .then(res => console.log(JSON.stringify(res, null, 2)));

Arguments

You can use the following argument to specify which users to activate.

ArgumentDescription
user_ids [ID!]!The users' unique identifiers. The maximum is 200.

Invite users

The invite_users mutation invites users to join a monday.com account via the API. They will remain in a pending status until the invitation is accepted.

It returns the InviteUsersResult type which allows you to specify which fields to return in the mutation response.

mutation {
  invite_users(
    emails: [
      "[email protected]"
      "[email protected]"
    ]
    product: crm
    user_role: VIEW_ONLY
  ) {
    errors {
      message
      code
      email
    }
    invited_users {
      name
      id
    }
  }
}
let query = 'mutation { invite_users (input: ) { deactivated_users { id name }}';

fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE'
   },
   body: JSON.stringify({
     'query' : query
   })
  })
   .then(res => res.json())
   .then(res => console.log(JSON.stringify(res, null, 2)));

Arguments

You can use the following arguments to specify which users to invite to the account.

ArgumentDescriptionEnum Values
emails [String!]!The users' emails.
product ProductThe product to invite the user to. crm
dev
forms
knowledge
service
whiteboard
workflows
work_management
user_role UserRoleThe invited user's new role.ADMIN
GUEST
MEMBER
VIEW_ONLY

Update multiple users

The update_multiple_users mutation updates one or multiple users' attributes via the API. It returns the UpdateUserAttributesResult type which allows you to specify which fields to return in the mutation response.

mutation {
  update_multiple_users(
    user_updates: [
      {
        user_id: 12345678
        user_attribute_updates: {
          birthday: "1985-06-01"
          email: "[email protected]"
        }
      }
      {
        user_id: 87654321
        user_attribute_updates: {
          birthday: "1975-01-20"
          email: "[email protected]"
        }
      }
    ]
  ) {
    updated_users {
      name
      birthday
      email
      id
    }
    errors {
      message
      code
      user_id
    }
  }
}

Arguments

You can use the following argument to specify which users to update.

ArgumentDescriptionSupported Fields
user_updates [UserUpdateInput!]!The unique identifiers and attributes to update. user_attribute_updates UserAttributesInput!
user_id ID!

Update email domain

The update_email_domain mutation updates a user's email domain via the API. It returns the UpdateEmailDomainResult type which allows you to specify which fields to return in the mutation response.

mutation {
  update_email_domain(
    input: {
      new_domain: "[email protected]"
      user_ids: [
        123456
        654321
      ]
    }
	) {
    updated_users {
      name
      is_admin
    }
    errors {
      user_id
      code
      message
    }
  }
} 

Arguments

You can use the following argument to specify the users' emails to update.

ArgumentDescriptionSupported Fields
input UpdateEmailDomainAttributesInput!The attributes to update.new_domain String!
user_ids [ID!]!

Update user's role

The update_users_role mutation updates a user's role (accepts both custom or default roles) via the API. It returns the UpdateUsersRoleResult type which allows you to specify which fields to return in the mutation response.

Please keep the following in mind:

  • You can't update yourself
  • Maximum of 200 user IDs per mutation
  • Only admins can use this mutation
mutation {
  update_users_role(
    user_ids: [
      12345
      54321
    ]
    new_role: ADMIN
	) {
    updated_users {
      name
      is_admin
    }
    errors {
      user_id
      code
      message
    }
  }
} 
mutation {
  update_users_role(
    user_ids: [
      12345
      54321
    ]
    role_id: "5"
	) {
    updated_users {
      name
    }
    errors {
      user_id
      code
      message
    }
  }
} 

Arguments

You can use the following argument to specify the users' roles to update.

ArgumentDescriptionEnum Values
new_role BaseRoleNameThe user's updated role. Only used to update default roles, not custom ones (read more here). ADMIN
GUEST
MEMBER
VIEW_ONLY
role_id IDThe custom role's unique identifier (found by querying account_roles). Available only for enterprise customers.
user_ids [ID!]!The users' unique identifiers. The maximum is 200.

Delete subscribers from a board

The delete_subscribers_from_board mutation deletes subscribers from a board via the API. You can specify which fields to return in the mutation response.

mutation {
  delete_subscribers_from_board(
    board_id: 1234567890
    user_ids: [
      12345678
      87654321
      56789012
    ]
	) {
    id
  }
}
let query = 'mutation { delete_subscribers_from_board (board_id: 1234567890, user_ids: [12345678, 87654321, 01234567]) { id }}';

fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE'
   },
   body: JSON.stringify({
     'query' : query
   })
  })
   .then(res => res.json())
   .then(res => console.log(JSON.stringify(res, null, 2)));

Arguments

You can use the following arguments to specify which subscribers to delete from the board.

ArgumentDescription
board_id ID!The board's unique identifier.
user_ids [ID!]!The users' unique identifiers.

Remove users from team

The remove_users_from_team mutation removes users from a team via the API. It returns the ChangeTeamMembershipResult type which allows you to specify which fields to return in the mutation response.

mutation {
  remove_users_from_team(
    team_id: 7654321
    user_ids: [
      123456
      654321
      987654
    ]
	) {
    successful_users {
      name
      email 
    }
    failed_users {
      name
      email
    }
  }
}   
let query = "mutation { remove_users_from_team (team_id:7654321, user_ids: [123456, 654321, 012345]) { successful_users { name email } failed_users { name email }}}";

fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE'
   },
   body: JSON.stringify({
     query : query
   })
  })
   .then(res => res.json())
   .then(res => console.log(JSON.stringify(res, null, 2)));

Arguments

You can use the following arguments to specify which users to remove from the team.

ArgumentDescription
team_id ID!The team's unique identifier.
user_ids [ID!]!The users' unique identifiers.

Delete users from workspace

Required scope: workspaces:write

The delete_users_from_workspace mutation deletes users from a workspace via the API. You can specify which fields to return in the mutation response.

mutation {
  delete_users_from_workspace(
    workspace_id: 1234567
    user_ids: [
      123456
      654321
      987654
    ]
	) {
    id
  }
}
let query = "mutation { delete_users_from_workspace (workspace_id: 1234567, user_ids: [123456, 654321, 012345]) { id } }";

fetch ("https://api.monday.com/v2", {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_KEY_HERE'
   },
   body: JSON.stringify({
     query : query
   })
  })
   .then(res => res.json())
   .then(res => console.log(JSON.stringify(res, null, 2)));

Arguments

You can use the following arguments to specify which users to delete from the workspace.

ArgumentsDescription
user_ids [ID!]!The users' unique identifiers.
workspace_id ID!!The workspace's unique identifier.

Deactivate users

The deactivate_users mutation deactivates users from a monday.com account via the API. It returns the DeactivateUsersResult type which allows you to specify which fields to return in the mutation response.

Please keep the following in mind:

  • You can't deactivate yourself
  • There's a maximum of 200 users per mutation
  • Only admins can use this mutation
  • Deactivating a user also deactivates the integrations and automations they've created. Read more about deactivating users here!
mutation {
  deactivate_users(
    user_ids: [
      54321
      12345
    ]
	) {
    deactivated_users {
     id
     name
    }
    errors {
      message
      code
      user_id
    }
  }
}

Arguments

You can use the following argument to specify which users to deactivate.

ArgumentsDescription
user_ids [ID!]!The unique identifiers of the users to deactivate. The maximum is 200.