---
title: "Get one asset with a fresh private preview"
method: GET
path: "/api/v1/assets/{assetId}"
tags: ["Assets"]
---

# Get one asset with a fresh private preview

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

## Request

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

The `previewUrl` is signed for at most 20 minutes; persist `uri`, not the preview. An unknown asset, another account's asset and an asset in a library this key does not reach return the same 404.

## Response `200`

The 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

- `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.

---

[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/ba5c069f11d8?raw)
