---
title: "Get one character with its images in order"
method: GET
path: "/api/v1/assets/entities/{entityId}"
tags: ["Assets"]
---

# Get one character with its images in order

`GET /api/v1/assets/entities/{entityId}`

## Request

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

An unknown character, another account's character and one in a library this key does not reach return the same 404. Each image carries a fresh private `previewUrl`; persist the `uri` values, not the previews.

## Response `200`

The character.

- AssetEntityEnvelope
  - `code` 200, required
  - `msg` 'success', required
  - `request_id` string, required: Correlation identifier. Include it in support requests.
  - `data` AssetEntity, required
    - `id` string, required
    - `kind` 'character', required
    - `name` string, required: Unique within the library and kind (case-insensitive).
    - `note` string, required
    - `coverAssetId` string, required: Empty while the character has no images.
    - `cover` 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.
    - `assets` Asset[], required: The character's images in order.
      - `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.
    - `count` integer, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required

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

## Changes

- **2026-10-20** `fede911a6e9b`: 48 warning
  - 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`
  - added the new `agent_project_budget` enum value to the `allOf[subschema #2]/data/reason` response property for the response status `429`
  - …44 more

[Operation history](https://skmtc.dev/popnow/apis/popnow-api/changes/api/v1/assets/entities/:entityId/get.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)
