Webflow Data API

The Webflow Data API is a comprehensive RESTful API providing programmatic access to Webflow sites, workspaces, CMS collections and items, ecommerce products and orders, assets, users, forms, and webhooks. All V2 endpoints use https://api.webflow.com/v2 as the base URL and require OAuth 2.0 or API key authentication.

OpenAPI Specification

webflow-data-api-openapi.yml Raw ↑
openapi: 3.1.0

info:
  version: 2.0.0
  title: Webflow Data API
  description: Webflow's Data API v2
  termsOfService: https://webflow.com/legal/terms
  contact:
    name: Webflow Developer Relations
    email: [email protected]
    url: https://developers.webflow.com
  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: Asset Folders
  - name: Assets
    description: Assets are files that are uploaded to your Webflow account.
  - name: Collections
    description: Collections are CMS collections of items.
  - name: Comments
  - name: Components
  - name: Custom Code
    description: Custom code is JavaScript that is added to your Webflow site.
  - name: Custom Code - Pages
    description: Custom code for pages.
  - name: Custom Code - Sites
    description: Custom code for sites.
  - name: Forms
    description: Forms are forms that are created on your Webflow site.
  - name: Inventory
    description: Inventory is the stock of e-commerce items in your Webflow site.
  - name: Items
    description: Items are the individual e-commerce items in your Webflow site.
  - name: Meta
    description: Meta is the metadata for your Webflow API token.
  - name: Orders
    description: Orders are the orders for your Webflow site.
  - name: Pages
    description: Pages are the pages in your Webflow site.
  - name: Products & SKUs
    description: Products & SKUs are the products and SKUs in your Webflow e-commerce site.
  - name: Registered Scripts
  - name: Settings
    description: Settings are the e-commerce settings for your Webflow site.
  - name: Site Activity
  - name: Site Administration
  - name: Sites
    description: Sites are the sites in your Webflow workspace.
  - name: Webhooks
    description: Webhooks are the webhooks in your Webflow site.

  - name: Workspce Audit Logs
