---
title: "Upload an asset"
method: POST
path: "/assets"
---

# Upload an asset

`POST /assets`

Upload an image or video asset by providing a publicly accessible URL. The asset is downloaded and processed asynchronously.

Poll `GET /assets/{id}` until `status` is `READY` before using the asset as B-roll in a video.

**Size limits:** 50 MB for images, 2 GB for videos.

**Accepted formats:** JPEG, PNG, GIF, WEBP, AVIF for images. MP4, MOV for videos.

**Concurrent limit:** Maximum 5 assets processing at a time per workspace.

## Request body

- object
  - `name` string, required — Display name for the asset
  - `type` 'IMAGE' | 'VIDEO', required — Asset type. Audio upload is not supported.
  - `url` string, uri, required — Publicly accessible URL to download the asset from

## Response `200`

Duplicate asset found — existing asset returned

- Asset
  - `id` string, uuid
  - `name` string, nullable
  - `type` 'AUDIO' | 'IMAGE' | 'VIDEO'
  - `status` 'PROCESSING' | 'READY' | 'FAILED' — Processing status. Poll until READY before using as B-roll.
  - `fileUrl` string, nullable — URL to access the asset. Null while processing.
  - `thumbnailUrl` string, nullable — URL to a thumbnail image. Null while processing.
  - `createdAt` string, date-time

## Other responses

- `201` — Asset created and processing started
- `400` — Validation error (unsupported format, file too large, URL unreachable)
- `429` — Too many assets processing concurrently (max 5)

## Changes

- **2026-04-16** `3e376c91df56` — 1 info
  - endpoint added
- **2026-04-16** `ac2be3dc5af8` — 1 breaking
  - api removed without deprecation
- **2026-04-16** `02d93799e8f1` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/argildotai/apis/argil-api/changes/assets/post.md)

---

[API](https://skmtc.dev/argildotai/apis/argil-api.md) · [All operations](https://skmtc.dev/argildotai/apis/argil-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/argildotai/argil-api/revisions/f3d0315da0f0/schema)
