---
title: "Rename an asset or mark it as a favorite"
method: PATCH
path: "/api/v1/assets/{assetId}"
tags: ["Assets"]
---

# Rename an asset or mark it as a favorite

`PATCH /api/v1/assets/{assetId}`

## Request

- Base URL: `https://api.popnow.ai`
- URL: `https://api.popnow.ai/api/v1/assets/{assetId}`
- Auth: HTTP bearer

Send `name`, `favorite` or both; only what you send changes, and a body with neither is rejected as an invalid name. The `uri` stays the same and nothing is copied. Favorites belong to the library, so everyone in a team sees the same ones. Repeating the same request is safe, so no Idempotency-Key is needed. In a team library, billing and readonly members cannot rename or change favorites, and developers can do so only for assets they saved (403, `data.reason` `asset_permission_denied`).

## Request body

- object
  - `name` string
  - `favorite` boolean

## Response `200`

The renamed asset.

- AssetEnvelope
  - `code` 200, required
  - `msg` 'success', required
  - `request_id` string, required: Correlation identifier. Include it in support requests.
  - `data` Asset, required
    - `id` string, required
    - `uri` string, required: Stable reference. Works only in generation requests made with keys of the same workspace; it is never a downloadable link.
    - `name` string, required
    - `kind` 'image' | 'video' | 'audio', required
    - `contentType` string, required
    - `bytes` integer, required
    - `width` integer
    - `height` integer
    - `durationSeconds` number
    - `source` 'task_output' | 'upload' | 'url', required
    - `sourceId` string, required: Your task or upload id; for url, an opaque digest of the address (the address itself is not stored).
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `previewUrl` string, required: Private preview signed for you for at most 20 minutes; empty when signing fails. Do not store or share it — persist uri instead.
    - `previewUrlExpiresAt` string, date-time
    - `favorite` boolean, required: Favorite mark of the library (shared by everyone in a team).
    - `model` string, required: Public name of the model that generated the asset, for example bytedance/seedream-5.0-pro/text-to-image; empty for uploads and links.
    - `modelName` string, required: Display name of that model; empty when the asset was not generated or the name is unknown.

## Other responses

- `400`: Invalid JSON, query, callback URL, model input, or media declaration. Invalid callBackUrl values return code 400 and msg "Invalid callback URL" with request_id. Submitted hosts, IP addresses, and DNS diagnostics are not echoed.
- `401`: Missing, malformed, expired, revoked, or otherwise invalid API key.
- `403`: Account, model, API-key, IP, or region authorization failed.
- `404`: Resource does not exist or is not visible to this account and API key. These cases are intentionally indistinguishable.
- `429`: Account-level request limit exceeded.

## Changes

- **2026-10-20** `fede911a6e9b`: 60 warning
  - added the new `agent_project_budget` enum value to the `allOf[subschema #2]/data/reason` response property for the response status `400`
  - added the new `agent_project_budget` enum value to the `allOf[subschema #2]/data/reason` response property for the response status `401`
  - added the new `agent_project_budget` enum value to the `allOf[subschema #2]/data/reason` response property for the response status `403`
  - added the new `agent_project_budget` enum value to the `allOf[subschema #2]/data/reason` response property for the response status `404`
  - …56 more

[Operation history](https://skmtc.dev/popnow/apis/popnow-api/changes/api/v1/assets/:assetId/patch.md)

---

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