Cluster groups 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
GET /cluster-groups/requests— Retrieve cluster group requestsDELETE /cluster-groups/requests/{id}— Decline a cluster group requestPOST /cluster-groups/requests/{id}/accept— Accept a cluster group requestPOST /cluster-groups/{id}/leave— Leave a cluster groupPOST /cluster-groups/{id}/regenerate-people— Regenerate people of users in cluster groupGET /cluster-groups/{id}/requests— Retrieve the requests sent by a cluster groupPUT /cluster-groups/{id}/requests— Create a cluster group requestGET /cluster-groups/{id}/users— Retrieve the users of a cluster group
Retrieve cluster group requests
GET /api/cluster-groups/requests
Retrieve the pending requests for the current user to join a cluster group.
Authentication: API key. Permission: clusterGroupRequest.read.
Responses
Field definitions: ClusterGroupRequestResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/ClusterGroupRequestResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
}Decline a cluster group request
DELETE /api/cluster-groups/requests/{id}
Delete a pending request to join a cluster group.
Authentication: API key. Permission: clusterGroupRequest.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": ""
}
}Accept a cluster group request
POST /api/cluster-groups/requests/{id}/accept
Join the cluster group the request was created for.
Authentication: API key. Permission: clusterGroupRequest.create.
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": ""
}
}Leave a cluster group
POST /api/cluster-groups/{id}/leave
Move the current user into a new cluster group of their own.
Authentication: API key. Permission: clusterGroup.leave.
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": ""
}
}Regenerate people of users in cluster group
POST /api/cluster-groups/{id}/regenerate-people
Forcefully re-run facial recognition for all faces of users in this group.
Authentication: API key. Permission: clusterGroup.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
{
"204": {
"description": ""
}
}Retrieve the requests sent by a cluster group
GET /api/cluster-groups/{id}/requests
Retrieve the pending requests for other users to join the cluster group.
Authentication: API key. Permission: clusterGroupRequest.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: ClusterGroupRequestResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/ClusterGroupRequestResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
}Create a cluster group request
PUT /api/cluster-groups/{id}/requests
Ask another user to join the cluster group of the current user.
Authentication: API key. Permission: clusterGroupRequest.create.
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: ClusterGroupRequestCreateDto
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/ClusterGroupRequestCreateDto"
}
}
}Responses
Field definitions: ClusterGroupRequestResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ClusterGroupRequestResponseDto"
}
}
},
"description": ""
}
}Retrieve the users of a cluster group
GET /api/cluster-groups/{id}/users
Retrieve the users that are a member of the cluster group.
Authentication: API key. Permission: clusterGroup.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: UserResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/UserResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
}© 2026 Frameleaf Inc. All rights reserved.
Frameleaf and the Frameleaf logo are Trademarks of Frameleaf Inc.