Skip to main content
A tag is a free-form label scoped to your org. Articles attach to tags many-to-many. Tags are flat (no hierarchy) and reusable across knowledge bases and categories — use them to slice content by audience, surface area, or any orthogonal axis that doesn’t fit the category tree.

When to reach for tags

Audience slicing

b2b, b2c, enterprise — surface different subsets of the same KB to different chatbots.

Search filters

Let users narrow KB search by topic without rebuilding your category tree.

Internal flags

needs-review, legal-approved, stale — workflow state that doesn’t belong on the status field.

Anatomy

Tags carry just an id, a name, and a creation timestamp. There is no description, color, or hierarchy. The name is unique per org.

The two surfaces

Tags live behind two related endpoints:

Tag CRUD

POST /article-tags, GET /article-tags, DELETE /article-tags/{id} manage the tag rows themselves — create reusable labels, list them, retire them.

Article tag assignments

GET /articles/{id}/tags returns the tags on one article. PUT /articles/{id} /tags replaces the full set of assignments in a single call.
There is no “add a single tag to an article” endpoint — assignments are replaced as a set. Send the full list of tag_ids you want the article to carry.

Creating tags

Listing tags

GET /article-tags paginates. Pass search to fuzzy-match on name.

Assigning tags to an article

PUT /articles/{id}/tags replaces the assignment set. Send the complete list of tag_ids you want; anything not in the list is unassigned.
To clear all tags from an article, send {"tag_ids": []}. To add a single tag to an article that already has tags, first GET /articles/{id}/tags, append the new id, then PUT the full list back.
List endpoints (GET /articles) return tag_names inline on each article. Use that to avoid a follow-up tag lookup for every row.

Deleting a tag

DELETE /article-tags/{id} removes the tag and unassigns it from every article that carried it. Articles themselves are untouched. There is no soft-delete — recreate the tag and re-assign if you change your mind.
A 204 confirms the delete. The articles that had the tag remain — only the assignment rows are dropped.