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.
The Webflow Forms API provides endpoints for listing forms, retrieving form schemas, and managing form submissions including listing, modifying, and deleting submissions.
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