GET/api/v1/assets
List and search the org's assets
Every current asset in the org, whatever project it is in. Filters combine with AND. Keyset-paginated; no total. To poll for changes, pass updated_after with the newest updated_at you have seen and sort=-updated_at (or updated_at).
Scopes: assets:read
Parameters
qquery · stringCase-insensitive substring of the asset's name. Characters are matched literally.
type_idquery · string (uuid)Only assets of this type (GET /api/v1/asset-types).
project_idquery · string (uuid)Only assets placed in this project (GET /api/v1/projects). Not its sub-projects.
external_refquery · stringOnly assets carrying exactly this external_ref.
created_afterquery · string (date-time)Only assets created strictly after this instant (ISO 8601 with offset).
created_beforequery · string (date-time)Only assets created strictly before this instant (ISO 8601 with offset).
updated_afterquery · string (date-time)Only assets changed strictly after this instant (ISO 8601 with offset), compared to the millisecond — poll with the newest
updated_atyou have seen (that asset does not come back), sorted-updated_atorupdated_at.category_idquery · string (uuid)Only assets assigned this org category directly (a category an asset inherits from its project does not count).
media_typequery · "video" | "audio" | "image" | "document" | "other"Only assets with a current file of this media type in one of their slots (derived files do not count).
otheris any slotted file that is not video, audio, image or document — subtitles, for one.tagquery · array of stringOnly assets carrying a tag of this name — exact, ignoring case and extra spaces. Repeat the parameter (up to 10 times) for assets carrying every one.
sortquery · "created_at" | "-created_at" | "name" | "-name" | "updated_at" | "-updated_at"Sort key; a leading
-is descending. Default-created_at(newest first). Ties break on id.limitquery · integerPage size, default 50. Values above 100 are treated as 100.
cursorquery · stringnext_cursor from the previous page, with the other parameters unchanged.
Response 200AssetSummaryList
dataarray of AssetSummaryrequiredidstring (uuid)requirednamestringrequiredtypeobjectrequiredidstring (uuid)requirednamestringrequired
projectProjectRefrequiredidstring (uuid)requirednamestringrequired
external_refstring or nullrequiredThe caller's own id for this asset, as given at creation.
lifecycle_phase"draft" | "ingested" | "verified" | "delivered"requirededit_seqintegerrequiredIncrements on every change to name, fields, type or project.
created_atstring (date-time)requiredupdated_atstring (date-time)required
next_cursorstring or nullrequiredPass as
cursorto get the next page; null means this is the last page.
Other responses
- 401 unauthenticated — no key, or an unknown, revoked or expired one.
- 403 insufficient-scope — the key lacks a required scope.
- 404 not-found.
- 422 validation — a bad filter (
type_id,project_id,category_id,media_type,tag, a timestamp),sort,limitorcursor(a cursor replayed with different parameters). - 429 rate-limited — the key's request budget is spent; wait Retry-After seconds.
- 500 internal.