Stacks API
Base URL: https://YOUR-SERVER/api. Send your API key in x-api-key where authentication is required. A key also needs the listed permission; your account's access rules still apply.
API guide · All endpoints · OpenAPI JSON
DELETE /stacks— Delete stacksGET /stacks— Retrieve stacksPOST /stacks— Create a stackDELETE /stacks/{id}— Delete a stackGET /stacks/{id}— Retrieve a stackPUT /stacks/{id}— Update a stackDELETE /stacks/{id}/assets/{assetId}— Remove an asset from a stack
Delete stacks
DELETE /api/stacks
Delete multiple stacks by providing a list of stack IDs.
Authentication: API key. Permission: stack.delete.
Request body
Required.
Field definitions: BulkIdsDto
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkIdsDto"
}
}
}Responses
{
"204": {
"description": ""
}
}Retrieve stacks
GET /api/stacks
Retrieve a list of stacks.
Authentication: API key. Permission: stack.read.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
primaryAssetId | query | No | Filter by primary asset ID |
Parameter types, defaults and constraints
[
{
"name": "primaryAssetId",
"required": false,
"in": "query",
"description": "Filter by primary asset ID",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
}
]Responses
Field definitions: StackResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/StackResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
}Create a stack
POST /api/stacks
Create a new stack by providing a name and a list of asset IDs to include in the stack. If any of the provided asset IDs are primary assets of an existing stack, the existing stack will be merged into the newly created stack.
Authentication: API key. Permission: stack.create.
Request body
Required.
Field definitions: StackCreateDto
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/StackCreateDto"
}
}
}Responses
Field definitions: StackResponseDto
{
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StackResponseDto"
}
}
},
"description": ""
}
}Delete a stack
DELETE /api/stacks/{id}
Delete a specific stack by its ID.
Authentication: API key. Permission: stack.delete.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
id | path | Yes | string |
Parameter types, defaults and constraints
[
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
}
]Responses
{
"204": {
"description": ""
}
}Retrieve a stack
GET /api/stacks/{id}
Retrieve a specific stack by its ID.
Authentication: API key. Permission: stack.read.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
id | path | Yes | string |
Parameter types, defaults and constraints
[
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
}
]Responses
Field definitions: StackResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StackResponseDto"
}
}
},
"description": ""
}
}Update a stack
PUT /api/stacks/{id}
Update an existing stack by its ID.
Deprecated. Avoid this operation in new integrations; use the replacement supported by your server release.
Authentication: API key. Permission: stack.update.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
id | path | Yes | string |
Parameter types, defaults and constraints
[
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
}
]Request body
Required.
Field definitions: StackUpdateDto
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/StackUpdateDto"
}
}
}Responses
Field definitions: StackResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StackResponseDto"
}
}
},
"description": ""
}
}Remove an asset from a stack
DELETE /api/stacks/{id}/assets/{assetId}
Remove a specific asset from a stack by providing the stack ID and asset ID.
Authentication: API key. Permission: stack.update.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
assetId | path | Yes | string |
id | path | Yes | string |
Parameter types, defaults and constraints
[
{
"name": "assetId",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
}
]Responses
{
"204": {
"description": ""
}
}© 2026 Frameleaf Inc. All rights reserved.
Frameleaf and the Frameleaf logo are Trademarks of Frameleaf Inc.