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.
CMS item endpoints for creating, reading, updating, deleting, and publishing collection items, including support for bulk operations and live/staged item management.
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