Skip to main content
POST
Manually stack assets

Body

application/json
asset_ids
string[]
required

Asset IDs (with asset_ prefix) to group into the new stack — at least 2 distinct ids, all in the target library.

Required array length: 2 - 200 elements
primary_asset_id
string | null

Asset ID (with asset_ prefix) to pin as the stack's cover; must be one of asset_ids. Omit to leave the cover unpinned — there is no automatic pick, and clients choose their own display cover for an unpinned stack.

library_id
string | null

Library to create the stack in. Optional if the user has a single library; required when they have multiple.

Response

Successful Response

Represents a group of assets displayed as a single tile.

id
string
required

Unique stack identifier with 'asset_stack_' prefix

asset_count
integer
required

Number of live assets in this stack. Excludes trashed members, so it can drop below the number of frames originally grouped.

origin
enum<string>
required

How a stack came to exist.

auto_burst marks a stack the burst detector created from the time + EXIF-camera signal; user marks a stack a user created or edited (manual create, set-cover, add/remove, unstack). The distinction is what keeps re-detection from stomping a user's correction — the detection pass skips user stacks.

Available options:
auto_burst,
user
created_at
string<date-time>
required

When this stack was created

updated_at
string<date-time>
required

When this stack was last updated

primary_asset_id
string | null

ID of the asset the user pinned as the stack's cover, or null if none is pinned. Null for an auto-detected burst unless a user has since pinned a cover — there is no server-selected default, so a client showing a stack with no pinned cover picks its own. A pinned cover that has been trashed keeps its ID here; it is cleared only once the asset is permanently deleted.