curl --request POST \ --url 'https://api-prod.usefini.com/v2/tag-groups/public' \ --header 'Authorization: Bearer fini_your_api_key' \ --header 'Content-Type: application/json' \ --data '{ "title": "Resolution Outcome", "description": "Post-reply outcome tags for downstream workflows.", "prompt": "Apply the tag that best describes how the assistant handled the conversation.", "multiselect": false, "isOutputTagGroup": true }'
import requestsresponse = requests.post( "https://api-prod.usefini.com/v2/tag-groups/public", headers={ "Authorization": "Bearer fini_your_api_key", "Content-Type": "application/json", }, json={ "title": "Resolution Outcome", "description": "Post-reply outcome tags for downstream workflows.", "prompt": "Apply the tag that best describes how the assistant handled the conversation.", "multiselect": False, "isOutputTagGroup": True, },)tag_group = response.json()
const response = await fetch( "https://api-prod.usefini.com/v2/tag-groups/public", { method: "POST", headers: { Authorization: "Bearer fini_your_api_key", "Content-Type": "application/json", }, body: JSON.stringify({ title: "Resolution Outcome", description: "Post-reply outcome tags for downstream workflows.", prompt: "Apply the tag that best describes how the assistant handled the conversation.", 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 workflows.", "prompt": "Apply the tag that best describes how the assistant handled the conversation.", "multiselect": false, "updatedAt": "2026-06-19T07:30:11.000Z", "mandatory": false, "isOutputTagGroup": true}
{ "statusCode": 400, "message": [ "title should not be empty" ], "error": "Bad Request"}
Tag groups
Create tag group
Create a custom tag group.
POST
/
v2
/
tag-groups
/
public
curl --request POST \ --url 'https://api-prod.usefini.com/v2/tag-groups/public' \ --header 'Authorization: Bearer fini_your_api_key' \ --header 'Content-Type: application/json' \ --data '{ "title": "Resolution Outcome", "description": "Post-reply outcome tags for downstream workflows.", "prompt": "Apply the tag that best describes how the assistant handled the conversation.", "multiselect": false, "isOutputTagGroup": true }'
import requestsresponse = requests.post( "https://api-prod.usefini.com/v2/tag-groups/public", headers={ "Authorization": "Bearer fini_your_api_key", "Content-Type": "application/json", }, json={ "title": "Resolution Outcome", "description": "Post-reply outcome tags for downstream workflows.", "prompt": "Apply the tag that best describes how the assistant handled the conversation.", "multiselect": False, "isOutputTagGroup": True, },)tag_group = response.json()
const response = await fetch( "https://api-prod.usefini.com/v2/tag-groups/public", { method: "POST", headers: { Authorization: "Bearer fini_your_api_key", "Content-Type": "application/json", }, body: JSON.stringify({ title: "Resolution Outcome", description: "Post-reply outcome tags for downstream workflows.", prompt: "Apply the tag that best describes how the assistant handled the conversation.", 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 workflows.", "prompt": "Apply the tag that best describes how the assistant handled the conversation.", "multiselect": false, "updatedAt": "2026-06-19T07:30:11.000Z", "mandatory": false, "isOutputTagGroup": true}
{ "statusCode": 400, "message": [ "title should not be empty" ], "error": "Bad Request"}
Creates a custom tag group and returns the stored TagGroup.
Optional 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 POST \ --url 'https://api-prod.usefini.com/v2/tag-groups/public' \ --header 'Authorization: Bearer fini_your_api_key' \ --header 'Content-Type: application/json' \ --data '{ "title": "Resolution Outcome", "description": "Post-reply outcome tags for downstream workflows.", "prompt": "Apply the tag that best describes how the assistant handled the conversation.", "multiselect": false, "isOutputTagGroup": true }'
import requestsresponse = requests.post( "https://api-prod.usefini.com/v2/tag-groups/public", headers={ "Authorization": "Bearer fini_your_api_key", "Content-Type": "application/json", }, json={ "title": "Resolution Outcome", "description": "Post-reply outcome tags for downstream workflows.", "prompt": "Apply the tag that best describes how the assistant handled the conversation.", "multiselect": False, "isOutputTagGroup": True, },)tag_group = response.json()
const response = await fetch( "https://api-prod.usefini.com/v2/tag-groups/public", { method: "POST", headers: { Authorization: "Bearer fini_your_api_key", "Content-Type": "application/json", }, body: JSON.stringify({ title: "Resolution Outcome", description: "Post-reply outcome tags for downstream workflows.", prompt: "Apply the tag that best describes how the assistant handled the conversation.", 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 workflows.", "prompt": "Apply the tag that best describes how the assistant handled the conversation.", "multiselect": false, "updatedAt": "2026-06-19T07:30:11.000Z", "mandatory": false, "isOutputTagGroup": true}
{ "statusCode": 400, "message": [ "title should not be empty" ], "error": "Bad Request"}