Form

Learn how to read, create, update, and delete monday.com Workforms via the platform API

monday.com Workforms enables you to create and share custom forms that automatically sync with your monday boards and workflows. You can fully control the form's settings, including questions, appearance, and accessibility settings.

Queries

You can retrieve monday.com form data via the API through the form query.

  • Returns metadata for a given form
  • Can only be queried at the root; cannot be nested within another query
  • You must have access to the board associated with the form to run this query
🚧 The `form` query is only available in API versions 2025-10 and later
query {
  form(formToken: "YOUR_FORM_TOKEN") {
    id
    title
    active
    appearance {
      primaryColor
      showProgressBar
    }
    features {
      responseLimit {
        enabled
        limit
      }
    }
    questions {
      id
      title
      type
      required
      visible
    }
  }
}
{
  "data": {
    "form": {
      "id": 12345,
      "title": "Customer Feedback Survey",
      "active": true,
      "appearance": {
        "primaryColor": "#2196f3",
        "showProgressBar": false
      },
      "features": {
        "responseLimit": {
          "enabled": true,
          "limit": 500
        }
      },
      "questions": [
        { "id": "q1", "title": "What is your full name?", "type": "Name", "required": true, "visible": true },
        { "id": "q2", "title": "What is your email address?", "type": "Email", "required": true, "visible": true },
        { "id": "q3", "title": "How would you rate your experience?", "type": "Rating", "required": false, "visible": true }
      ]
    }
  }
}

Arguments

You can use the following argument(s) to reduce the number of results returned in your form query.

ArgumentDescription
formToken String!The form's unique string token, located in the form's URL.

How to access the form's token

  1. Open your form and click Share form in the top-right corner.
  2. This opens a pop-up with your form's shareable URL.

Sample URL: https://forms.monday.com/forms/abc123def456ghi789?r=use1

  1. The token is the alphanumeric string that appears right after /forms/ and before the ?. In the sample above, the token is abc123def456ghi789.

Fields

You can use the following field(s) to specify what information your form query will return. Some fields will have their own subfields.

FieldDescriptionSupported subfields
accessibility FormAccessibilityThe form's accessibility settings. language String
logoAltText String
active Boolean!Whether the form is visible and accepting responses.
appearance FormAppearanceThe form's visual style settings. background FormBackground
hideBranding Boolean!
layout FormLayout
logo FormLogo
primaryColor String
showProgressBar Boolean!
submitButton FormSubmitButton
text FormText
builtWithAi Boolean!Whether the form was created with monday.com’s AI-assisted form builder.
description StringThe optional form description, displayed below the title.
features FormFeaturesThe form's toggles and feature settings.afterSubmissionView FormAfterSubmissionView
closeDate FormCloseDate
draftSubmission FormDraftSubmission
isInternal Boolean!
monday FormMonday
password FormPassword
preSubmissionView FormPreSubmissionView
reCaptchaChallenge Boolean!
requireLogin FormRequireLogin
responseLimit FormResponseLimit
shortenedLink FormShortenedLink
id Int!The form's unique board view identifier.
isAnonymous Boolean!Whether responses are collected anonymously.
ownerId IntThe user ID of the form's owner/creator.
questions [FormQuestion!]An array of question objects that make up the form, in display order.description String
id String!
options [FormQuestionOption!]
required Boolean!
settings FormQuestionSettings
showIfRules JSON
title String!
type FormQuestionType
visible Boolean!
tags [FormTag!]Tracking tags for categorization and analytics. columnId String!
id String!
name String!
value String
title String!Title displayed at the top of the form.
token String!The form's string-based unique token. Used in API queries and mutations.
type StringThe form's type.

Mutations

The API allows you to create, update, and delete Workflows using the following mutations. These operations let you programmatically control a form's full lifecycle.

You must have edit access to the form to perform these mutations.

🚧 The form mutations are only available in API versions 2025-10 and later

Create form

The create_form mutation creates a new form via the API. It returns the DehydratedFormResponse type which allows you to specify what fields to query back when you run it.

