---
title: "API · Assets · Sign a direct asset upload"
method: POST
path: "/api/v1/assets/sign"
tags: ["assets"]
---

# API · Assets · Sign a direct asset upload

`POST /api/v1/assets/sign`

## Request

- Base URL: `https://api.simplified.com`
- URL: `https://api.simplified.com/api/v1/assets/sign`
- Auth: API key in header `Authorization`

Start the same direct-to-storage upload flow used by Simplified's UI.
The client creates a UUID, calls this tool, then PUTs the local file bytes
directly to the returned `signed` URL using the declared MIME type and no
Simplified Authorization header. After the PUT succeeds, call
`registerAsset` with the returned metadata.

## Request body

- SignAssetUploadRequest
  - `filename` string, required: Original filename including extension.
  - `filetype` string, required: MIME type, for example `image/png` or `video/mp4`.
  - `resource` 'assets', required: Storage resource namespace. Use `assets`.
  - `resource_id` string, uuid, required: Client-generated UUID that becomes the registered asset ID.

## Response `200`

Signed upload URL and asset registration metadata

- AssetsSignAssetUploadResponse200
  - `resource_id` string, uuid, required
  - `asset` string, uri, required
  - `asset_url` string, uri, required
  - `signed` string, uri, required
  - `asset_key` string, required
  - `asset_type` integer, required
  - `bucket_name` string, required

## Other responses

- `400`: Invalid filename
- `401`: Unauthorized

---

[API](https://skmtc.dev/simplified/apis/platform.md) - [All operations](https://skmtc.dev/simplified/apis/platform/llms.txt) - [OpenAPI document](https://skmtc.dev/simplified/apis/platform/revisions/0815a1ba1e4e?raw)
