Search + K

Command Palette

Search for a command to run...

Sign In

Upload Asset

POST /sites/{site_id}/assets
Copy endpoint
https://api.webflow.com/v2

The first step in uploading an asset to a site.

This endpoint generates a response with the following information: uploadUrl and uploadDetails.

Use these properties in the header of a POST request to Amazson s3 to complete the upload.

To learn more about how to upload assets to Webflow, see our assets guide.

Required scope | assets:write

Parameters

path Path Parameters

Name Type
site_id required

Unique identifier for a Site

string

Request Body

application/json required

Information about the asset to create

{ fileName: string;fileHash: string;parentFolder?: string; }

Responses

200 application/json

Request was successful

{
uploadDetails?: {
acl?: string;
bucket?: string;
X-Amz-Algorithm?: string;
X-Amz-Credential?: string;
X-Amz-Date?: string;
key?: string;
Policy?: string;
X-Amz-Signature?: string;
success_action_status?: string;
content-type?: string;
Cache-Control?: string;
}
;
contentType?: string;
id?: string;
parentFolder?: string;
uploadUrl?: string;
assetUrl?: string;
hostedUrl?: string;
originalFileName?: string;
createdOn?: string;
lastUpdated?: string;
}

Client Errors

400 application/json

Request body was incorrectly formatted.

{
code?: "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?: string;
externalReference?: string;
details?: unknown[];
}
401 application/json

Provided access token is invalid or does not have access to requested resource

{
code?: "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?: string;
externalReference?: string;
details?: unknown[];
}
404 application/json

Requested resource not found

{
code?: "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?: string;
externalReference?: string;
details?: unknown[];
}
429 application/json

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.

{
code?: "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?: string;
externalReference?: string;
details?: unknown[];
}

Server Errors

500 application/json

We had a problem with our server. Try again later.

{
code?: "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?: string;
externalReference?: string;
details?: unknown[];
}