Webflow API and Documentation Assets API

Assets are files that are uploaded to your Webflow account.

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-api-and-documentation-webflow-assets-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 email required.

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

OpenAPI Specification

webflow-api-and-documentation-webflow-assets-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Webflow Collections Asset Folders Assets API
  description: Webflow Data API v2 - Collections endpoints.
  version: 2.0.0
  contact:
    name: Webflow Developer Relations
    email: developers@webflow.com
    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: Assets
  description: Assets are files that are uploaded to your Webflow account.
paths:
  /sites/{site_id}/assets:
    get:
      x-fern-sdk-group-name: assets
      x-fern-sdk-method-name: list
      security:
      - OAuth2:
        - assets:read
      operationId: list-assets
      summary: Webflow List Assets
      description: 'List of assets uploaded to a site


        Required scope | `assets:read`

        '
      tags:
      - Assets
      parameters:
      - name: site_id
        in: path
        description: Unique identifier for a Site
        example: 580e63e98c9a982ac9b8b741
        required: true
        schema:
          type: string
          format: objectid
          default: null
      - 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
      responses:
        '200':
          description: Request was successful
          content:
            application/json:
              schema:
                required:
                - assets
                - pagination
                type: object
                description: A list of assets
                properties:
                  assets:
                    type: array
                    items:
                      description: Asset details
                      example:
                        id: 63e5889e7fe4eafa7384cea4
                        originalFileName: Candy-Wrapper.svg
                        displayName: 63e5889e7fe4eafa7384cea4_Candy-Wrapper.png
                        contentType: image/png
                        size: 2212772
                        siteId: 63938b302ea6b0aa6f3d8745
                        createdOn: '2023-02-09T23:58:22.294Z'
                        lastUpdated: '2023-03-01T23:42:57.862Z'
                        hostedUrl: https://s3.amazonaws.com/webflow-prod-assets/63938b302ea6b0aa6f3d8745/63e5889e7fe4eafa7384cea4_Vectors-Wrapper.svg
                        variants:
                        - hostedUrl: https://s3.amazonaws.com/webflow-prod-assets/6258612d1ee792848f805dcf/660d83ce30f3a599ddb0bdb3_Screenshot%202024-03-20%20at%209.03.24%E2%80%AFPM-p-500.png
                          originalFileName: Screenshot%202024-03-20%20at%209.03.24%E2%80%AFPM-p-500.png
                          displayName: 660d83ce30f3a599ddb0bdb3_Screenshot%202024-03-20%20at%209.03.24%E2%80%AFPM-p-500.png
                          format: png
                          width: 500
                          height: null
                          quality: 100
                          error: null
                        altText: A single candy wrapper
                      required:
                      - id
                      - contentType
                      - size
                      - siteId
                      - hostedUrl
                      - originalFileName
                      - displayName
                      - lastUpdated
                      - createdOn
                      - variants
                      - altText
                      properties:
                        id:
                          type: string
                          format: objectid
                          example: 55131cd036c09f7d07883dfc
                          description: Unique identifier for this asset
                          readOnly: true
                        contentType:
                          type: string
                          example: image/png
                          format: mime-type
                          description: File format type
                          readOnly: true
                        size:
                          type: integer
                          description: size in bytes
                          example: 1500
                          readOnly: true
                        siteId:
                          type: string
                          format: objectid
                          example: 62749158efef318abc8d5a0f
                          description: Unique identifier for the site that hosts this asset
                          readOnly: true
                        hostedUrl:
                          type: string
                          format: uri
                          example: example.com/hostedimage.png
                          description: Link to the asset
                          readOnly: true
                        originalFileName:
                          type: string
                          example: image.png
                          description: Original file name at the time of upload
                          readOnly: true
                        displayName:
                          type: string
                          example: example-image-123.png
                          description: Display name of the asset
                        lastUpdated:
                          type: string
                          format: date-time
                          example: '2016-09-06T21:12:22.148Z'
                          description: Date the asset metadata was last updated
                          readOnly: true
                        createdOn:
                          type: string
                          format: date-time
                          example: '2016-09-02T23:26:22.241Z'
                          description: Date the asset metadata was created
                          readOnly: true
                        variants:
                          description: A list of [asset variants](https://help.webflow.com/hc/en-us/articles/33961378697107-Responsive-images) created by Webflow to serve your site responsively.
                          type: array
                          items:
                            description: Asset variant details
                            required:
                            - hostedUrl
                            - originalFileName
                            - displayName
                            - format
                            - width
                            - height
                            - quality
                            properties:
                              hostedUrl:
                                type: string
                                format: uri
                                example: example.com/hostedimage.png
                                description: URL of where the asset variant is hosted
                              originalFileName:
                                type: string
                                example: image.png
                                description: Original file name of the variant
                              displayName:
                                type: string
                                example: A brown dog
                                description: Display name of the variant
                              format:
                                type: string
                                description: format of the variant
                              width:
                                type: integer
                                description: Width in pixels
                                example: 1500
                              height:
                                type: integer
                                description: Height in pixels
                                example: 900
                                nullable: true
                              quality:
                                type: integer
                                description: Value between 0 and 100 representing the image quality
                              error:
                                type: string
                                description: Any associated validation errors
                                nullable: true
                        altText:
                          type: string
                          example: A red chair
                          nullable: true
                          description: The visual description of the asset
                  pagination:
                    description: Pagination object
                    type: object
                    required:
                    - limit
                    - offset
                    - total
                    properties:
                      limit:
                        type: integer
                        description: The limit used for pagination
                        example: 100
                        readOnly: true
                      offset:
                        type: integer
                        description: The offset used for pagination
                        example: 0
                        readOnly: true
                      total:
                        type: integer
                        description: The total number of records
                        example: 100
                        readOnly: true
                example:
                  assets:
                  - id: 63e5889e7fe4eafa7384cea4
                    originalFileName: Candy-Wrapper.svg
                    displayName: 63e5889e7fe4eafa7384cea4_Candy-Wrapper.png
                    contentType: image/png
                    size: 2212772
                    siteId: 63938b302ea6b0aa6f3d8745
                    createdOn: '2023-02-09T23:58:22.294Z'
                    lastUpdated: '2023-03-01T23:42:57.862Z'
                    hostedUrl: https://s3.amazonaws.com/webflow-prod-assets/63938b302ea6b0aa6f3d8745/63e5889e7fe4eafa7384cea4_Vectors-Wrapper.svg
                    variants:
                    - hostedUrl: https://s3.amazonaws.com/webflow-prod-assets/6258612d1ee792848f805dcf/660d83ce30f3a599ddb0bdb3_Screenshot%202024-03-20%20at%209.03.24%E2%80%AFPM-p-500.png
                      originalFileName: Screenshot%202024-03-20%20at%209.03.24%E2%80%AFPM-p-500.png
                      displayName: 660d83ce30f3a599ddb0bdb3_Screenshot%202024-03-20%20at%209.03.24%E2%80%AFPM-p-500.png
                      format: png
                      width: 500
                      height: null
                      quality: 100
                      error: null
                    altText: A single candy wrapper
                  - id: 63e5889e7fe4eafa7384cea5
                    originalFileName: Gum-Wrapper.svg
                    displayName: 63e5889e7fe4eafa7384cea5_Gum-Wrapper.png
                    contentType: image/png
                    size: 2212772
                    siteId: 63938b302ea6b0aa6f3d8745
                    createdOn: '2023-02-09T23:58:22.294Z'
                    lastUpdated: '2023-03-01T23:42:57.862Z'
                    hostedUrl: https://s3.amazonaws.com/webflow-prod-assets/63938b302ea6b0aa6f3d8745/63e5889e7fe4eafa7384cea4_Vectors-Wrapper.svg
                    variants:
                    - hostedUrl: https://s3.amazonaws.com/webflow-prod-assets/6258612d1ee792848f805dcf/660d83ce30f3a599ddb0bdb3_Screenshot%202024-03-20%20at%209.03.24%E2%80%AFPM-p-500.png
                      originalFileName: Screenshot%202024-03-20%20at%209.03.24%E2%80%AFPM-p-500.png
                      displayName: 660d83ce30f3a599ddb0bdb3_Screenshot%202024-03-20%20at%209.03.24%E2%80%AFPM-p-500.png
                      format: png
                      width: 500
                      height: null
                      quality: 100
                      error: null
                    altText: A single gum wrapper
                  pagination:
                    total: 2
                    offset: 0
                    limit: 2
        '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: []
        '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: 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: null
                details: []
    post:
      x-fern-sdk-group-name: assets
      x-fern-sdk-method-name: create
      security:
      - OAuth2:
        - assets:write
      operationId: create-asset
      summary: Webflow Upload Asset
      description: "The first step in uploading an asset to a site.\n\n\nThis endpoint generates a response with the following information: `uploadUrl` and `uploadDetails`.\n\n\nUse these properties in the header of a [POST request to Amazson s3](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) to complete the upload.\n\n\nTo learn more about how to upload assets to Webflow, see our [assets guide](/data/docs/working-with-assets).\n\n Required scope | `assets:write`\n"
      tags:
      - Assets
      parameters:
      - name: site_id
        in: path
        description: Unique identifier for a Site
        example: 580e63e98c9a982ac9b8b741
        required: true
        schema:
          type: string
          format: objectid
          default: null
      requestBody:
        description: Information about the asset to create
        required: true
        content:
          application/json:
            schema:
              description: The request to create a webhook
              required:
              - fileName
              - fileHash
              properties:
                fileName:
                  type: string
                  example: file.png
                  description: File name including file extension. File names must be less than 100 characters.
                fileHash:
                  type: string
                  example: 3c7d87c9575702bc3b1e991f4d3c638e
                  description: MD5 hash of the file
                parentFolder:
                  type: string
                  example: 6436b1ce5281cace05b65aea
                  description: ID of the Asset folder (optional)
      responses:
        '200':
          description: Request was successful
          content:
            application/json:
              schema:
                properties:
                  uploadDetails:
                    type: object
                    description: Metadata for uploading the asset binary
                    properties:
                      acl:
                        type: string
                        example: public-read
                      bucket:
                        type: string
                        example: webflow-bucket-name
                      X-Amz-Algorithm:
                        type: string
                        example: AWS4-HMAC-SHA256
                      X-Amz-Credential:
                        type: string
                        example: <credential-key>/<date>/<region-zone>/s3/aws4_request
                      X-Amz-Date:
                        type: string
                        example: <date-in-iso-like-string>
                      key:
                        type: string
                        example: <siteId>/<fileId>_<filename-with-extension>
                      Policy:
                        type: string
                        example: <a-very-long-alphanumeric-token-with-equal-sign-at-the-end>
                      X-Amz-Signature:
                        type: string
                        example: <one-line-ling-alphanumeric-signature>
                      success_action_status:
                        type: string
                        example: '201'
                      content-type:
                        type: string
                        format: mime-type
                        example: image/png
                      Cache-Control:
                        type: string
                        example: max-age=31536000, must-revalidate
                  contentType:
                    type: string
                    example: image/png
                  id:
                    type: string
                    format: objectid
                    example: 55131cd036c09f7d07883dfc
                  parentFolder:
                    type: string
                    format: objectid
                    default: null
                    example: 6436b1ce5281cace05b65aea
                    description: Parent folder for the asset
                  uploadUrl:
                    type: string
                    format: uri
                    example: example.com/assets/image.png
                  assetUrl:
                    type: string
                    format: uri
                    example: example.com/assets/image.png
                    description: S3 link to the asset
                  hostedUrl:
                    type: string
                    format: uri
                    description: Represents the link to the asset
                    example: example.com/hostedimage.png
                  originalFileName:
                    type: string
                    example: image.png
                    description: Original file name when uploaded. If not specified at time of upload, it may be extracted from the raw file name
                  createdOn:
                    type: string
                    format: date-time
                    example: '2016-09-02T23:26:22.241Z'
                    description: Date the asset metadata was created
                  lastUpdated:
                    type: string
                    format: date-time
                    example: '2016-09-06T21:12:22.148Z'
                    description: Date the asset metadata was last updated
                example:
                  uploadDetails:
                    acl: public-read
                    bucket: webflow-bucket-name
                    X-Amz-Algorithm: AWS4-HMAC-SHA256
                    X-Amz-Credential: <creden

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