curl --request PUT \
--url 'https://api-prod.usefini.com/v2/tag-groups/f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"description": "Post-reply outcome tags for downstream ticket workflows and reporting.",
"prompt": "Choose the single outcome tag that best captures the final assistant handling.",
"multiselect": false,
"isOutputTagGroup": true
}'
import requests
tag_group_id = "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5"
response = requests.put(
f"https://api-prod.usefini.com/v2/tag-groups/{tag_group_id}/public",
headers={
"Authorization": "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
json={
"description": "Post-reply outcome tags for downstream ticket workflows and reporting.",
"prompt": "Choose the single outcome tag that best captures the assistant's final handling.",
"multiselect": False,
"isOutputTagGroup": True,
},
)
tag_group = response.json()
const tagGroupId = "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5";
const response = await fetch(
`https://api-prod.usefini.com/v2/tag-groups/${tagGroupId}/public`,
{
method: "PUT",
headers: {
Authorization: "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
description:
"Post-reply outcome tags for downstream ticket workflows and reporting.",
prompt:
"Choose the single outcome tag that best captures the assistant's final handling.",
multiselect: false,
isOutputTagGroup: true,
}),
}
);
const tagGroup = await response.json();
{
"id": "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5",
"createdAt": "2026-06-19T07:30:11.000Z",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"title": "Resolution Outcome",
"description": "Post-reply outcome tags for downstream ticket workflows and reporting.",
"prompt": "Choose the single outcome tag that best captures the assistant's final handling.",
"multiselect": false,
"updatedAt": "2026-06-19T07:46:09.000Z",
"mandatory": false,
"isOutputTagGroup": true
}
Tag groups
Update tag group
Update a custom tag group.
PUT
/
v2
/
tag-groups
/
{id}
/
public
curl --request PUT \
--url 'https://api-prod.usefini.com/v2/tag-groups/f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"description": "Post-reply outcome tags for downstream ticket workflows and reporting.",
"prompt": "Choose the single outcome tag that best captures the final assistant handling.",
"multiselect": false,
"isOutputTagGroup": true
}'
import requests
tag_group_id = "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5"
response = requests.put(
f"https://api-prod.usefini.com/v2/tag-groups/{tag_group_id}/public",
headers={
"Authorization": "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
json={
"description": "Post-reply outcome tags for downstream ticket workflows and reporting.",
"prompt": "Choose the single outcome tag that best captures the assistant's final handling.",
"multiselect": False,
"isOutputTagGroup": True,
},
)
tag_group = response.json()
const tagGroupId = "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5";
const response = await fetch(
`https://api-prod.usefini.com/v2/tag-groups/${tagGroupId}/public`,
{
method: "PUT",
headers: {
Authorization: "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
description:
"Post-reply outcome tags for downstream ticket workflows and reporting.",
prompt:
"Choose the single outcome tag that best captures the assistant's final handling.",
multiselect: false,
isOutputTagGroup: true,
}),
}
);
const tagGroup = await response.json();
{
"id": "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5",
"createdAt": "2026-06-19T07:30:11.000Z",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"title": "Resolution Outcome",
"description": "Post-reply outcome tags for downstream ticket workflows and reporting.",
"prompt": "Choose the single outcome tag that best captures the assistant's final handling.",
"multiselect": false,
"updatedAt": "2026-06-19T07:46:09.000Z",
"mandatory": false,
"isOutputTagGroup": true
}
Updates a custom tag group and returns the stored
TagGroup.
Supported contract: use this route for workspace-owned custom groups. Fini-managed groups are read-only in the product model.
Headers
string
required
Bearer token containing your Fini workspace API key. Format:
Bearer fini_... The key needs write scope.string
required
application/jsonPath parameters
string
required
Tag group ID to update.
Body parameters
string
Updated group title.
string
Updated group description.
string
Updated AI-instruction text.
boolean
Updated multi-select behavior.
boolean
Updated flag for output-only groups. If
true, this group will not be available in Rulebooks, including intent-based rules, so leave it false for routing or other Rulebook conditions.curl --request PUT \
--url 'https://api-prod.usefini.com/v2/tag-groups/f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"description": "Post-reply outcome tags for downstream ticket workflows and reporting.",
"prompt": "Choose the single outcome tag that best captures the final assistant handling.",
"multiselect": false,
"isOutputTagGroup": true
}'
import requests
tag_group_id = "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5"
response = requests.put(
f"https://api-prod.usefini.com/v2/tag-groups/{tag_group_id}/public",
headers={
"Authorization": "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
json={
"description": "Post-reply outcome tags for downstream ticket workflows and reporting.",
"prompt": "Choose the single outcome tag that best captures the assistant's final handling.",
"multiselect": False,
"isOutputTagGroup": True,
},
)
tag_group = response.json()
const tagGroupId = "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5";
const response = await fetch(
`https://api-prod.usefini.com/v2/tag-groups/${tagGroupId}/public`,
{
method: "PUT",
headers: {
Authorization: "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
description:
"Post-reply outcome tags for downstream ticket workflows and reporting.",
prompt:
"Choose the single outcome tag that best captures the assistant's final handling.",
multiselect: false,
isOutputTagGroup: true,
}),
}
);
const tagGroup = await response.json();
Response
Returns the updatedTagGroup.
{
"id": "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5",
"createdAt": "2026-06-19T07:30:11.000Z",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"title": "Resolution Outcome",
"description": "Post-reply outcome tags for downstream ticket workflows and reporting.",
"prompt": "Choose the single outcome tag that best captures the assistant's final handling.",
"multiselect": false,
"updatedAt": "2026-06-19T07:46:09.000Z",
"mandatory": false,
"isOutputTagGroup": true
}
Current controller behavior: unknown IDs and attempts to update Fini-managed groups currently surface as
500 Internal Server Error rather than a dedicated 404 or 409.Errors
400 Bad Request
400 Bad Request
The body is malformed.
401 Unauthorized
401 Unauthorized
The API key is missing, malformed, revoked, or invalid.
403 Forbidden
403 Forbidden
The API key does not include the
write scope required for this route.500 Internal Server Error
500 Internal Server Error
Fini failed while updating the tag group. Unknown or non-editable IDs currently surface here as well.
Was this page helpful?

