---
title: "List user assets"
method: GET
path: "/api/assets"
tags: ["file"]
---

# List user assets

`GET /api/assets`

Retrieves a paginated list of assets belonging to the authenticated user.
Supports filtering by tags, name, metadata, and sorting options.

## Query parameters

- `include_tags` string[]
- `exclude_tags` string[]
- `name_contains` string
- `metadata_filter` string
- `limit` integer
- `offset` integer
- `sort` 'name' | 'created_at' | 'updated_at' | 'size' | 'last_access_time'
- `order` 'asc' | 'desc'
- `include_public` boolean
- `hash` string
- `after` string

## Response `200`

Success - Assets returned

- ListAssetsResponse — Paginated list of assets belonging to the authenticated user.
  - `assets` Asset[], required — List of assets matching the query
    - `created_at` string, date-time, required — Timestamp when the asset was created
    - `display_name` string, nullable — Display name of the asset. Mirrors name for backwards compatibility.
    - `file_path` string, nullable — Relative path in global-namespace-root form (e.g. "models/checkpoints/flux.safetensors")
    - `hash` string — Blake3 hash of the asset content.
    - `id` string, uuid, required — Unique identifier for the asset
    - `is_immutable` boolean — Whether this asset is immutable (cannot be modified or deleted)
    - `job_id` string, uuid, nullable — ID of the job that created this asset, if available
    - `last_access_time` string, date-time — Timestamp when the asset was last accessed
    - `metadata` object — System-managed metadata from download sources (HuggingFace, CivitAI, etc.) - read-only, not user-modifiable
    - `mime_type` string — MIME type of the asset
    - `name` string, required — Name of the asset file
    - `preview_id` string, uuid, nullable — ID of the preview asset if available
    - `preview_url` string, uri — URL for asset preview/thumbnail
    - `short_url` string, nullable — Durable, owner-gated short link to this asset's content (relative `/api/s/{id}` path). Stable across the underlying signed URL's expiry — resolving it re-mints a fresh signed URL on every request — so it is safe to persist or share into chat, unlike `preview_url`. Only the minting user can resolve it. Omitted when the short-link surface is disabled or the asset has no resolvable content hash.
    - `size` integer — Size of the asset in bytes
    - `tags` string[] — Tags associated with the asset
    - `updated_at` string, date-time, required — Timestamp when the asset was last updated
    - `user_metadata` object — Custom user metadata for the asset
  - `has_more` boolean, required — Whether more assets are available beyond this page
  - `next_cursor` string — Opaque cursor to pass as the `after` query parameter to fetch the next page. Omitted from the response when there are no more results.
  - `total` integer, required — Total number of assets matching the filters

## Other responses

- `400` — Invalid request parameters
- `401` — Unauthorized
- `500` — Internal server error

---

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