Spaces method and path for this operation:
Refer to Spaces for more information.
Replace a conversation's access mode and member list. Only the conversation owner can call this endpoint; every other caller receives a not-found response. Each call replaces the entire access control — the most recent successful update wins. Members can read and continue the conversation, but still need access to the conversation's agent. To learn more about agent conversations, refer to the agent chat documentation.
[Required authorization] Route required privileges: agentBuilder:read.
Path parameters
-
The unique identifier of the conversation whose access control to update.
Maximum length is
256.
Body
-
Access-control mode:
private(only the owner and the listed members can read and continue the conversation),public(any user with access to the conversation's agent can read and continue it).Values are
privateorpublic. -
Members to share the conversation with. The list replaces the stored one; submit an empty list to unshare. Entries naming the owner are ignored. Must be empty when
access_modeispublic; repeated ids are rejected.Not more than
100elements.
Responses
-
Indicates a successful response
-
Bad Request — the request body failed validation.
-
Not Found — no conversation with this ID is readable by the caller, or the caller is not its owner. Matches the existing
conversationNotFoundshape, so members cannot distinguish a conversation they may not re-share from one that does not exist.
curl \
-X PUT "${KIBANA_URL}/api/agent_builder/conversations/{conversation_id}/access_control" \
-H "Authorization: ApiKey ${API_KEY}" \
-H "kbn-xsrf: true" \
-H "Content-Type: application/json" \
-d '{
"access_mode": "private",
"entries": [
{ "type": "user", "id": "u_kd2Wm6QCf9nBBqGGyfxBcQxIrgLLLLxbPHOTNHOTgWM_0", "role": "member" }
]
}'
PUT kbn://api/agent_builder/conversations/{conversation_id}/access_control
{
"access_mode": "private",
"entries": [
{ "type": "user", "id": "u_kd2Wm6QCf9nBBqGGyfxBcQxIrgLLLLxbPHOTNHOTgWM_0", "role": "member" }
]
}
{
"access_mode": "public",
"entries": []
}
{
"access_mode": "private",
"entries": [
{
"id": "u_kd2Wm6QCf9nBBqGGyfxBcQxIrgLLLLxbPHOTNHOTgWM_0",
"role": "member",
"type": "user"
},
{
"id": "u_9xXGnqPB4mLTNhOlHMHXqYbGrGFOTuQIRWlqLpKq0dE_0",
"role": "member",
"type": "user"
}
]
}
{
"access_mode": "private",
"entries": []
}
{
"access_mode": "private",
"entries": [
{
"added_at": "2026-08-11T10:00:00.000Z",
"id": "u_kd2Wm6QCf9nBBqGGyfxBcQxIrgLLLLxbPHOTNHOTgWM_0",
"role": "member",
"type": "user"
},
{
"added_at": "2026-08-11T11:30:00.000Z",
"id": "u_9xXGnqPB4mLTNhOlHMHXqYbGrGFOTuQIRWlqLpKq0dE_0",
"role": "member",
"type": "user"
}
]
}
{
"error": "Bad Request",
"message": "Duplicate ACL entry for user \"u_kd2Wm6QCf9nBBqGGyfxBcQxIrgLLLLxbPHOTNHOTgWM_0\"",
"statusCode": 400
}
{
"error": "Bad Request",
"message": "ACL entries are not supported when access_mode is \"public\"",
"statusCode": 400
}
{
"error": "Bad Request",
"message": "[request body.entries]: array size is [101], but cannot be greater than [100]",
"statusCode": 400
}
{
"attributes": {
"trace_id": "8d4f2a3b-1c5e-4a9b-9f0d-2e6c1a3d4f5e"
},
"error": "Not Found",
"message": "Conversation my-conversation-id not found",
"statusCode": 404
}