curl --request GET \
--url 'https://api-prod.usefini.com/v2/tag-groups/public' \
--header 'Authorization: Bearer fini_your_api_key'
import requests
response = requests.get(
"https://api-prod.usefini.com/v2/tag-groups/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
tag_groups = response.json()
const response = await fetch(
"https://api-prod.usefini.com/v2/tag-groups/public",
{
headers: {
Authorization: "Bearer fini_your_api_key",
},
}
);
const tagGroups = await response.json();
[
{
"id": "4fbcebbd-693d-4fb8-84b2-c8fd0edee4c5",
"createdAt": "2026-06-12T10:14:22.000Z",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"title": "Order Intent",
"description": "Primary order-related intent used for routing and reporting.",
"prompt": "Choose the single tag that best describes the customer's order request.",
"multiselect": false,
"updatedAt": "2026-06-12T10:14:22.000Z",
"mandatory": false,
"isOutputTagGroup": false
},
{
"id": "a7f8e849-0a1c-4d95-a311-0cb1ffbe4b4d",
"createdAt": "2026-05-01T08:00:00.000Z",
"companyId": null,
"title": "Conversation Status",
"description": "Tracks the final state of the conversation.",
"prompt": "Select the final conversation state based on the assistant's most recent handling outcome.",
"multiselect": false,
"updatedAt": "2026-05-01T08:00:00.000Z",
"mandatory": true,
"isOutputTagGroup": false
}
]
{
"statusCode": 401,
"message": "Invalid or revoked API key",
"error": "Unauthorized"
}
{
"statusCode": 403,
"message": "API key does not have the required scope for this operation",
"error": "Forbidden"
}
Tag groups
List tag groups
List the tag groups visible to your workspace API key, including Fini defaults and workspace-owned custom groups.
GET
/
v2
/
tag-groups
/
public
curl --request GET \
--url 'https://api-prod.usefini.com/v2/tag-groups/public' \
--header 'Authorization: Bearer fini_your_api_key'
import requests
response = requests.get(
"https://api-prod.usefini.com/v2/tag-groups/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
tag_groups = response.json()
const response = await fetch(
"https://api-prod.usefini.com/v2/tag-groups/public",
{
headers: {
Authorization: "Bearer fini_your_api_key",
},
}
);
const tagGroups = await response.json();
[
{
"id": "4fbcebbd-693d-4fb8-84b2-c8fd0edee4c5",
"createdAt": "2026-06-12T10:14:22.000Z",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"title": "Order Intent",
"description": "Primary order-related intent used for routing and reporting.",
"prompt": "Choose the single tag that best describes the customer's order request.",
"multiselect": false,
"updatedAt": "2026-06-12T10:14:22.000Z",
"mandatory": false,
"isOutputTagGroup": false
},
{
"id": "a7f8e849-0a1c-4d95-a311-0cb1ffbe4b4d",
"createdAt": "2026-05-01T08:00:00.000Z",
"companyId": null,
"title": "Conversation Status",
"description": "Tracks the final state of the conversation.",
"prompt": "Select the final conversation state based on the assistant's most recent handling outcome.",
"multiselect": false,
"updatedAt": "2026-05-01T08:00:00.000Z",
"mandatory": true,
"isOutputTagGroup": false
}
]
{
"statusCode": 401,
"message": "Invalid or revoked API key",
"error": "Unauthorized"
}
{
"statusCode": 403,
"message": "API key does not have the required scope for this operation",
"error": "Forbidden"
}
Returns every tag group visible to the workspace API key, ordered by
createdAt descending.
Headers
Bearer token containing your Fini workspace API key. Format:
Bearer fini_... The key needs read scope.curl --request GET \
--url 'https://api-prod.usefini.com/v2/tag-groups/public' \
--header 'Authorization: Bearer fini_your_api_key'
import requests
response = requests.get(
"https://api-prod.usefini.com/v2/tag-groups/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
tag_groups = response.json()
const response = await fetch(
"https://api-prod.usefini.com/v2/tag-groups/public",
{
headers: {
Authorization: "Bearer fini_your_api_key",
},
}
);
const tagGroups = await response.json();
Response
The response is a top-level array ofTagGroup objects.
[
{
"id": "4fbcebbd-693d-4fb8-84b2-c8fd0edee4c5",
"createdAt": "2026-06-12T10:14:22.000Z",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"title": "Order Intent",
"description": "Primary order-related intent used for routing and reporting.",
"prompt": "Choose the single tag that best describes the customer's order request.",
"multiselect": false,
"updatedAt": "2026-06-12T10:14:22.000Z",
"mandatory": false,
"isOutputTagGroup": false
},
{
"id": "a7f8e849-0a1c-4d95-a311-0cb1ffbe4b4d",
"createdAt": "2026-05-01T08:00:00.000Z",
"companyId": null,
"title": "Conversation Status",
"description": "Tracks the final state of the conversation.",
"prompt": "Select the final conversation state based on the assistant's most recent handling outcome.",
"multiselect": false,
"updatedAt": "2026-05-01T08:00:00.000Z",
"mandatory": true,
"isOutputTagGroup": false
}
]
{
"statusCode": 401,
"message": "Invalid or revoked API key",
"error": "Unauthorized"
}
{
"statusCode": 403,
"message": "API key does not have the required scope for this operation",
"error": "Forbidden"
}
Errors
401 Unauthorized
401 Unauthorized
The API key is missing, malformed, revoked, or invalid.
403 Forbidden
403 Forbidden
The API key does not include the
read scope required for this route.500 Internal Server Error
500 Internal Server Error
Fini failed while loading tag groups from storage.
Was this page helpful?
⌘I

