> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Typeform Integration for AI Agents & Workflows

> Online form builder for surveys, quizzes, and interactive forms

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img className="block dark:hidden" src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/typeform-light.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=9749d27cd4789aaa4265141c7dad7230" alt="Typeform logo" width="72" height="72" data-path="logos/typeform-light.svg" />

<img className="hidden dark:block" src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/typeform-dark.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=35ba0b826d8767ac1a92c7bb902a3681" alt="Typeform logo" width="72" height="72" data-path="logos/typeform-dark.svg" />

## Overview

Add **Typeform** to any ModuleX agent or workflow. Online form builder for surveys, quizzes, and interactive forms via the Typeform REST API (`api.typeform.com`).

<Info>
  **Categories**: Productivity & Collaboration · Forms · Surveys · **Auth**: OAuth2 · **Actions**: 12
</Info>

## Authentication

### OAuth2 Authentication

Connect using Typeform OAuth (recommended)

#### Required Credentials

| Field         | Description                      | Required | Format                                     |
| ------------- | -------------------------------- | -------- | ------------------------------------------ |
| Client ID     | Typeform OAuth App Client ID     | Yes      | `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |
| Client Secret | Typeform OAuth App Client Secret | Yes      | `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |

#### OAuth Configuration

* **Authorization URL**: `https://api.typeform.com/oauth/authorize`
* **Token URL**: `https://api.typeform.com/oauth/token`
* **Scopes**: `forms:read`, `forms:write`, `images:read`, `images:write`, `responses:read`, `accounts:read`, `workspaces:read`

## Available Actions

