---
title: "Upload Asset"
method: POST
path: "/api/v1/assets/properties/{property_id}"
tags: ["Assets"]
---

# Upload Asset

`POST /api/v1/assets/properties/{property_id}`

Upload a guest-facing image (or design PDF) to the public asset prefix
and record it. Returns the asset with its stable `public_url` to embed.

## Path parameters

- `property_id` string, uuid, required

## Response `201`

Successful Response

- AssetRead
  - `id` string, uuid, required
  - `property_id` string, uuid, required
  - `kind` 'IMAGE' | 'DESIGN_PDF', required
  - `s3_key` string, required
  - `public_url` string, nullable, required
  - `content_type` string, required
  - `filename` string, required
  - `file_size` integer, nullable, required
  - `alt_text` string, nullable, required
  - `source_url` string, nullable, required
  - `tags` string[], required
  - `content_page_id` string, uuid, nullable, required
  - `display_order` integer, required
  - `in_gallery` boolean, required

## Other responses

- `422` — Validation Error

## Changes

> 20 revisions in range; 1 not diffed.

- **2026-09-03** `d65b8fefae34` — 1 breaking, 3 info
  - the `file` request property contentMediaType changed from `` to `application/octet-stream`
  - the `file` request property format was generalized from `binary` to no format
  - added the optional property `detail/items/ctx` to the response with the `422` status
  - added the optional property `detail/items/input` to the response with the `422` status

[Change history](https://skmtc.dev/getanana/apis/cleon-api/changes/api/v1/assets/properties/:property_id/post.md)

---

[API](https://skmtc.dev/getanana/apis/cleon-api.md) · [All operations](https://skmtc.dev/getanana/apis/cleon-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getanana/apis/cleon-api/revisions/dabff0d3c9ff?raw)
