Webflow Forms API

Forms are forms that are created on your Webflow site.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/webflow-forms-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

webflow-forms-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Webflow Assets Asset Folders Forms API
  description: Webflow Data API v2 - Assets endpoints.
  version: 2.0.0
  contact:
    name: Webflow Developer Relations
    email: developers@webflow.com
    url: https://developers.webflow.com
  termsOfService: https://webflow.com/legal/terms
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
- url: https://api.webflow.com/v2
  description: Webflow API v2
  x-fern-server-name: Data API
security:
- OAuth2: []
- ApiKey: []
tags:
- name: Forms
  description: Forms are forms that are created on your Webflow site.
paths:
  /sites/{site_id}/forms:
    get:
      x-fern-sdk-group-name: forms
      x-fern-sdk-method-name: list
      security:
      - OAuth2:
        - forms:read
      operationId: list-forms
      summary: Webflow List Forms
      description: 'List forms for a given site.


        Required scope | `forms:read`

        '
      tags:
      - Forms
      parameters:
      - name: site_id
        in: path
        description: Unique identifier for a Site
        example: 580e63e98c9a982ac9b8b741
        required: true
        schema:
          type: string
          format: objectid
          default: null
      - in: query
        allowEmptyValue: true
        name: limit
        example: 100
        description: 'Maximum number of records to be returned (max limit: 100)'
        required: false
        schema:
          type: integer
      - in: query
        example: 0
        allowEmptyValue: true
        name: offset
        description: Offset used for pagination if the results have more than limit records
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: Request was successful
          content:
            application/json:
              schema:
                required:
                - forms
                - pagination
                description: A list of forms
                example:
                  forms:
                  - displayName: Email Form
                    createdOn: '2016-10-24T19:41:29.156Z'
                    lastUpdated: '2016-10-24T19:43:17.271Z'
                    fields:
                    - 660d5bcc9c0772150459dfb1:
                        displayName: Name
                        type: Plain
                        placeholder: null
                        userVisible: true
                    - 589a331aa51e760df7ccb89d:
                        displayName: Email
                        type: Email
                        placeholder: Enter your email
                        userVisible: true
                    responseSettings:
                      redirectUrl: https://example.com
                      redirectMethod: GET
                      redirectAction: null
                      sendEmailConfirmation: true
                    id: 589a331aa51e760df7ccb89e
                    siteId: 580e63e98c9a982ac9b8b741
                    siteDomainId: 6419db964a9c436a4baf6248
                    pageId: 6419db964a9c43f6a3af6348
                    pageName: Home
                    workspaceId: 580e63fc8c9a982ac9b8b744
                  - displayName: Name Form
                    createdOn: '2016-10-24T19:41:29.156Z'
                    lastUpdated: '2016-10-24T19:43:17.271Z'
                    fields:
                    - 589a331aa51e760df7ccb89d:
                        displayName: Name
                        type: Plain
                        placeholder: Enter your name
                        userVisible: true
                    responseSettings:
                      redirectUrl: https://example.com
                      redirectMethod: GET
                      redirectAction: null
                      sendEmailConfirmation: false
                    id: 580ff8d7ba3e45ba9fe588e9
                    siteId: 580e63e98c9a982ac9b8b741
                    siteDomainId: 6419db964a9c436a4baf6248
                    pageId: 6419db964a9c43f6a3af6348
                    pageName: Home
                    formElementId: 4e038d2c-6a1e-4953-7be9-a59a2b453177
                    workspaceId: 580e63fc8c9a982ac9b8b744
                  pagination:
                    limit: 25
                    offset: 0
                    total: 2
                properties:
                  forms:
                    type: array
                    items:
                      example:
                        displayName: Email Form
                        createdOn: '2016-10-24T19:41:29.156Z'
                        lastUpdated: '2016-10-24T19:43:17.271Z'
                        fields:
                          660d5bcc9c0772150459dfb1:
                            displayName: Name
                            type: Plain
                            placeholder: null
                            userVisible: true
                          589a331aa51e760df7ccb89d:
                            displayName: Email
                            type: Email
                            placeholder: Enter your email
                            userVisible: true
                        responseSettings:
                          redirectUrl: https://example.com
                          redirectMethod: GET
                          redirectAction: null
                          sendEmailConfirmation: true
                        id: 589a331aa51e760df7ccb89e
                        siteId: 580e63e98c9a982ac9b8b741
                        siteDomainId: 6419db964a9c436a4baf6248
                        pageId: 6419db964a9c43f6a3af6348
                        pageName: Home
                        formElementId: 4e038d2c-6a1e-4953-7be9-a59a2b453177
                        workspaceId: 580e63fc8c9a982ac9b8b744
                      description: A Webflow form
                      properties:
                        displayName:
                          type: string
                          description: The Form name displayed on the site
                          example: Galactic Intake Form
                        createdOn:
                          type: string
                          format: date-time
                          description: Date that the Form was created on
                          example: '2018-10-04T15:21:02.042Z'
                        lastUpdated:
                          type: string
                          format: date-time
                          description: Date that the Form was last updated on
                          example: '2018-10-04T15:21:02.042Z'
                        fields:
                          description: A collection of form field objects
                          type: object
                          maxProperties: 1
                          additionalProperties:
                            description: An object containing field info for a specific fieldID.
                            type: object
                            properties:
                              displayName:
                                type: string
                                description: The field name displayed on the site
                                example: Email
                              type:
                                type: string
                                description: The field type
                                enum:
                                - Plain
                                - Email
                                - Password
                                - Phone
                                - Number
                                example: Email
                              placeholder:
                                type: string
                                description: The placeholder text for the field
                                nullable: true
                                example: Enter your email
                              userVisible:
                                type: boolean
                                description: Whether the field is visible to the user
                                example: true
                        responseSettings:
                          description: Settings for form responses
                          type: object
                          properties:
                            redirectUrl:
                              type: string
                              description: The url or path to redirect the user to after form submission
                              example: /thank-you
                            redirectMethod:
                              type: string
                              description: The HTTP request method to use for the redirectUrl (eg. POST or GET)
                              nullable: true
                              example: GET
                            redirectAction:
                              type: string
                              description: The action to take after form submission
                              nullable: true
                              example: POST https://example.com
                            sendEmailConfirmation:
                              type: boolean
                              description: Whether to send an email confirmation to the user
                              example: true
                        id:
                          type: string
                          format: objectid
                          description: The unique ID for the Form
                          example: 545bbecb7bdd6769632504a7
                        siteId:
                          type: string
                          format: objectid
                          description: The unique ID of the Site the Form belongs to
                          example: 545bbecb7bdd6769632504a7
                        siteDomainId:
                          type: string
                          format: objectid
                          description: The unique ID corresponding to the site's Domain name
                          example: 6419db964a9c436a4baf6247
                        pageId:
                          type: string
                          format: objectid
                          description: The unique ID for the Page on which the Form is placed
                          example: 6419db964a9c43f6a3af6243
                        pageName:
                          type: string
                          description: The user-visible name of the Page where the Form is placed
                          example: Home
                        formElementId:
                          type: string
                          nullable: true
                          description: The unique ID of the Form element
                          example: 4e038d2c-6a1e-4953-7be9-a59a2b453177
                        workspaceId:
                          type: string
                          format: objectid
                          description: The unique ID of the Workspace the Site belongs to
                          example: 580e63fc8c9a982ac9b8b744
                  pagination:
                    description: Pagination object
                    type: object
                    required:
                    - limit
                    - offset
                    - total
                    properties:
                      limit:
                        type: integer
                        description: The limit used for pagination
                        example: 100
                        readOnly: true
                      offset:
                        type: integer
                        description: The offset used for pagination
                        example: 0
                        readOnly: true
                      total:
                        type: integer
                        description: The total number of records
                        example: 100
                        readOnly: true
              example:
                forms:
                - displayName: Email Form
                  createdOn: '2016-10-24T19:41:29.156Z'
                  lastUpdated: '2016-10-24T19:43:17.271Z'
                  fields:
                  - 660d5bcc9c0772150459dfb1:
                      displayName: Name
                      type: Plain
                      placeholder: null
                      userVisible: true
                  - 589a331aa51e760df7ccb89d:
                      displayName: Email
                      type: Email
                      placeholder: Enter your email
                      userVisible: true
                  responseSettings:
                    redirectUrl: https://example.com
                    redirectMethod: GET
                    redirectAction: null
                    sendEmailConfirmation: true
                  id: 589a331aa51e760df7ccb89e
                  siteId: 580e63e98c9a982ac9b8b741
                  siteDomainId: 6419db964a9c436a4baf6248
                  pageId: 6419db964a9c43f6a3af6348
                  pageName: Home
                  workspaceId: 580e63fc8c9a982ac9b8b744
                - displayName: Name Form
                  createdOn: '2016-10-24T19:41:29.156Z'
                  lastUpdated: '2016-10-24T19:43:17.271Z'
                  fields:
                  - 589a331aa51e760df7ccb89d:
                      displayName: Name
                      type: Plain
                      placeholder: Enter your name
                      userVisible: true
                  responseSettings:
                    redirectUrl: https://example.com
                    redirectMethod: GET
                    redirectAction: null
                    sendEmailConfirmation: false
                  id: 580ff8d7ba3e45ba9fe588e9
                  siteId: 580e63e98c9a982ac9b8b741
                  siteDomainId: 6419db964a9c436a4baf6248
                  pageId: 6419db964a9c43f6a3af6348
                  pageName: Home
                  formElementId: 4e038d2c-6a1e-4953-7be9-a59a2b453177
                  workspaceId: 580e63fc8c9a982ac9b8b744
                pagination:
                  limit: 25
                  offset: 0
                  total: 2
        '400':
          description: Request body was incorrectly formatted.
          x-logErrorCode: 400
          content:
            application/json:
              schema:
                type: object
                example:
                  code: not_authorized
                  message: Request not authorized
                  externalReference: null
                  details: []
                properties:
                  code:
                    type: string
                    description: Error code
                    example: not_authorized
                    enum:
                    - bad_request
                    - collection_not_found
                    - conflict
                    - duplicate_collection
                    - duplicate_user_email
                    - ecommerce_not_enabled
                    - forbidden
                    - forms_require_republish
                    - incompatible_webhook_filter
                    - internal_error
                    - invalid_auth_version
                    - invalid_credentials
                    - invalid_domain
                    - invalid_user_email
                    - item_not_found
                    - missing_scopes
                    - no_domains
                    - not_authorized
                    - not_enterprise_plan_site
                    - not_enterprise_plan_workspace
                    - order_not_found
                    - resource_not_found
                    - too_many_requests
                    - unsupported_version
                    - unsupported_webhook_trigger_type
                    - user_limit_reached
                    - user_not_found
                    - users_not_enabled
                    - validation_error
                  message:
                    type: string
                    description: Error message
                    example: Request not authorized
                  externalReference:
                    type: string
                    description: Link to more information
                    example: ''
                  details:
                    type: array
                    description: Array of errors
                    items:
                    - type: string
                      example: Invalid email address
                      description: Error message
                    - type: object
                      example:
                        field: email
                        message: Invalid email address
                      description: Error message
                    example: []
              example:
                code: bad_request
                message: 'Bad Request: Request is malformed'
                externalReference: null
                details: []
        '401':
          description: Provided access token is invalid or does not have access to requested resource
          x-logErrorCode: 401
          content:
            application/json:
              schema:
                type: object
                example:
                  code: not_authorized
                  message: Request not authorized
                  externalReference: null
                  details: []
                properties:
                  code:
                    type: string
                    description: Error code
                    example: not_authorized
                    enum:
                    - bad_request
                    - collection_not_found
                    - conflict
                    - duplicate_collection
                    - duplicate_user_email
                    - ecommerce_not_enabled
                    - forbidden
                    - forms_require_republish
                    - incompatible_webhook_filter
                    - internal_error
                    - invalid_auth_version
                    - invalid_credentials
                    - invalid_domain
                    - invalid_user_email
                    - item_not_found
                    - missing_scopes
                    - no_domains
                    - not_authorized
                    - not_enterprise_plan_site
                    - not_enterprise_plan_workspace
                    - order_not_found
                    - resource_not_found
                    - too_many_requests
                    - unsupported_version
                    - unsupported_webhook_trigger_type
                    - user_limit_reached
                    - user_not_found
                    - users_not_enabled
                    - validation_error
                  message:
                    type: string
                    description: Error message
                    example: Request not authorized
                  externalReference:
                    type: string
                    description: Link to more information
                    example: ''
                  details:
                    type: array
                    description: Array of errors
                    items:
                    - type: string
                      example: Invalid email address
                      description: Error message
                    - type: object
                      example:
                        field: email
                        message: Invalid email address
                      description: Error message
                    example: []
              example:
                code: not_authorized
                message: Request not authorized
                externalReference: null
                details: []
        '403':
          description: Forbidden
          x-logErrorCode: 403
          content:
            application/json:
              schema:
                type: object
                example:
                  code: not_authorized
                  message: Request not authorized
                  externalReference: null
                  details: []
                properties:
                  code:
                    type: string
                    description: Error code
                    example: not_authorized
                    enum:
                    - bad_request
                    - collection_not_found
                    - conflict
                    - duplicate_collection
                    - duplicate_user_email
                    - ecommerce_not_enabled
                    - forbidden
                    - forms_require_republish
                    - incompatible_webhook_filter
                    - internal_error
                    - invalid_auth_version
                    - invalid_credentials
                    - invalid_domain
                    - invalid_user_email
                    - item_not_found
                    - missing_scopes
                    - no_domains
                    - not_authorized
                    - not_enterprise_plan_site
                    - not_enterprise_plan_workspace
                    - order_not_found
                    - resource_not_found
                    - too_many_requests
                    - unsupported_version
                    - unsupported_webhook_trigger_type
                    - user_limit_reached
                    - user_not_found
                    - users_not_enabled
                    - validation_error
                  message:
                    type: string
                    description: Error message
                    example: Request not authorized
                  externalReference:
                    type: string
                    description: Link to more information
                    example: ''
                  details:
                    type: array
                    description: Array of errors
                    items:
                    - type: string
                      example: Invalid email address
                      description: Error message
                    - type: object
                      example:
                        field: email
                        message: Invalid email address
                      description: Error message
                    example: []
              example:
                code: forbidden
                message: User is not authorized to perform this action
                externalReference: null
                details: []
        '404':
          description: Requested resource not found
          x-logErrorCode: 404
          content:
            application/json:
              schema:
                type: object
                example:
                  code: not_authorized
                  message: Request not authorized
                  externalReference: null
                  details: []
                properties:
                  code:
                    type: string
                    description: Error code
                    example: not_authorized
                    enum:
                    - bad_request
                    - collection_not_found
                    - conflict
                    - duplicate_collection
                    - duplicate_user_email
                    - ecommerce_not_enabled
                    - forbidden
                    - forms_require_republish
                    - incompatible_webhook_filter
                    - internal_error
                    - invalid_auth_version
                    - invalid_credentials
                    - invalid_domain
                    - invalid_user_email
                    - item_not_found
                    - missing_scopes
                    - no_domains
                    - not_authorized
                    - not_enterprise_plan_site
                    - not_enterprise_plan_workspace
                    - order_not_found
                    - resource_not_found
                    - too_many_requests
                    - unsupported_version
                    - unsupported_webhook_trigger_type
                    - user_limit_reached
                    - user_not_found
                    - users_not_enabled
                    - validation_error
                  message:
                    type: string
                    description: Error message
                    example: Request not authorized
                  externalReference:
                    type: string
                    description: Link to more information
                    example: ''
                  details:
                    type: array
                    description: Array of errors
                    items:
                    - type: string
                      example: Invalid email address
                      description: Error message
                    - type: object
                      example:
                        field: email
                        message: Invalid email address
                      description: Error message
                    example: []
              example:
                code: resource_not_found
                message: 'Requested resource not found: The site cannot be found'
                externalReference: null
                details: []
        '409':
          description: To access this feature, the site needs to be republished.
          x-logErrorCode: 409
          content:
            application/json:
              schema:
                type: object
                example:
                  code: not_authorized
                  message: Request not authorized
                  externalReference: null
                  details: []
                properties:
                  code:
                    type: string
                    description: Error code
                    example: not_authorized
                    enum:
                    - bad_request
                    - collection_not_found
                    - conflict
                    - duplicate_collection
                    - duplicate_user_email
                    - ecommerce_not_enabled
                    - forbidden
                    - forms_require_republish
                    - incompatible_webhook_filter
                    - internal_error
                    - invalid_auth_version
                    - invalid_credentials
                    - invalid_domain
                    - invalid_user_email
                    - item_not_found
                    - missing_scopes
                    - no_domains
                    - not_authorized
                    - not_enterprise_plan_site
                    - not_enterprise_plan_workspace
                    - order_not_found
                    - resource_not_found
                    - too_many_requests
                    - unsupported_version
                    - unsupported_webhook_trigger_type
                    - user_limit_reached
                    - user_not_found
                    - users_not_enabled
                    - validation_error
                  message:
                    type: string
                    description: Error message
                    example: Request not authorized
                  externalReference:
                    type: string
                    description: Link to more information
                    example: ''
                  details:
                    type: array
                    description: Array of errors
                    items:
                    - type: string
                      example: Invalid email address
                      description: Error message
                    - type: object
                      example:
                        field: email
                        message: Invalid email address
                      description: Error message
                    example: []
              example:
                code: forms_require_republish
                message: To access this feature, the site needs to be republished.
                externalReference: null
                details: []
        '429':
          description: The rate limit of the provided access_token has been reached. Please have your application respect the X-RateLimit-Remaining header we include on API responses.
          x-logErrorCode: 429
          headers:
            X-RateLimit-Remaining:
              description: Contains the number of available requests remaining in the current minute
              schema:
                type: number
            X-RateLimit-Limit:
              description: Contains your current overall rate limit per minute
              schema:
                type: number
          content:
            application/json:
              schema:
                type: object
                example:
                  code: not_authorized
                  message: Request not authorized
                  externalReference: null
                  details: []
                properties:
                  code:
                    type: string
                    description: Error code
                    example: not_authorized
                    enum:
                    - bad_request
                    - collection_not_found
                    - conflict
                    - duplicate_collection
                    - duplicate_user_email
                    - ecommerce_not_enabled
                    - forbidden
                    - forms_require_republish
                    - incompatible_webhook_filter
                    - internal_error
                    - invalid_auth_version
                    - invalid_credentials
                    - invalid_domain
                    - invalid_user_email
                    - item_not_found
                    - missing_scopes
                    - no_domains
                    - not_authorized
                    - not_enterprise_plan_site
                    - not_enterprise_plan_workspace
                    - order_not_found
                    - resource_not_found
                    - too_many_requests
                    - unsupported_version
                    - unsupported_webhook_trigger_type
                    - user_limit_reached
                    - user_not_found
                    - users_not_enabled
                    - validation_error
                  message:
                    type: string
                    description: Error message
                    example: Request not authorized
                  externalReference:
                    type: string
                    description: Link to more information
                    example: ''
                  details:
                    type: array
                    description: Array of errors
                    items:
                    - type: string
                      example: Invalid email address
                      description: Error message
                    - type: object
                      example:
                        field: email
                        message: Invalid email address
                      description: Error message
                    example: []
              example:
                code: too_many_requests
                message: Too many requests
                externalReference: null
                details: []
        '500':
          description: We had a problem with our server. Try again later.
          content:
            application/json:
              x-logErrorCode: 500
              schema:
                type: object
                example:
                  code: not_authorized
                  message: Request not authorized
                  externalReference: null
                  details: []
                properties:
                  code:
                    type: string
                    description: Error code
                    example: not_authorized
                    enum:
                    - bad_request
                    - collection_not_found
                    - conflict
                    - duplicate_collection
                    - duplicate_user_email
                    - ecommerce_not_enabled
                    - forbidden
                    - forms_require_republish
                    - incompatible_webhook_filter
                    - internal_error
                    - invalid_auth_version
                    - invalid_credentials
                    - invalid_domain
                    - invalid_user_email

# --- truncated at 32 KB (252 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/webflow/refs/heads/main/openapi/webflow-forms-api-openapi.yml