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.
Path Parameters
Stack ID (with asset_stack_ prefix) of the stack to pull frames out of.
Body
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.
200Response
Successful Response
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.