Webflow Sites API

Sites are the sites in your Webflow workspace.

Operations 16

POST /workspaces/{workspace_id}/sites Webflow Create Site #
GET /sites Webflow List Sites #
GET /sites/{site_id} Webflow Get Site #
PATCH /sites/{site_id} Webflow Update Site #
DELETE /sites/{site_id} Webflow Delete Site #
GET /sites/{site_id}/custom_domains Webflow Get Custom Domains #
POST /sites/{site_id}/publish Webflow Publish Site #
GET /sites/{site_id}/redirects Webflow Get 301 redirects #
POST /sites/{site_id}/redirects Webflow Create a 301 redirect #
PATCH /sites/{site_id}/redirects/{redirect_id} Webflow Update 301 redirect #
DELETE /sites/{site_id}/redirects/{redirect_id} Webflow Delete 301 redirects #
GET /sites/{site_id}/plan Webflow Get Site Plan #
GET /sites/{site_id}/robots_txt Webflow Get robots.txt #
PUT /sites/{site_id}/robots_txt Webflow Replace robots.txt #
PATCH /sites/{site_id}/robots_txt Webflow Update robots.txt #
DELETE /sites/{site_id}/robots_txt Webflow Delete robots.txt #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/webflow-sites-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

webflow-sites-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.0.0
  title: Webflow Data Sites API
  description: Webflow's Data API v2
  termsOfService: https://webflow.com/legal/terms
  contact:
    name: Webflow Developer Relations
    email: developers@webflow.com
    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: Sites
  description: Sites are the sites in your Webflow workspace.
