Webflow Collections API

CMS collection management endpoints for creating, listing, and deleting collections, and managing collection field configurations.

OpenAPI Specification

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


        Required scope | `cms:read`

        '
      tags:
        - Collections
        - Sites
      parameters:
        - name: site_id
          in: path
          description: Unique identifier for a Site
          example: 580e63e98c9a982ac9b8b741
          required: true
          schema:
            type: string
            format: objectid
            default:
      responses:
        '200':
          description: Request was successful
          content:
            application/json:
              schema:
                type: object
                example:
                  collections:
                    - id: 63692ab61fb2852f582ba8f5
                      displayName: Products
                      singularName: Product
                      slug: product
                      createdOn: '2019-06-12T13:35:14.238Z'
                      lastUpdated: '2022-11-17T15:08:50.480Z'
                    - id: 63692ab61fb2856e6a2ba8f6
                      displayName: Categories
                      singularName: Category
                      slug: category
                      createdOn: '2019-06-12T13:35:14.238Z'
                      lastUpdated: '2022-11-17T15:08:50.481Z'
                    - id: 63692ab61fb285a8562ba8f4
                      displayName: SKUs
                      singularName: SKU
                      slug: sku
                      createdOn: '2019-06-12T13:35:14.238Z'
                      lastUpdated: '2022-11-17T15:08:50.478Z'
                properties:
                  collections:
                    description: An array of Collections
                    type: array
                    items:
                      example:
                        id: 7f15043107e2fc95644e93807ee25dd6
                        displayName: Guide Entries
                        singularName: Guide Entry
                        fields:
                          - id: 5e2a1b3c4d5e6f7890a1b2c3
                            isEditable: true
                            isRequired: true
                            type: PlainText
                            slug: name
                            displayName: Entry Title
                            helpText: Name of the entry.
                            validations:
                          - id: 5e2a1b3c4d5e6f7890a1b2c4
                            isEditable: true
                            isRequired: true
                            type: PlainText
                            slug: slug
                            displayName: Slug
                            helpText: Slug of the entry.
                            validations:
                          - id: 6f7e8d9c0b1a2e3d4c5b6a7f
                            isEditable: true
                            isRequired: false
                            type: PlainText
                            slug: summary
                            displayName: Summary
                            helpText: A short summary of the entry.
                            validations:
                          - id: 1a2b3c4d5e6f7a8b9c0d1e2f
                            isEditable: true
                            isRequired: false
                            type: RichText
                            slug: entry-html
                            displayName: Entry HTML
                            helpText: The HTML content of the entry.
                            validations:
                          - id: 7e8d9c0b1a2e3d4c5b6a7f8e
                            isEditable: true
                            isRequired: false
                            type: Image
                            slug: illustration-image
                            displayName: Illustration Image
                            helpText: An image of the entry.
                            validations:
                          - id: 2f3e4d5c6b7a8e9d0c1b2a3f
                            isEditable: true
                            isRequired: false
                            type: VideoLink
                            slug: demonstration-video
                            displayName: Demonstration Video
                            helpText: A video of the entry.
                            validations:
                          - id: 8e9d0c1b2a3f4e5d6c7b8a9e
                            isEditable: true
                            isRequired: false
                            type: Link
                            slug: more-info-link
                            displayName: More Info Link
                            helpText: A link to more information about the entry.
                            validations:
                          - id: 3f4e5d6c7b8a9e0d1c2b3a4f
                            isEditable: true
                            isRequired: false
                            type: Number
                            slug: importance-level
                            displayName: Importance Level
                            helpText: The importance level of the entry.
                            validations:
                              format: integer
                              allowNegative: false
                              allowZero: false
                              minValue: 1
                              maxValue: 5
                          - id: 9e0d1c2b3a4f5e6d7c8b9a0e
                            isEditable: true
                            isRequired: false
                            type: Switch
                            slug: is-essential
                            displayName: Is Essential
                            helpText: Is this entry essential?
                            validations:
                          - id: 4f5e6d7c8b9a0e1d2c3b4a5f
                            isEditable: true
                            isRequired: false
                            type: Date
                            slug: first-mentioned
                            displayName: First Mentioned
                            helpText: Date of the first mention of the subject.
                            validations:
                          - id: 0e1d2c3b4a5f6e7d8c9b0a1e
                            isEditable: true
                            isRequired: false
                            type: Color
                            slug: towel-color
                            displayName: Towel Color
                            helpText: The color of the towel.
                            validations:
                          - id: 5f6e7d8c9b0a1e2d3c4b5a6f
                            isEditable: true
                            isRequired: false
                            type: Reference
                            slug: related-entry
                            displayName: Related Entry
                            helpText: A related entry.
                            validations:
                              collectionId: 7f15043107e2fc95644e93807ee25dd6
                          - id: 1e2d3c4b5a6f7e8d9c0b1a2f
                            isEditable: true
                            isRequired: false
                            type: MultiReference
                            slug: mentioned-in-entries
                            displayName: Mentioned In Entries
                            helpText: Entries that mention this subject.
                            validations:
                              collectionId: 7f15043107e2fc95644e93807ee25dd6
                          - id: 6f7e8d9c0b1a2e3d4c5b6a8f
                            isEditable: true
                            isRequired: false
                            type: Option
                            slug: item-type
                            displayName: Item Type
                            helpText: The type of item.
                            validations:
                              options:
                                - name: Survival Gear
                                  id: 66f6e966c9e1dc700a857ca3
                                - name: Gadget
                                  id: 66f6e966c9e1dc700a857ca4
                                - name: Other
                                  id: 66f6e966c9e1dc700a857ca5
                          - id: 2e3d4c5b6a7f8e9d0c1b2a4f
                            isEditable: true
                            isRequired: false
                            type: File
                            slug: guide-file
                            displayName: Guide File
                            helpText:
                            validations:
                          - id: 7f8e9d0c1b2a3f4e5d6c8b9e
                            isEditable: true
                            isRequired: false
                            type: Email
                            slug: contributor-email
                            displayName: Contributor Email
                            helpText:
                            validations:
                          - id: 3a4f5e6d7c8b9a0e1d2c4b5f
                            isEditable: true
                            isRequired: false
                            type: Phone
                            slug: emergency-contact
                            displayName: Emergency Contact
                            helpText:
                            validations:
                        slug: guide-entry
                        createdOn: '2024-04-12T12:42:00.000Z'
                        lastUpdated: '2024-04-12T12:42:00.000Z'
                      description: A collection object
                      type: object
                      required:
                        - id
                      properties:
                        id:
                          type: string
                          format: objectid
                          description: Unique identifier for a Collection
                          example: 562ac0395358780a1f5e6fbd
                        displayName:
                          type: string
                          example: Blog Posts
                          description: Name given to the Collection
                        singularName:
                          type: string
                          example: Blog Post
                          description: The name of one Item in Collection (e.g. ”Blog Post” if the Collection is called “Blog Posts”)
                        slug:
                          type: string
                          example: blog-posts
                          description: Slug of Collection in Site URL structure
                        createdOn:
                          type: string
                          format: date-time
                          example: '2022-12-07T16:51:37.571Z'
                          readOnly: true
                          description: The date the collection was created
                        lastUpdated:
                          type: string
                          format: date-time
                          example: '2022-12-07T16:51:37.571Z'
                          readOnly: true
                          description: The date the collection was last updated
        '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
      x-fern-sdk-method-name: create
      security:
        - OAuth2:
            - cms:write
      operationId: create-collection
      summary: Webflow Create Collection
      description: 'Create a Collection for a site with collection fields.


        Each collection includes the required _name_ and _slug_ fields, which are generated automatically. You can update the `displayName` of these fields, but the slug for them cannot be changed. Fields slugs are automatically converted to lowercase. Spaces in slugs are replaced with hyphens.


        Required scope | `cms:write`

        '
      tags:
        - Collections
        - Sites
      parameters:
        - name: site_id
          in: path
          description: Unique identifier for a Site
          example: 580e63e98c9a982ac9b8b741
          required: true
          schema:
            type: string
            format: objectid
            default:
      requestBody:
        description: Pass the Name of the collection, as well as the singular name of each item in the collection.
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - displayName
                - singularName
              properties:
                displayName:
                  type: string
                  description: Name of the collection. Each collection name must be distinct.
                singularName:
                  type: string
                  description: Singular name of each item.
                slug:
                  type: string
                  description: Part of a URL that identifier
                fields:
                  type: array
                  description: An array of custom fields to add to the collection
                  items:
                    description: Details about the field of a collection
                    examples:
                      StaticField:
                        id: 562ac0395358780a1f5e6fbc
                        isEditable: true
                        type: RichText
                        isRequired: false
                        displayName: Post Body
                        helpText: Add the body of your post here
                      OptionField:
                        id: 562ac0395358780a1f5e6fbc
                        isEditable: true
                        type: Option
                        isRequired: false
                        displayName: Post Type
                        helpText: Add the body of your post here
                        metadata:
                          options:
                            - name: Feature
                            - name: News
                            - name: Product Highlight
                      ReferenceField:
                        id: 562ac0395358780a1f5e6fbd
                        isEditable: true
                        type: Reference
                        isRequired: false
                        displayName: Author
                        helpText: Add the post author here
                        metadata:
                          collectionId: 63692ab61fb2852f582ba8f5
                    oneOf:
                      - type: object
                        x-fern-type-name: Static Field
                        title: Static Field
                        required:
                          - type
                          - displayName
                        properties:
                          id:
                            type: string
                            format: objectid
                            description: Unique identifier for a Field
                            example: 562ac0395358780a1f5e6fbd
                            readOnly: true
                          isEditable:
                            type: boolean
                            description: Define whether the field is editable
                            readOnly: true
                            example: true
                          isRequired:
                            type: boolean
                            description: define whether a field is required in a collection
                          type:
                            type: string
                            enum:
                              - Color
                              - DateTime
                              - Email
                              - File
                              - Image
                              - Link
                              - MultiImage
                              - Number
                              - Phone
                              - PlainText
                              - RichText
                              - Switch
                              - VideoLink
                            description: Choose these appropriate field type for your collection data
                          displayName:
                            type: string
                            description: The name of a field
                          helpText:
                            type: string
                            description: Additional text to help anyone filling out this field
                        example:
                          id: 562ac0395358780a1f5e6fbc
                          isEditable: true
                          type: RichText
                          isRequired: false
                          displayName: Post Body
                          helpText: Add the body of your post here
                      - type: object
                        x-fern-type-name: Option Field
                        title: Option F

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