v64

latestOpenAPI 3.1.0raw.githubusercontent.com2026-08-016280256.4 KB
stacks

Remove assets from a stack

Pulls one or more frames out of the stack. The assets themselves are untouched — they remain in the library (and in any albums) and simply appear as individual photos again. IDs that are not current members of the stack are silently ignored.

If a removed frame was the pinned cover, the pin is cleared with no automatic re-pick — clients choose their own display cover. A stack that survives the removal is marked user-owned (origin = user) so burst re-detection honors the edit; a removal that leaves fewer than 2 members dissolves the stack entirely, returning its remaining frames to loose display too. Trashed frames still count as members for that threshold (unlike asset_count, which excludes them), so a stack can survive with asset_count below 2.

Up to 200 ids per request; over-cap requests return 422.

delete/api/stacks/{stack_id}/assets

Path parameters

stack_idstring required

Stack ID (with asset_stack_ prefix) of the stack to pull frames out of.

Stack ID (with asset_stack_ prefix) of the stack to pull frames out of.

Request body

asset_idsstring[] required

Asset IDs (with asset_ prefix) to pull out of the stack. Get member IDs from list_assets with stack_id. Up to 200 ids per request.

Response

Successful Response

DeletionResponse required

Acknowledgment body returned by destructive endpoints (delete / trash / restore / permanently delete / remove-from-album / empty-trash).

Carries no fields — the HTTP 200 + empty JSON object is itself the success signal. Exists so MCP tools generated from these endpoints have a real outputSchema (rather than the null schema FastMCP emits for 204 responses), which ChatGPT's MCP submission tooling requires.