> ## 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.
# List tags across groups
> List tags across one or more tag groups as a flat array.
Lists tags across one or more tag groups as a single flat array, ordered by `createdAt` descending.
## Headers
<ParamField header="Authorization" type="string" required>
Bearer token containing your Fini workspace API key. Format: `Bearer fini_...` The key needs `read` scope.
</ParamField>
## Query parameters
<ParamField query="tagGroupIds" type="array" required>
One or more tag group IDs. Pass repeated query params such as `?tagGroupIds=id1&tagGroupIds=id2`. This route does not accept a comma-separated CSV string.
</ParamField>
<RequestExample>
~~~bash cURL theme={null}
curl --request GET \
--url 'https://api-prod.usefini.com/v2/tag-groups/tags/public?tagGroupIds=4fbcebbd-693d-4fb8-84b2-c8fd0edee4c5&tagGroupIds=f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5' \
--header 'Authorization: Bearer fini_your_api_key'
~~~
~~~python Python theme={null}
import requests
response = requests.get(
"https://api-prod.usefini.com/v2/tag-groups/tags/public",
headers={"Authorization": "Bearer fini_your_api_key"},
params=[
("tagGroupIds", "4fbcebbd-693d-4fb8-84b2-c8fd0edee4c5"),
("tagGroupIds", "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5"),
],
)
tags = response.json()
~~~
~~~javascript Node.js theme={null}
const params = new URLSearchParams();
params.append("tagGroupIds", "4fbcebbd-693d-4fb8-84b2-c8fd0edee4c5");
params.append("tagGroupIds", "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5");
const response = await fetch(
`https://api-prod.usefini.com/v2/tag-groups/tags/public?${params.toString()}`,
{
headers: {
Authorization: "Bearer fini_your_api_key",
},
}
);
const tags = await response.json();
~~~
</RequestExample>
## Response
The response is a top-level array of [`Tag`](/en/api-reference/tags#tag-object) objects. The response is not grouped by `tagGroupId`; if you need grouped data, regroup the flat array client-side.
<ResponseExample>
~~~json 200 OK theme={null}
[
{
"id": "0dc53764-a417-4a4f-b7f4-63149529f530",
"createdAt": "2026-06-19T07:32:10.000Z",
"tagGroupId": "f770d0bb-d5ea-44e7-a92a-fcfa2d5a32d5",
"tagName": "resolved_by_ai",
"tagDescription": "Use when the assistant fully resolved the request."
},
{
"id": "2bd5626c-2122-478c-9c34-94fcf2d2cccb",
"createdAt": "2026-06-12T10:17:02.000Z",
"tagGroupId": "4fbcebbd-693d-4fb8-84b2-c8fd0edee4c5",
"tagName": "Cancel Order",
"tagDescription": "Use when the customer wants to cancel an existing order."
}
]
~~~
~~~json 400 Bad Request theme={null}
{
"statusCode": 400,
"message": "Invalid tag group ID. Some groups do not exist or do not belong to your company.",
"error": "Bad Request"
}
~~~
</ResponseExample>
## Errors
<AccordionGroup>
<Accordion title="400 Bad Request" icon="circle-exclamation">
`tagGroupIds` is missing, malformed, or includes one or more IDs the controller rejects.
</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 `read` scope required for this route.
</Accordion>
<Accordion title="500 Internal Server Error" icon="triangle-exclamation">
Fini failed while loading tags from storage.
</Accordion>
</AccordionGroup>
## Related topics
- [Overview](/en/api-reference/tags.md)
- [List tag groups](/en/api-reference/list-tag-groups.md)
- [List tags in group](/en/api-reference/list-tags-in-group.md)
This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.
Tags

