Webflow Forms API

The Webflow Forms API provides endpoints for listing forms, retrieving form schemas, and managing form submissions including listing, modifying, and deleting submissions.

OpenAPI Specification

webflow-forms-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Webflow Forms API
  description: Webflow Data API v2 - Forms endpoints.
  version: 2.0.0
  contact:
    name: Webflow Developer Relations
    email: [email protected]
    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:
        - 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:
                            userVisible: true
                        - 589a331aa51e760df7ccb89d:
                            displayName: Email
                            type: Email
                            placeholder: Enter your email
                            userVisible: true
                      responseSettings:
                        redirectUrl: https://example.com
                        redirectMethod: GET
                        redirectAction:
                        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:
                        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:
                            userVisible: true
                          589a331aa51e760df7ccb89d:
                            displayName: Email
                            type: Email
                            placeholder: Enter your email
                            userVisible: true
                        responseSettings:
                          redirectUrl: https://example.com
                          redirectMethod: GET
                          redirectAction:
                          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:
                          userVisible: true
                      - 589a331aa51e760df7ccb89d:
                          displayName: Email
                          type: Email
                          placeholder: Enter your email
                          userVisible: true
                    responseSettings:
                      redirectUrl: https://example.com
                      redirectMethod: GET
                      redirectAction:
                      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:
                      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:
                  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:
                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:
                  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:
                details: []
        '403':
          description: Forbidden
          x-logErrorCode: 403
          content:
            application/json:
              schema:
                type: object
                example:
                  code: not_authorized
                  message: Request not authorized
                  externalReference:
                  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:
                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:
                  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:
                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:
                  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:
                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:
                  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:
                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:
                  details: []
                properties:
                  code:
                    type: string
                    description

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