---
title: "Upload an asset"
method: POST
path: "/v1/assets/upload"
tags: ["App"]
---

# Upload an asset

`POST /v1/assets/upload`

Upload a file to a temporary location using multipart/form-data. Returns an uploadID that can be referenced when sending messages with attachments.

## Response `200`

Request executed successfully

- UploadAssetOutput
  - `uploadID` string — Unique upload ID for this asset
  - `srcURL` string — Local file URL (file://) for the uploaded asset
  - `fileName` string — Resolved filename
  - `mimeType` string — Detected or provided MIME type
  - `fileSize` number — File size in bytes
  - `width` number — Width in pixels (images/videos)
  - `height` number — Height in pixels (images/videos)
  - `duration` number — Duration in seconds (audio/videos)
  - `error` string — Error message if upload failed

## Other responses

- `400` — Invalid request parameters
- `401` — Access token is missing or invalid
- `403` — Access token does not have the required scope
- `404` — Resource not found
- `422` — Unprocessable entity - validation error
- `429` — Too many requests - rate limit exceeded
- `500` — Internal server error

---

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