Webflow CMS Items API

CMS item endpoints for creating, reading, updating, deleting, and publishing collection items, including support for bulk operations and live/staged item management.

OpenAPI Specification

webflow-items-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Webflow CMS Items API
  description: Webflow Data API v2 - CMS Items 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: Collections
    description: Collections are CMS collections of items.
  - name: Items
    description: Items are the individual e-commerce items in your Webflow site.
  - name: Sites
    description: Sites are the sites in your Webflow workspace.
paths:
  /collections/{collection_id}/items:
    get:
      x-fern-sdk-group-name:
        - collections
        - items
      x-fern-sdk-method-name: list-items
      security:
        - OAuth2:
            - cms:read
      operationId: list-collection-items
      summary: Webflow List Collection Items
      description: 'List of all Items within a Collection.


        Required scope | `CMS:read`

        '
      tags:
        - Collections
        - Items
        - Sites
      parameters:
        - name: collection_id
          in: path
          description: Unique identifier for a Collection
          example: 580e63fc8c9a982ac9b8b745
          required: true
          schema:
            type: string
            format: objectid
        - name: cmsLocaleId
          in: query
          allowEmptyValue: true
          description: Unique identifier for a CMS Locale. This UID is different from the Site locale identifier and is listed as `cmsLocaleId` in the Sites response. To query multiple locales, input a comma separated string.
          schema:
            type: string
        - 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
        - in: query
          allowEmptyValue: true
          name: limit
          example: 100
          description: 'Maximum number of records to be returned (max limit: 100)'
          required: false
          schema:
            type: integer
        - name: name
          in: query
          allowEmptyValue: true
          description: Filter by the exact name of the item(s)
          schema:
            type: string
        - name: slug
          in: query
          allowEmptyValue: true
          description: Filter by the exact slug of the item
          schema:
            type: string
        - name: lastPublished
          in: query
          allowEmptyValue: true
          description: Filter by the last published date of the item(s)
          schema:
            type: object
            properties:
              lte:
                type: string
                format: date-time
                example: '2024-04-22T16:00:31.000Z'
                description: Filter items last published before this date
              gte:
                type: string
                format: date-time
                example: '2024-04-19T16:00:31.000Z'
                description: Filter items last published after this date
          style: deepObject
          explode: true
          required: false
        - name: sortBy
          in: query
          allowEmptyValue: true
          description: Sort results by the provided value
          required: false
          schema:
            type: string
            enum:
              - lastPublished
              - name
              - slug
        - name: sortOrder
          in: query
          allowEmptyValue: true
          description: Sorts the results by asc or desc
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
      responses:
        '200':
          description: Request was successful
          content:
            application/json:
              schema:
                required:
                  - items
                  - pagination
                title: Collection Item List
                description: Results from collection items list
                example:
                  items:
                    - id: 62b720ef280c7a7a3be8cabe
                      lastPublished: '2022-06-30T13:35:20.878Z'
                      lastUpdated: '2022-06-25T14:51:27.809Z'
                      createdOn: '2022-06-25T14:51:27.809Z'
                      cmsLocaleId: 66f6e966c9e1dc700a857ca3
                      isArchived: false
                      isDraft: false
                      fieldData:
                        name: Senior Data Analyst
                        slug: senior-data-analyst
                        url: https://boards.greenhouse.io/webflow/jobs/26567701
                        department: Data
                    - id: 62c880ef281c7b7b4cf9dabc
                      lastPublished: '2023-04-15T10:25:18.123Z'
                      lastUpdated: '2023-04-10T11:45:30.567Z'
                      createdOn: '2023-04-10T11:45:30.567Z'
                      cmsLocaleId: 66f6e966c9e1dc700a857ca3
                      isArchived: false
                      isDraft: false
                      fieldData:
                        name: Product Manager
                        slug: product-manager
                        url: https://boards.greenhouse.io/webflow/jobs/31234567
                        department: Product
                  pagination:
                    limit: 25
                    offset: 0
                    total: 2
                properties:
                  items:
                    type: array
                    description: List of Items within the collection
                    items:
                      title: Collection Item
                      description: 'A Collection Item represents a single entry in your collection. Each item includes:


                        - **System metadata** - Automatically managed fields like IDs and timestamp <br/>

                        - **Status flags** - Controls for managing content state: `isDraft`, `isArchived `<br/>

                        - **Content fields** - Stored in `fieldData`. Each item needs a `name` and `slug`, and may include additional fields matching your collection''s schema definition.

                        '
                      required:
                        - id
                        - fieldData
                        - lastPublished
                        - lastUpdated
                        - createdOn
                      properties:
                        id:
                          type: string
                          readOnly: true
                          example: 580e64008c9a982ac9b8b754
                          description: Unique identifier for the Item
                        cmsLocaleId:
                          type: string
                          example: 653ad57de882f528b32e810e
                          description: Identifier for the locale of the CMS item
                        lastPublished:
                          type: string
                          format: date-string
                          readOnly: true
                          example: '2023-03-17T18:47:35.560Z'
                          description: The date the item was last published
                        lastUpdated:
                          type: string
                          format: date-string
                          readOnly: true
                          example: '2023-03-17T18:47:35.560Z'
                          description: The date the item was last updated
                        createdOn:
                          type: string
                          format: date-string
                          readOnly: true
                          example: '2023-03-17T18:47:35.560Z'
                          description: The date the item was created
                        isArchived:
                          type: boolean
                          default: false
                          description: Boolean determining if the Item is set to archived
                        isDraft:
                          type: boolean
                          default: false
                          description: Boolean determining if the Item is set to draft
                        fieldData:
                          type: object
                          required:
                            - name
                            - slug
                          properties:
                            name:
                              type: string
                              description: Name of the Item
                            slug:
                              type: string
                              description: 'URL structure of the Item in your site. Note: Updates to an item slug will break all links referencing the old slug.'
                          additionalProperties: true
                          example:
                            date: '2022-11-18T00:00:00.000Z'
                            featured: false
                            name: My new item
                            slug: my-new-item
                            color: '#db4b68'
                      example:
                        id: 42b720ef280c7a7a3be8cabe
                        cmsLocaleId: 653ad57de882f528b32e810e
                        lastPublished: '2022-11-29T16:22:43.159Z'
                        lastUpdated: '2022-11-17T17:19:43.282Z'
                        createdOn: '2022-11-17T17:11:57.148Z'
                        isArchived: false
                        isDraft: false
                        fieldData:
                          name: The Hitchhiker's Guide to the Galaxy
                          slug: hitchhikers-guide-to-the-galaxy
                          plain-text: Don't Panic.
                          rich-text: <h3>A Guide to Interstellar Travel</h3><p>A towel is about the most massively useful thing an interstellar hitchhiker can have. <strong>Don't forget yours!</strong></p>
                          main-image:
                            fileId: 62b720ef280c7a7a3be8cabe
                            url: /files/62b720ef280c7a7a3be8cabe_image.png
                          image-gallery:
                            - fileId: 62b720ef280c7a7a3be8cabd
                              url: /files/62b720ef280c7a7a3be8cabd_image.png
                            - fileId: 62b720ef280c7a7a3be8cabe
                              url: /files/62b720ef280c7a7a3be8cabe_image.png
                          intro-video: https://www.youtube.com/watch?v=aJ83KAggd-4
                          official-site: https://hitchhikers.fandom.com/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy
                          contact-email: [email protected]
                          support-phone: 424-242-4242
                          answer-to-everything: 42
                          release-date: '1979-10-12T00:00:00.000Z'
                          is-featured: true
                          brand-color: '#000000'
                          category: 62b720ef280c7a7a3be8cabf
                          author: 62b720ef280c7a7a3be8cab0
                          tags:
                            - 62b720ef280c7a7a3be8cab1
                            - 62b720ef280c7a7a3be8cab2
                          downloadable-asset:
                            fileId: 62b720ef280c7a7a3be8cab3
                            url: /files/62b720ef280c7a7a3be8cab3_document.pdf
                  pagination:
                    type: object
                    properties:
                      limit:
                        type: integer
                        default: 100
                        description: The limit specified in the request
                      offset:
                        type: integer
                        default: 0
                        description: The offset specified for pagination
                      total:
                        type: integer
                        description: Total number of items in the collection
        '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: []
        '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: []
        '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: 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: []
    post:
      x-fern-sdk-group-name:
        - collections
        - items
      x-fern-sdk-method-name: create-item
      security:
        - OAuth2:
            - cms:write
      operationId: create-item
      summary: Webflow Create Collection Item(s)
      description: 'Create Item(s) in a Collection.



        To create items across multiple locales, please use [this endpoint.](/data/reference/cms/collection-items/staged-items/create-items)


        Required scope | `CMS:write`

        '
      tags:
        - Collections
        - Items
        - Sites
      parameters:
        - name: collection_id
          in: path
          description: Unique identifier for a Collection
          example: 580e63fc8c9a982ac9b8b745
          required: true
          schema:
            type: string
            format: objectid
        - name: skipInvalidFiles
          in: query
          allowEmptyValue: true
          description: When true, invalid files are skipped and processing continues. When false, the entire request fails if any file is invalid.
          schema:
            type: boolean
            default: true
          example: true
          required: false
      requestBody:
        description: Details of the item(s) to create
        content:
          application/json:
            schema:
              oneOf:
                - x-fern-type-name: Single Item
                  title: Single Item
                  description: 'A Collection Item represents a single entry in your collection. Each item includes:


                    - **System metadata** - Automatically managed fields like IDs and timestamp <br/>

                    - **Status flags** - Controls for managing content state: `isDraft`, `isArchived `<br/>

                    - **Content fields** - Stored in `fieldData`. Each item needs a `name` and `slug`, and may include additional fields matching your collection''s schema definition.

                    '
                  type: object
                  required:
                    - fieldData
                  properties:
                    id:
                      type: string
                      readOnly: true
                      example: 580e64008c9a982ac9b8b754
                      description: Unique identifier for the Item
                    cmsLocaleId:
                      type: string
                      example: 653ad57de882f528b32e810e
                      description: Identifier for the locale of the CMS item
                    lastPublished:
                      type: string
                      format: date-string
                      readOnly: true
                      example: '2023-03-17T18:47:35.560Z'
                      description: The date the item was last published
                    lastUpdated:
                      type: string
                      format: date-string
                      readOnly: true
                      example: '2023-03-17T18:47:35.560Z'
                      description: The date the item was last updated
                    createdOn:
                      type: string
                      format: date-string
                      readOnly: true
                      example: '2023-03-17T18:47:35.560Z'
                      description: The date the item was created
                    isArchived:
                      type: boolean
                      default: false
                      description: Boolean determining if the Item is in an archived state.
                    isDraft:
                      type: boolean
                      default: true
                      example: true
                      description: Boolean determining if the Item is in a draft state.
                    fieldData:
                      type: object
                      required:
                        - name
                        - slug
                      properties:
                        name:
                          type: string
                          description: Name of the Item
                        slug:
                          type: string
                          description: 'URL structure of the Item in your site. Note: Updates to an item slug will break all links referencing the old slug.'
                      additionalProperties: true
                      example:
                        date: '2022-11-18T00:00:00.000Z'
                        featured: false
                        name: My new item
                        slug: my-new-item
                        color: '#db4b68'
                  example:
                    isArchived: false
                    isDraft: false
                    fieldData:
                      name: The Hitchhiker's Guide to the Galaxy
                      slug: hitchhikers-guide-to-the-galaxy
                      plain-text: Don't Panic.
                      rich-text: <h3>A Guide to Interstellar Travel</h3><p>A towel is about the most massively useful thing an interstellar hitchhiker can have. <strong>Don't forget yours!</strong></p>
                      main-image:
                        fileId: 62b720ef280c7a7a3be8cabe
                        url: /files/62b720ef280c7a7a3be8cabe_image.png
                      image-gallery:
                        - fileId: 62b720ef280c7a7a3be8cabd
                          url: /files/62b720ef280c7a7a3be8cabd_image.png
                        - fileId: 62b720ef280c7a7a3be8cabe
                          url: /files/62b720ef280c7a7a3be8cabe_image.pn

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