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.
Stack ID (with asset_stack_ prefix) of the stack to pull frames out of.
Request body
Response
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.