<AccordionGroup>
  <Accordion title="list_forms — Retrieves a list of forms from your Typeform account">
    ### Parameters

    <ResponseField name="search" type="string">
      Returns items that contain the specified string
    </ResponseField>

    <ResponseField name="page" type="integer">
      The page of results to retrieve. Default 1 is the first page of results (Default: `1`)
    </ResponseField>

    <ResponseField name="page_size" type="integer">
      Number of results to retrieve per page. Default is 10. Maximum is 200 (Default: `10`)
    </ResponseField>

    <ResponseField name="workspace_id" type="string">
      Retrieve typeforms for the specified workspace ID
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "FormSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "type": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Type"
            },
            "last_updated_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Last Updated At"
            },
            "self_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Self Url"
            }
          },
          "title": "FormSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "forms": {
          "items": {
            "$ref": "#/$defs/FormSummary"
          },
          "title": "Forms",
          "type": "array"
        },
        "total_items": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Total Items"
        },
        "page_count": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Page Count"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListFormsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_form — Creates a new form with the specified title">
    ### Parameters

    <ResponseField name="title" type="string" required>
      Title to use for the typeform
    </ResponseField>

    <ResponseField name="workspace_href" type="string">
      URL of the workspace to use for the typeform. If not specified, the form is saved in the default workspace
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "self_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Self Url"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateFormOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="duplicate_form — Duplicates an existing form and adds (copy) to the end of the title">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Unique ID for the form to duplicate
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "self_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Self Url"
        }
      },
      "required": [
        "success"
      ],
      "title": "DuplicateFormOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="delete_form — Deletes a form from your Typeform account">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Unique ID for the form to delete
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        }
      },
      "required": [
        "success"
      ],
      "title": "DeleteFormOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_images — Retrieves a list of all images in your Typeform account">
    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ImageItem": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "src": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Src"
            },
            "file_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "File Name"
            },
            "width": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Width"
            },
            "height": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Height"
            }
          },
          "title": "ImageItem",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "images": {
          "items": {
            "$ref": "#/$defs/ImageItem"
          },
          "title": "Images",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListImagesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_form — Retrieves the details of a specific form">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Unique ID for the form to retrieve
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "fields": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Fields",
          "type": "array"
        },
        "self_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Self Url"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetFormOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="lookup_responses — Search for form responses matching a query string">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Unique ID for the form
    </ResponseField>

    <ResponseField name="query" type="string" required>
      Limit request to only responses that include the specified string. Matched against all answers, hidden fields, and variable values
    </ResponseField>

    <ResponseField name="page_size" type="integer">
      Maximum number of responses. Maximum value is 1000. Default is 25 (Default: `25`)
    </ResponseField>

    <ResponseField name="since" type="string">
      Limit to responses submitted since this date/time (ISO 8601 UTC or timestamp in seconds)
    </ResponseField>

    <ResponseField name="until" type="string">
      Limit to responses submitted until this date/time (ISO 8601 UTC or timestamp in seconds)
    </ResponseField>

    <ResponseField name="after" type="string">
      Limit to responses submitted after the specified token. Cannot be used with sort
    </ResponseField>

    <ResponseField name="before" type="string">
      Limit to responses submitted before the specified token. Cannot be used with sort
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ResponseItem": {
          "additionalProperties": false,
          "properties": {
            "response_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Response Id"
            },
            "landed_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Landed At"
            },
            "submitted_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Submitted At"
            },
            "answers": {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "title": "Answers",
              "type": "array"
            }
          },
          "title": "ResponseItem",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "items": {
          "items": {
            "$ref": "#/$defs/ResponseItem"
          },
          "title": "Items",
          "type": "array"
        },
        "total_items": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Total Items"
        },
        "page_count": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Page Count"
        }
      },
      "required": [
        "success"
      ],
      "title": "LookupResponsesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_responses — Returns form responses and date and time of form landing and submission">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Unique ID for the form
    </ResponseField>

    <ResponseField name="page_size" type="integer">
      Maximum number of responses. Maximum value is 1000. Default is 25 (Default: `25`)
    </ResponseField>

    <ResponseField name="since" type="string">
      Limit to responses submitted since this date/time (ISO 8601 UTC or timestamp in seconds)
    </ResponseField>

    <ResponseField name="until" type="string">
      Limit to responses submitted until this date/time (ISO 8601 UTC or timestamp in seconds)
    </ResponseField>

    <ResponseField name="after" type="string">
      Limit to responses submitted after the specified token. Cannot be used with sort
    </ResponseField>

    <ResponseField name="before" type="string">
      Limit to responses submitted before the specified token. Cannot be used with sort
    </ResponseField>

    <ResponseField name="included_response_ids" type="string">
      Comma-separated list of response\_ids to include. Cannot be combined with excluded\_response\_ids
    </ResponseField>

    <ResponseField name="excluded_response_ids" type="string">
      Comma-separated list of response\_ids to exclude. Cannot be combined with included\_response\_ids
    </ResponseField>

    <ResponseField name="completed" type="boolean">
      Limit responses only to those which were submitted. If true, filters by submitted\_at; otherwise by landed\_at
    </ResponseField>

    <ResponseField name="sort" type="string">
      Responses order in \{fieldID},\{asc|desc} format. Default is submitted\_at,desc (Default: `submitted_at,desc`)
    </ResponseField>

    <ResponseField name="query" type="string">
      Limit request to only responses that include the specified string
    </ResponseField>

    <ResponseField name="fields" type="string">
      Comma-separated list of field IDs to show in answers section
    </ResponseField>

    <ResponseField name="answered_fields" type="string">
      Comma-separated list of field IDs that must have answers in the response
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ResponseItem": {
          "additionalProperties": false,
          "properties": {
            "response_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Response Id"
            },
            "landed_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Landed At"
            },
            "submitted_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Submitted At"
            },
            "answers": {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "title": "Answers",
              "type": "array"
            }
          },
          "title": "ResponseItem",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "items": {
          "items": {
            "$ref": "#/$defs/ResponseItem"
          },
          "title": "Items",
          "type": "array"
        },
        "total_items": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Total Items"
        },
        "page_count": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Page Count"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListResponsesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_form_title — Updates an existing form's title">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Unique ID for the form to update
    </ResponseField>

    <ResponseField name="title" type="string" required>
      New title for the typeform
    </ResponseField>

    <ResponseField name="workspace_href" type="string">
      URL of the workspace to move the form to
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateFormTitleOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="delete_image — Deletes an image from your Typeform account">
    ### Parameters

    <ResponseField name="image_id" type="string" required>
      Unique ID for the image to delete
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        }
      },
      "required": [
        "success"
      ],
      "title": "DeleteImageOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_image — Adds an image to your Typeform account">
    ### Parameters

    <ResponseField name="file_name" type="string" required>
      File name for the image
    </ResponseField>

    <ResponseField name="image" type="string">
      Base64 code for the image (without data URI prefix). Either image or url must be provided
    </ResponseField>

    <ResponseField name="url" type="string">
      URL of the image to add. Either image or url must be provided
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "src": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Src"
        },
        "file_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "File Name"
        },
        "width": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Width"
        },
        "height": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Height"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateImageOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_dropdown_multiple_choice_ranking — Update a dropdown, multiple choice, or ranking field's choices by adding a new choice">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Unique ID for the form
    </ResponseField>

    <ResponseField name="field_id" type="string" required>
      Unique ID for the dropdown, multiple choice, or ranking field
    </ResponseField>

    <ResponseField name="choice" type="string" required>
      The new choice label to add to the end of the existing choices
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "fields": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Fields",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateDropdownMultipleChoiceRankingOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* **Rate limit**: Typeform API allows up to 2 requests per second per OAuth token.
* **Responses endpoint**: Maximum 1000 responses per request (page\_size cap).
* **Error model**: Non-2xx responses are caught and returned as `success=False` + `error` rather than raising.

## Related integrations

<CardGroup cols={3}>
  <Card title="Cal.com" href="/integrations/tools/cal-com" />

  <Card title="Canva" href="/integrations/tools/canva" />

  <Card title="ConvertAPI" href="/integrations/tools/convertapi" />
</CardGroup>

## Links

* [Typeform](https://www.typeform.com)