paths:
  /token/authorized_by:
    get:
      x-fern-sdk-group-name: token
      x-fern-sdk-method-name: authorized-by
      security:
        - OAuth2:
            - authorized_user:read
      operationId: authorized_by
      summary: Webflow Get Authorization User Info
      description: |
        Information about the Authorized User

        Required Scope | `authorized_user:read`
      tags:
        - Meta
      responses:
        '200':
          description: Request was successful
          content:
            application/json:
              schema:
                example:
                  id: 545bbecb7bdd6769632504a7
                  email: [email protected]
                  firstName: Some
                  lastName: One
                properties:
                  id:
                    type: string
                    format: objectid
                    description: The unique ID of the user
                    example: 545bbecb7bdd6769632504a7
                  email:
                    type: string
                    format: email
                    description: The user's email address
                    example: [email protected]
                  firstName:
                    type: string
                    description: The user's first name
                    example: Some
                  lastName:
                    type: string
                    description: The user's last name
                    example: One
        '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: Provided access token is valid, but is missing the required scopes.
          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: missing_scopes
                message: 'OAuthForbidden: You are missing the following scopes - components:write'
                externalReference:
                details: []
        4XX:
          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: []
        5XX:
          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: 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: internal_error
                message: An Internal Error occurred
                externalReference:
                details: []
  /token/introspect:
    get:
      x-fern-sdk-group-name: token
      x-fern-sdk-method-name: introspect
      operationId: introspect
      summary: Webflow Get Authorization Info
      description: |
        Information about the authorization token

        <Note>Access to this endpoint requires a bearer token from a [Data Client App](/data/docs/getting-started-data-clients).</Note>
      tags:
        - Meta
      responses:
        '200':
          description: Request was successful
          content:
            application/json:
              schema:
                example:
                  authorization:
                    id: 55818d58616600637b9a5786
                    createdOn: '2016-10-03T23:12:00.755Z'
                    lastUsed: '2016-10-10T21:41:12.736Z'
                    grantType: authorization_code
                    rateLimit: 60
                    scope: assets:read,assets:write
                    authorizedTo:
                      siteIds:
                        - 62f3b1f7eafac55d0c64ef91
                      workspaceIds:
                        - 52f3b1f7eafac55d0c64ef91
                      userIds:
                        - 545bbecb7bdd6769632504a7
                  application:
                    id: 55131cd036c09f7d07883dfc
                    description: My Amazing App
                    homepage: https://webflow.com
                    displayName: My Amazing App
                properties:
                  authorization:
                    type: object
                    description: The Authorization object
                    properties:
                      id:
                        type: string
                        format: objectid
                        example: 55818d58616600637b9a5786
                        description: The unique ID of the Authorization instance
                      createdOn:
                        type: string
                        format: date-time
                        example: '2016-10-03T23:12:00.755Z'
                        description: The date the Authorization was created
                      lastUsed:
                        type: string
                        format: date-time
                        example: '2016-10-10T21:41:12.736Z'
                        description: The date the Authorization was last used
                      grantType:
                        type: string
                        example: authorization_code
                        description: The grant type of the Authorization
                      rateLimit:
                        type: integer
                        format: int32
                        example: 60
                        description: The default rate limit for the Authorization (requests/min)
                      scope:
                        type: string
                        example: custom_code:read sites:read
                        description: Comma separted list of OAuth scopes corresponding to the Authorization
                      authorizedTo:
                        type: object
                        example:
                          siteIds:
                            - 62f3b1f7eafac55d0c64ef91
                          workspaceIds:
                            - ' 72f3b1f7eafac55d0c64ef91'
                          userIds:
                            - 545bbecb7bdd6769632504a7
                        properties:
                          siteIds:
                            type: array
                            description: Array of Sites this app is authorized to
                            example:
                              - 62f3b1f7eafac55d0c64ef91
                          workspaceIds:
                            type: array
                            description: Array of Workspaces this app is authorized to
                            example:
                              - 72f3b1f7eafac55d0c64ef91
                          userIds:
                            type: array
                            description: Array of Users this app is authorized to
                            example:
                              - 545bbecb7bdd6769632504a7
                  application:
                    type: object
                    properties:
                      id:
                        type: string
                        format: objectid
                        example: 55131cd036c09f7d07883dfc
                        description: Unique identifier for the Application
                      description:
                        type: string
                        example: OAuth Testing Application
                        description: Application description provided by the developer
                      homepage:
                        type: string
                        format: uri
                        example: https://webflow.com
                        description: Application homepage URL provided by the developer
                      displayName:
                        type: string
                        example: Test App
                        description: Application name provided by the developer
        '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: []
        4XX:
          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: []
        5XX:
          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: 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: internal_error
                message: An Internal Error occurred
                externalReference:
                details: []
  /workspaces/{workspace_id}/sites:
    post:
      x-fern-sdk-group-name: sites
      x-fern-sdk-method-name: create
      security:
        - OAuth2:
            - sites:write
      operationId: create-site
      summary: Webflow Create Site
      description: |
        Create a site.

        <Warning title="Enterprise Only">This endpoint requires an Enterprise workspace.</Warning>

        Required scope | `workspace:write`
      tags:
        - Sites
      parameters:
        - name: workspace_id
          in: path
          description: Unique identifier for a Workspace
          example: 580e63e98c9a982ac9b8b741
          required: true
          schema:
            type: string
            format: objectid
            default:
      requestBody:
        content:
          application/json:
            schema:
              required:
                - name
              properties:
                name:
                  type: string
                  example: The Hitchhiker's Guide to the Galaxy
                  description: The name of the site
                templateName:
                  type: string
                  example: Megadodo Publications - Guide Template
                  description: The workspace or marketplace template to use
                parentFolderId:
                  type: string
                  nullable: true
                  example: a9c420f9347c2139b248e913
                  description: MegaDodo Publications - Potential Book Ideas
      responses:
        '201':
          description: Request was successful
          content:
            application/json:
              schema:
                required:
                  - id
                  - workspaceId
                  - createdOn
                  - displayName
                  - shortName
                  - templateName
                  - lastPublished
                  - lastUpdated
                  - previewUrl
                  - timeZone
                  - dataCollectionEnabled
                  - dataCollectionType
                example:
                  id: 42e98c9a982ac9b8b742
                  workspaceId: 42e63e98c9a982ac9b8b742
                  displayName: The Hitchhiker's Guide to the Galaxy
                  shortName: hitchhikers-guide
                  previewUrl: https://screenshots.webflow.com/sites/6258612d1ee792848f805dcf/20231219211811_d5990556c743f33b7071300a03bf67e6.png
                  timeZone: Magrathea/FactoryFloor
                  createdOn: '1979-10-12T12:00:00.000Z'
                  lastUpdated: '2023-04-02T12:42:00.000Z'
                  lastPublished: '2023-04-02T12:42:00.000Z'
                  parentFolderId: 1as2d3f4g5h6j7k8l9z0x1c2v3b4n5m6
                  customDomains:
                    - id: 589a331aa51e760df7ccb89d
                      url: hitchhikersguide.galaxy
                    - id: 589a331aa51e760df7ccb89e
                      url: heartofgold.spaceship
                  locales:
                    primary:
                      id: 653fd9af6a07fc9cfd7a5e57
                      cmsLocaleId: 653ad57de882f528b32e810e
                      enabled: false
                      displayName: English (United States)
                      displayImageId:
                      redirect: true
                      subdirectory: ''
                      tag: en-US
                    secondary:
                      - id: 653fd9af6a07fc9cfd7a5e56
                        cmsLocaleId: 653fd9af6a07fc9cfd7a5e5d
                        enabled: true
                        displayName: French (France)
                        displayImageId:
                        subdirectory: fr-fr
                        tag: fr-FR
                      - id: 654112a3a525b2739d97664c
                        cmsLocaleId: 654112a3a525b2739d97664f
                        enabled: true
                        displayName: Spanish (Mexico)
                        displ

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