---
title: "Upload a file asset (multipart)"
method: POST
path: "/v1/assets/upload"
tags: ["Assets"]
---

# Upload a file asset (multipart)

`POST /v1/assets/upload`

## Response `200`

- AssetUploadResultDto
  - `kind` 'public' | 'private', required
  - `key` string, required — Canonical S3 object key — store this on the entity
  - `url` string — Minted public URL of the original (only when kind is public)
  - `variants` UploadedImageVariantDto[] — Image variants (only for image categories)
    - `key` string, required
    - `width` number, required
    - `height` number, required

## Other responses

- `400` — Validation failed
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `409` — Conflict
- `500` — Internal server error

---

[API](https://skmtc.net/vendure/apis/vendure-io-api-public.md) · [All operations](https://skmtc.net/vendure/apis/vendure-io-api-public/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/vendure/vendure-io-api-public/revisions/5fc4757128af/schema)
