---
title: "Start or Resume Asset Upload"
method: POST
path: "/v1/assets/uploads"
tags: ["Assets"]
---

# Start or Resume Asset Upload

`POST /v1/assets/uploads`

Starts or recovers an expiring direct-to-storage session for a long-term Asset. Abandoned sessions expire and callers should abort cancelled uploads. A completed Asset is stored, not byte-validated; video generation validates its media later.

## Headers

- `Idempotency-Key` string, required
- `x-api-key` string, required — API Key for authentication

## Request body

- PublicAssetUploadStartRequest
  - `filename` string, required
  - `size_bytes` integer, required
  - `media_type` 'image' | 'audio' | 'video', required
  - `content_type` string, required

## Response `200`

Successful Response

- PublicAssetUploadStartResponse
  - `upload_id` string, required
  - `status` 'initiated' | 'processing' | 'completed', required
  - `part_size_bytes` integer, required
  - `total_parts` integer, required
  - `size_bytes` integer, required
  - `expires_at` integer, required
  - `max_concurrent_parts` integer, required
  - `signed_urls` PublicSignedPartUrl[], required
    - `part_number` integer, required
    - `url` string, required
  - `uploaded_parts` PublicUploadedPart[]
    - `part_number` integer, required
    - `size_bytes` integer, required
  - `asset_id` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/mirage/apis/mirage-video-api.md) · [All operations](https://skmtc.net/mirage/apis/mirage-video-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mirage/mirage-video-api/revisions/11e1197415cb/schema)
