> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usefini.com/llms.txt
> Use this file to discover all available pages before exploring further.
# Update tag group
> Update a custom tag group.
Updates a custom tag group and returns the stored [`TagGroup`](/en/api-reference/tag-groups#taggroup-object).
<Note>
Supported contract: use this route for workspace-owned custom groups. Fini-managed groups are read-only in the product model.
</Note>
## Headers
<ParamField header="Authorization" type="string" required>
Bearer token containing your Fini workspace API key. Format: `Bearer fini_...` The key needs `write` scope.
</ParamField>
<ParamField header="Content-Type" type="string" required>
`application/json`
</ParamField>
## Path parameters
<ParamField path="id" type="string" required>
Tag group ID to update.
</ParamField>
## Body parameters
<ParamField body="title" type="string">
Updated group title.
</ParamField>
<ParamField body="description" type="string">
Updated group description.
</ParamField>
<ParamField body="prompt" type="string">
Updated AI-instruction text.
</ParamField>
<ParamField body="multiselect" type="boolean">
Updated multi-select behavior.
</ParamField>
<ParamField body="isOutputTagGroup" type="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.
</ParamField>
<RequestExample>
~~~bash cURL theme={null}
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
}'
~~~
~~~python Python theme={null}
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()
~~~
~~~javascript Node.js theme={null}
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();
~~~
</RequestExample>
## Response
Returns the updated [`TagGroup`](/en/api-reference/tag-groups#taggroup-object).
<ResponseExample>
~~~json 200 OK theme={null}
{
"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
}
~~~
</ResponseExample>
<Note>
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`.
</Note>
## Errors
<AccordionGroup>
<Accordion title="400 Bad Request" icon="circle-exclamation">
The body is malformed.
</Accordion>
<Accordion title="401 Unauthorized" icon="lock">
The API key is missing, malformed, revoked, or invalid.
</Accordion>
<Accordion title="403 Forbidden" icon="shield-halved">
The API key does not include the `write` scope required for this route.
</Accordion>
<Accordion title="500 Internal Server Error" icon="triangle-exclamation">
Fini failed while updating the tag group. Unknown or non-editable IDs currently surface here as well.
</Accordion>
</AccordionGroup>
## Related topics
- [Overview](/en/api-reference/tag-groups.md)
- [Update tag](/en/api-reference/update-tag.md)
- [List tag groups](/en/api-reference/list-tag-groups.md)
This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.
Tag groups

