Declare, in one request, several of the knowledge base's tag definitions. POST on this path defines exactly one tag; this is the same write over a list, and every slot the body names is written to the declaration it carries while slots it does not name are left alone. Updating an existing definition requires naming its current name in originalDisplayName; that is the only form that edits one in place. Without it the entry is a create, and a requested tagSlot another name already holds is refused in errors — it is neither overwritten nor relocated to a different slot, so an explicitly requested slot always means that slot or an error. A create whose displayName already exists is refused in errors. Per-definition failures are reported in errors and still answer 200. This writes the vocabulary, not one document's tag values — set those with PATCH /api/v2/knowledge/{knowledgeBaseId}/documents/{documentId}. A workspace API key is rejected with 403; use a personal API key.
/api/v2/knowledge/{knowledgeBaseId}/tagsAuthorization
apiKey Your Sim API key, personal or workspace-scoped. Generate one under Settings, then API Keys. Operations that reject workspace keys say so in their own description.
In: header
Path Parameters
Unique knowledge base identifier.
1 <= lengthRequest Body
application/json
Workspace scope and the tag definitions to create or update.
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://www.sim.ai/api/v2/knowledge/string/tags" \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64", "definitions": [ { "tagSlot": "tag1", "displayName": "category", "fieldType": "text" } ] }'{
"data": {
"created": [
{
"id": "string",
"displayName": "category",
"tagSlot": "tag1",
"fieldType": "text"
}
],
"updated": [
{
"id": "string",
"displayName": "category",
"tagSlot": "tag1",
"fieldType": "text"
}
],
"errors": [
"string"
]
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "Invalid request"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "API key required"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient workspace permissions",
"details": {
"code": "INSUFFICIENT_WORKSPACE_ROLE"
}
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Not found"
}
}{
"error": {
"code": "PAYLOAD_TOO_LARGE",
"message": "Request body is too large"
}
}{
"error": {
"code": "UNSUPPORTED_MEDIA_TYPE",
"message": "Request body must be sent as application/json"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "API rate limit exceeded",
"details": {
"retryAfter": "2026-01-01T00:00:30.000Z"
}
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service temporarily unavailable"
}
}