---
title: "Upload an asset (image / video / audio)"
method: POST
path: "/asset/files"
tags: ["Seedance Assets"]
---

# Upload an asset (image / video / audio)

`POST /asset/files`

Upload an asset into a group you own. Assets are provided as a
**publicly accessible URL** only (no base64, no file body). The call
is **asynchronous** — poll `GET /asset/files/{aid}` until `Status`
becomes `Active`. For a real-human group, the uploaded image's face is
compared against the verified reference; a mismatch resolves to
`Status: Failed` with `Error.Code: FaceMismatch`.

Subject to the asset upload cap (default 100).

## Request body

- object
  - `GroupId` string, required — The id of a group you own.
  - `URL` string, required — Publicly accessible image / video / audio URL.
  - `AssetType` 'Image' | 'Video' | 'Audio', required
  - `Name` string — Optional; used only for ListAssets fuzzy search.
  - `Moderation` object — Optional. {"Strategy":"Skip"} to skip content pre-filter.

## Response `200`

Asset accepted (async — poll GET /asset/files/{id})

- object
  - `Id` string

## Other responses

- `403` — Asset upload limit reached
- `404` — GroupId not found

---

[API](https://skmtc.net/orcarouter/apis/orcarouter-api.md) · [All operations](https://skmtc.net/orcarouter/apis/orcarouter-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/orcarouter/orcarouter-api/versions/9c5cc5d00311/schema)