mutation {
  create_form(
    board_kind: public
    destination_folder_id: 1234567890
    destination_folder_name: "Customer Feedback 2025"
    destination_name: "Customer Feedback Q4"
    destination_workspace_id: 9876543210
  ) {
    boardId
		token
  }
}
{
  "data": {
    "create_form": {
      "boardId": "1234567890",
      "token": "YOUR_FORM_TOKEN"
    }
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

You can use the following arguments to define the new form's characteristics.

ArgumentDescriptionEnum values
board_kind BoardKindThe type of board. private
public
share
board_owner_ids [Float!]The user IDs of the users who will be owners of the board that stores the form responses.
board_owner_team_ids [Float!]The team IDs of the teams whose members will be owners of the board that stores the form responses.
board_subscriber_ids [Float!]The user IDs of the users who will be subscribed to the board that stores the form responses.
board_subscriber_teams_ids [Float!]The team IDs of the teams whose members will be subscribed to the board that stores the form responses.
destination_folder_id FloatThe unique identifier of the folder to create the form in.
destination_folder_name StringThe name of the folder to create the form in.
destination_name StringThe name of the board that will be created to store the form responses.
destination_workspace_id Float!The unique identifier of the workspace to create the form in.

Create form question

The create_form_question mutation creates a new question on a form via the API. It returns the FormQuestion type which allows you to specify what fields to query back when you run it.

mutation {
  create_form_question (
    formToken: "YOUR_FORM_TOKEN"
    question: {
      title: "Phone"
      description: "Enter your phone number."
      type: Phone
      required: true
      settings: {
        prefixAutofilled: false
        prefixPredefined: {
          enabled: true
          prefix: "+1"
        }
      }
    }
  ) {
    id
  }
}
{
  "data": {
    "create_form_question": {
      "id": "YOUR_QUESTION_ID"
    }
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

You can use the following arguments to define the form's new question.

ArgumentDescriptionSupported Fields
formToken String!The form's unique identifier. You can retrieve it from the form's URL.
question CreationQuestionInput!An object containing the question's properties. description String
options [QuestionOptionInput!]
required Boolean
settings FormQuestionSettingsInput
title String!
type FormQuestionType!
visible Boolean

Create form tag

The create_form_tag mutation creates a new tag for a form via the API. It returns the FormTag type which allows you to specify what fields to query back when you run it.

mutation {
  create_form_tag (
    formToken: "YOUR_FORM_TOKEN"
    tag: {
      name: "New Tag"
      value: "This is the new tag."
    }
  ) {
    id
  }
}
{
  "data": {
    "create_form_tag": {
      "id": "YOUR_TAG_ID"
    }
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

You can use the following arguments to define the new tag's characteristics.

ArgumentDescriptionSupported Fields
formToken String!The form's unique identifier. You can retrieve it from the form's URL.
tag CreateFormTagInput!The tag's name and value. The name must be unique within the form.name String!
value String

Activate form

The activate_form mutation activates an existing form via the API, making it visible to users and allowing new submissions. It returns a Boolean indicating whether the activation was successful.

mutation {
  activate_form (
    formToken: "YOUR_FORM_TOKEN"
  )
}
{
  "data": {
    "activate_form": true
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

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

ArgumentDescription
formToken String!The form's unique identifier. You can retrieve it from the form's URL.

Update form

The update_form mutation updates a form's title, description, or question order via the API. It returns the ResponseForm type which lets you specify what fields to query back.

mutation {
  update_form(
    formToken: "YOUR_FORM_TOKEN"
    input: {
      description: "Your updated description."
      title: "Your updated title."
      questions: [
        { id: "Q1" }
        { id: "Q3" }
        { id: "Q2" }
      ]
    }
  ) {
    title
    description
    questions {
      type
    }
  }
}
{
  "data": {
    "update_form": {
      "title": "Your updated title.",
      "description": "Your updated description.",
      "questions": [
        {
          "type": "Name"
        },
        {
          "type": "ShortText"
        },
        {
          "type": "LongText"
        }
      ]
    }
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

You can use the following arguments to define the updated form's characteristics.

ArgumentDescriptionSupported Fields
formToken String!The form's unique identifier. You can retrieve it from the form's URL.
input UpdateFormInput!An object containing the form's properties to update.description String
questions [QuestionOrderInput!]
title String

Update form question

The update_form_question mutation updates an existing question's properties via the API. It returns the FormQuestion type which lets you specify what fields to query back.

mutation {
  update_form_question (
    formToken: "YOUR_FORM_TOKEN"
    questionId: "Q1"
    question: {
      type: Name
      description: "Enter your name."
      settings: {
        prefill: {
          enabled: false
        }
      }
    }
  ) {
    description
    settings {
      prefill {
        enabled
      }
    }
  }
}
{
  "data": {
    "update_form_question": {
      "description": "Enter your name.",
      "settings": {
        "prefill": {
          "enabled": false
        }
      }
    }
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

You can use the following arguments to define the updated question.

ArgumentDescriptionSupported Fields
formToken String!The form's unique identifier. You can retrieve it from the form's URL.
question UpdateQuestionInput!An object containing the question's updated properties. description String
required Boolean
settings FormQuestionSettingsInput
title String
type FormQuestionType!
visible Boolean
questionId String!The question's unique identifier.

Update form settings

The update_form_settings mutation updates a form's features, appearance, and accessibility options via the API. It returns the ResponseForm type which lets you specify what fields to query back.

mutation {
  update_form_settings (
    formToken: "YOUR_FORM_TOKEN"
    settings: {
      appearance: {
        isAnonymous: true
      }
      accessibility: {
        language: "en"
      }
    }
  ) {
    isAnonymous
    accessibility {
      language
    }
  }
}
{
  "data": {
    "update_form_settings": {
      "isAnonymous": true,
      "accessibility": {
        "language": "en"
      }
    }
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

You can use the following arguments to define the form's updated settings.

ArgumentDescriptionSupported Fields
formToken String!The form's unique identifier. You can retrieve it from the form's URL.
settings UpdateFormSettingsInput!An object containing all of the form's configuration inputs. accessibility FormAccessibilityInput
appearance FormAppearanceInput
features FormFeaturesInput

Update form tag

The update_form_tag mutation updates an existing form tag via the API. It returns a Boolean indicating whether the update was successful.

mutation {
  update_form_tag (
    formToken: "YOUR_FORM_TOKEN"
    tagId: "YOUR_TAG_ID"
    tag: {
      value: "UPDATED_TAG"
    }
  ) {
  }
}
{
  "data": {
    "update_form_tag": true
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

You can use the following arguments to define the updated tag.

ArgumentDescriptionSupported Fields
formToken String!The form's unique identifier. You can retrieve it from the form's URL.
tag UpdateFormTagInput!The tag's updated data.value String
tagId String!The tag's unique identifier.

Set form password

The set_form_password mutation enables password protection and allows you to set a password via the API. It returns the ResponseForm type which lets you specify what fields to query back.

mutation {
  set_form_password (
    formToken: "YOUR_FORM_TOKEN"
    input: {
      password: "NEW_PASSWORD"
    }
  ) {
    id
    title
  }
}
{
  "data": {
    "set_form_password": {
      "id": 123456789,
      "title": "Contact Information"
    }
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

You can use the following arguments to define the form's password.

ArgumentDescriptionSupported Fields
formToken String!The form's unique identifier. You can retrieve it from the form's URL.
input SetFormPasswordInput!The form's password. Must be at least one character long.password String!

Shorten form URL

The shorten_form_url mutation shortens a form's URL and stores it in the form’s settings via the API. It returns the FormShortenedLink type which contains the shortened link object.

mutation {
  shorten_form_url (
    formToken: "YOUR_FORM_TOKEN"
  ) {
    enabled
    url
  }
}
{
  "data": {
    "shorten_form_url": {
      "enabled": true,
      "url": "https://wkf.ms/0oOoOoO"
    }
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

You can use the following argument to specify which form's URL to shorten.

ArgumentDescription
formToken String!The form's unique identifier. You can retrieve it from the form's URL.

Deactivate form

The deactivate_form mutation deactivates an existing form via the API, hiding it from users and blocking new submissions. It returns a Boolean indicating whether the deactivation was successful.

mutation {
  deactivate_form (
    formToken: "YOUR_FORM_TOKEN"
  )
}
{
  "data": {
    "deactivate_form": true
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

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

ArgumentDescription
formToken String!The form's unique identifier. You can retrieve it from the form's URL.

Delete question

The delete_question mutation permanently deletes an existing question from a form via the API. It returns a Boolean indicating whether the deletion was successful.

Note: A question cannot be retrieved once it is deleted.

mutation {
  delete_question (
    formToken: "YOUR_FORM_TOKEN"
    questionId: "YOUR_QUESTION_ID"
  )
}
{
  "data": {
    "delete_question": true
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

You can use the following arguments to specify which question to delete.

ArgumentDescription
formToken String!The form's unique identifier. You can retrieve it from the form's URL.
questionId String!The question's unique identifier.

Delete form tag

The delete_form_tag mutation permanently deletes a tag from a form via the API. It returns a Boolean indicating whether the deletion was successful.

mutation {
  delete_form_tag (
    formToken: "YOUR_FORM_TOKEN"
    tagId: "YOUR_TAG_ID"
    options: {
      deleteAssociatedColumn: true
    }
  )
}
{
  "data": {
    "delete_form_tag": true
  },
  "extensions": {
    "request_id": "YOUR_REQUEST_ID"
  }
}

Arguments

You can use the following arguments to specify which tag to delete.

ArgumentDescriptionSupported Fields
formToken String!The form's unique identifier. You can retrieve it from the form's URL.
options DeleteFormTagInputThe options for deleting the tag.deleteAssociatedColumn Boolean
tagId String!The tag's unique identifier.