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

# API · Assets · Register a completed direct upload

`POST /api/v1/assets`

## Request

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

Register an asset after the client successfully PUTs its bytes to the
signed storage URL returned by `signAssetUpload`. Carry every registration
field from that response unchanged and use the original filename for
`asset_name`. Returns the permanent asset UUID used by social `media`.

## Request body

- RegisterAssetRequest
  - `id` string, uuid, required: The same `resource_id` used to sign the upload.
  - `asset_type` integer, required: Asset type returned by `signAssetUpload`.
  - `asset_key` string, required: Storage key returned by `signAssetUpload`.
  - `asset_name` string, required: Display filename for the asset.
  - `asset_url` string, uri, required: Stored URL returned by `signAssetUpload` — the object's CDN URL with the signature removed. Pass it back unchanged; for private assets it is not publicly fetchable (use `getAsset` for a signed URL).
  - `thumbnail` string, uri, required: Asset/thumbnail URL returned by `signAssetUpload.asset`.
  - `bucket_name` string, required: Storage bucket returned by `signAssetUpload`.
  - `payload` RegisterAssetRequestPayload
    - `title` string: Human-readable asset title.

## Response `201`

Asset registered

- AssetsRegisterAssetResponse201
  - `id` string, uuid, required
  - `asset_url` string, uri
  - `thumbnail` string, uri

## Other responses

- `400`: Invalid or incomplete asset metadata
- `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)