paths:
  /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: null
      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: null
                      redirect: true
                      subdirectory: ''
                      tag: en-US
                    secondary:
                    - id: 653fd9af6a07fc9cfd7a5e56
                      cmsLocaleId: 653fd9af6a07fc9cfd7a5e5d
                      enabled: true
                      displayName: French (France)
                      displayImageId: null
                      subdirectory: fr-fr
                      tag: fr-FR
                    - id: 654112a3a525b2739d97664c
                      cmsLocaleId: 654112a3a525b2739d97664f
                      enabled: true
                      displayName: Spanish (Mexico)
                      displayImageId: null
                      subdirectory: es-mx
                      tag: es-MX
                  dataCollectionEnabled: true
                  dataCollectionType: always
                properties:
                  id:
                    type: string
                    format: objectid
                    description: Unique identifier for the Site
                    example: 580e63e98c9a982ac9b8b741
                  workspaceId:
                    type: string
                    format: objectid
                    description: Unique identifier for the Workspace
                    example: 580e63e98c9a982ac9b8b741
                  createdOn:
                    type: string
                    format: date-time
                    description: Date the Site was created
                    example: '2016-10-24T19:41:29.156Z'
                  displayName:
                    type: string
                    description: Name given to Site
                    example: api_docs_sample_json
                  shortName:
                    type: string
                    description: Slugified version of name
                    example: api-docs-sample-json
                  lastPublished:
                    type: string
                    format: date-time
                    description: Date the Site was last published
                    example: '2016-10-24T19:43:17.271Z'
                  lastUpdated:
                    type: string
                    format: date-time
                    description: Date the Site was last updated
                    example: '2016-10-24T19:43:17.271Z'
                  previewUrl:
                    type: string
                    format: uri
                    description: URL of a generated image for the given Site
                    example: https://dev-assets.website-files.com/580e63e98c9a982ac9b8b741/201610241243.png
                  timeZone:
                    type: string
                    description: Site timezone set under Site Settings
                    example: America/Los_Angeles
                  parentFolderId:
                    type: string
                    format: objectid
                    nullable: true
                    description: The ID of the parent folder the Site exists in
                    example: 1as2d3f4g5h6j7k8l9z0x1c2v3b4n5m6
                  customDomains:
                    type: array
                    items:
                      type: object
                      required:
                      - id
                      properties:
                        id:
                          type: string
                          format: objectid
                          example: 589a331aa51e760df7ccb89d
                          description: Unique identifier for the Domain
                        url:
                          type: string
                          example: test-api-domain.com
                          description: The registered Domain name
                        lastPublished:
                          type: string
                          format: date-time
                          example: '2022-12-07T16:51:37.571Z'
                          readOnly: true
                          nullable: true
                          description: The date the custom domain was last published to
                      example:
                        id: 589a331aa51e760df7ccb89d
                        url: test-api-domain.com
                        lastPublished: '2022-12-07T16:51:37.571Z'
                  locales:
                    type: object
                    properties:
                      primary:
                        description: The primary locale for the site or application.
                        type: object
                        properties:
                          id:
                            type: string
                            description: The unique identifier for the locale.
                            example: 653fd9af6a07fc9cfd7a5e57
                          cmsLocaleId:
                            type: string
                            description: A CMS-specific identifier for the locale.
                            example: 653ad57de882f528b32e810e
                          enabled:
                            type: boolean
                            description: Indicates if the locale is enabled.
                            example: false
                          displayName:
                            type: string
                            description: The display name of the locale, typically in English.
                            example: English (United States)
                          displayImageId:
                            type: string
                            description: An optional ID for an image associated with the locale, nullable.
                            nullable: true
                            example: null
                          redirect:
                            type: boolean
                            description: Determines if requests should redirect to the locale's subdirectory.
                            example: true
                          subdirectory:
                            type: string
                            description: The subdirectory path for the locale, used in URLs.
                            example: ''
                          tag:
                            type: string
                            description: A tag or code representing the locale, often following a standard format like 'en-US'.
                            example: en-US
                      secondary:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: The unique identifier for the locale.
                              example: 653fd9af6a07fc9cfd7a5e57
                            cmsLocaleId:
                              type: string
                              description: A CMS-specific identifier for the locale.
                              example: 653ad57de882f528b32e810e
                            enabled:
                              type: boolean
                              description: Indicates if the locale is enabled.
                              example: false
                            displayName:
                              type: string
                              description: The display name of the locale, typically in English.
                              example: English (United States)
                            displayImageId:
                              type: string
                              description: An optional ID for an image associated with the locale, nullable.
                              nullable: true
                              example: null
                            redirect:
                              type: boolean
                              description: Determines if requests should redirect to the locale's subdirectory.
                              example: true
                            subdirectory:
                              type: string
                              description: The subdirectory path for the locale, used in URLs.
                              example: ''
                            tag:
                              type: string
                              description: A tag or code representing the locale, often following a standard format like 'en-US'.
                              example: en-US
                        description: A list of secondary locales available for the site or application.
                  dataCollectionEnabled:
                    type: boolean
                    description: Indicates if data collection is enabled for the site.
                    example: false
                  dataCollectionType:
                    type: string
                    enum:
                    - always
                    - optOut
                    - disabled
                    description: The type of data collection enabled for the site.
                    example: always
              examples:
                NewlyCreatedSite:
                  value:
                    id: 670ecf86817e3cc7a510eb6a
                    workspaceId: 625860a7a6c16d624927122f
                    displayName: The Hitchiker's Guide
                    shortName: hitchikers-guide
                    previewUrl: null
                    timeZone: null
                    createdOn: '2024-10-15T20:24:38.134Z'
                    lastUpdated: '2024-10-15T20:24:38.326Z'
                    lastPublished: null
                    parentFolderId: 670ece123598db72d9648be1
                    customDomains: []
                    locales: null
                    dataCollectionEnabled: true
                    dataCollectionType: always
        '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: null
                  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: null
                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: null
                  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: null
                details: []
        '403':
          description: Forbidden request
          content:
            application/json:
              schema:
                oneOf:
                - 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: null
                          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: null
                        details: []
                - description: Error response for non-enterprise plan workspaces.
                  x-logErrorCode: 403
                  content:
                    application/json:
                      schema:
                        type: object
                        example:
                          code: not_authorized
                          message: Request not authorized
                          externalReference: null
                          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_enterprise_plan_workspace
                        message: This workspace is not associated with an Enterprise plan
                        externalReference: null
                        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: null
                  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: null
                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: null
                  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: null
                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: null
                  details: []
                properties:
                  code:
                    type: s

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