Update a knowledge source
curl --request PATCH \
--url https://api.kallabot.com/v1/knowledge/sources/{source_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"text": "<string>"
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', text: '<string>'})
};
fetch('https://api.kallabot.com/v1/knowledge/sources/{source_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.kallabot.com/v1/knowledge/sources/{source_id}"
payload = {
"name": "<string>",
"text": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"source": {
"id": "<string>",
"name": "<string>",
"kind": "text",
"status": "processing",
"char_count": 123,
"source_url": "<string>",
"file_name": "<string>",
"error": "<string>",
"progress": 123,
"warnings": [
{
"code": "<string>",
"message": "<string>",
"pages": [
123
]
}
],
"chunks": 123,
"indexed_at": "<string>",
"refresh_interval_hours": 123,
"last_refreshed_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"used_by": [
{
"id": "<string>",
"name": "<string>"
}
],
"used_elsewhere": 123
},
"changed": [
"name"
]
}{
"type": "https://docs.kallabot.com/errors/unsupported_api_version",
"title": "Kallabot-Version names a version this API doesn't have",
"status": 400,
"code": "unsupported_api_version",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/unauthenticated",
"title": "Missing or invalid API key",
"status": 401,
"code": "unauthenticated",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/insufficient_scope",
"title": "The key lacks a required scope",
"status": 403,
"code": "insufficient_scope",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/not_found",
"title": "Not found (or not visible to this key)",
"status": 404,
"code": "not_found",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/revision_conflict",
"title": "Conflicts with the resource's current state",
"status": 409,
"code": "revision_conflict",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/invalid_request",
"title": "One or more fields are not valid",
"status": 422,
"code": "invalid_request",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/sdk_version_unsupported",
"title": "This SDK release is switched off: upgrade the SDK",
"status": 426,
"code": "sdk_version_unsupported",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/rate_limited",
"title": "Too many requests",
"status": 429,
"code": "rate_limited",
"retryable": true
}{
"type": "https://docs.kallabot.com/errors/internal_error",
"title": "Something went wrong on our side",
"status": 500,
"code": "internal_error",
"retryable": true
}Knowledge
Update a knowledge source
Renames a source, or replaces the text of a pasted-text source (it is indexed again; a ready source keeps answering from its old text meanwhile). Websites and sheets are read again with resync; a file is replaced by adding it again.
Scopes: knowledge:write
PATCH
/
v1
/
knowledge
/
sources
/
{source_id}
Update a knowledge source
curl --request PATCH \
--url https://api.kallabot.com/v1/knowledge/sources/{source_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"text": "<string>"
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', text: '<string>'})
};
fetch('https://api.kallabot.com/v1/knowledge/sources/{source_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.kallabot.com/v1/knowledge/sources/{source_id}"
payload = {
"name": "<string>",
"text": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"source": {
"id": "<string>",
"name": "<string>",
"kind": "text",
"status": "processing",
"char_count": 123,
"source_url": "<string>",
"file_name": "<string>",
"error": "<string>",
"progress": 123,
"warnings": [
{
"code": "<string>",
"message": "<string>",
"pages": [
123
]
}
],
"chunks": 123,
"indexed_at": "<string>",
"refresh_interval_hours": 123,
"last_refreshed_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"used_by": [
{
"id": "<string>",
"name": "<string>"
}
],
"used_elsewhere": 123
},
"changed": [
"name"
]
}{
"type": "https://docs.kallabot.com/errors/unsupported_api_version",
"title": "Kallabot-Version names a version this API doesn't have",
"status": 400,
"code": "unsupported_api_version",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/unauthenticated",
"title": "Missing or invalid API key",
"status": 401,
"code": "unauthenticated",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/insufficient_scope",
"title": "The key lacks a required scope",
"status": 403,
"code": "insufficient_scope",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/not_found",
"title": "Not found (or not visible to this key)",
"status": 404,
"code": "not_found",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/revision_conflict",
"title": "Conflicts with the resource's current state",
"status": 409,
"code": "revision_conflict",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/invalid_request",
"title": "One or more fields are not valid",
"status": 422,
"code": "invalid_request",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/sdk_version_unsupported",
"title": "This SDK release is switched off: upgrade the SDK",
"status": 426,
"code": "sdk_version_unsupported",
"retryable": false
}{
"type": "https://docs.kallabot.com/errors/rate_limited",
"title": "Too many requests",
"status": 429,
"code": "rate_limited",
"retryable": true
}{
"type": "https://docs.kallabot.com/errors/internal_error",
"title": "Something went wrong on our side",
"status": 500,
"code": "internal_error",
"retryable": true
}Authorizations
An API key from Settings → API keys, sent as Authorization: Bearer kb_live_…. A workspace key starts kb_; a personal key starts kbp_ and acts as its owner.
Headers
The API version to answer as, a date (YYYY-MM-DD). Leave it out for the current version (2026-11-07). An unknown version is refused with 400 unsupported_api_version.
Available options:
2026-11-07 Example:
"2026-11-07"
Path Parameters
Body
application/json
Maximum string length:
480New text; pasted-text sources only.