curl --request PATCH \
--url https://api.sigmamind.ai/v1/knowledge-bases/{kbId} \
--header 'Content-Type: multipart/form-data' \
--header 'X-API-Key: <api-key>' \
--form 'knowledge_base_files=<string>' \
--form knowledge_base_files.items='@example-file'import requests
url = "https://api.sigmamind.ai/v1/knowledge-bases/{kbId}"
files = { "knowledge_base_files.items": ("example-file", open("example-file", "rb")) }
payload = { "knowledge_base_files": "<string>" }
headers = {"X-API-Key": "<api-key>"}
response = requests.patch(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('knowledge_base_files', '<string>');
form.append('knowledge_base_files.items', '{
"fileName": "example-file"
}');
const options = {method: 'PATCH', headers: {'X-API-Key': '<api-key>'}};
options.body = form;
fetch('https://api.sigmamind.ai/v1/knowledge-bases/{kbId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sigmamind.ai/v1/knowledge-bases/{kbId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sigmamind.ai/v1/knowledge-bases/{kbId}"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.sigmamind.ai/v1/knowledge-bases/{kbId}")
.header("X-API-Key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sigmamind.ai/v1/knowledge-bases/{kbId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"kbId": "kb_6sbr3tbMX757M0VD",
"name": "Support FAQs",
"files": [
{
"documentId": "doc_a1b2c3d4e5f67890",
"type": "url",
"content": "https://docs.example.com/guide"
}
],
"createdAt": "2026-05-06T11:15:02.073Z",
"updatedAt": "2026-05-06T11:15:02.073Z"
}{
"error": "Bad Request",
"message": "Invalid request parameters",
"path": "/v1/knowledge-bases",
"status": 400,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Unauthorized",
"message": "X-API-Key is missing or invalid",
"path": "/v1/knowledge-bases",
"status": 401,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Forbidden",
"message": "Access denied for this resource",
"path": "/v1/knowledge-bases",
"status": 403,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Not Found",
"message": "The requested resource was not found",
"path": "/v1/knowledge-bases",
"status": 404,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Payload Too Large",
"message": "An uploaded file exceeds the per-file size limit (25 MB).",
"path": "/v1/knowledge-bases",
"status": 413,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Unsupported Media Type",
"message": "Uploaded file type is not supported. Allowed: PDF, TXT, HTML, Markdown, DOCX.",
"path": "/v1/knowledge-bases",
"status": 415,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Internal Server Error",
"message": "Something went wrong on the server",
"path": "/v1/knowledge-bases",
"status": 500,
"timestamp": "2026-05-14T14:27:22.199Z"
}Update knowledge base
Updates a knowledge base by adding new sources and/or modifying its name. Supported file types include PDF, TXT, HTML, Markdown, and DOCX. Maximum file size is 25 MB.
curl --request PATCH \
--url https://api.sigmamind.ai/v1/knowledge-bases/{kbId} \
--header 'Content-Type: multipart/form-data' \
--header 'X-API-Key: <api-key>' \
--form 'knowledge_base_files=<string>' \
--form knowledge_base_files.items='@example-file'import requests
url = "https://api.sigmamind.ai/v1/knowledge-bases/{kbId}"
files = { "knowledge_base_files.items": ("example-file", open("example-file", "rb")) }
payload = { "knowledge_base_files": "<string>" }
headers = {"X-API-Key": "<api-key>"}
response = requests.patch(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('knowledge_base_files', '<string>');
form.append('knowledge_base_files.items', '{
"fileName": "example-file"
}');
const options = {method: 'PATCH', headers: {'X-API-Key': '<api-key>'}};
options.body = form;
fetch('https://api.sigmamind.ai/v1/knowledge-bases/{kbId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sigmamind.ai/v1/knowledge-bases/{kbId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sigmamind.ai/v1/knowledge-bases/{kbId}"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.sigmamind.ai/v1/knowledge-bases/{kbId}")
.header("X-API-Key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sigmamind.ai/v1/knowledge-bases/{kbId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"kbId": "kb_6sbr3tbMX757M0VD",
"name": "Support FAQs",
"files": [
{
"documentId": "doc_a1b2c3d4e5f67890",
"type": "url",
"content": "https://docs.example.com/guide"
}
],
"createdAt": "2026-05-06T11:15:02.073Z",
"updatedAt": "2026-05-06T11:15:02.073Z"
}{
"error": "Bad Request",
"message": "Invalid request parameters",
"path": "/v1/knowledge-bases",
"status": 400,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Unauthorized",
"message": "X-API-Key is missing or invalid",
"path": "/v1/knowledge-bases",
"status": 401,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Forbidden",
"message": "Access denied for this resource",
"path": "/v1/knowledge-bases",
"status": 403,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Not Found",
"message": "The requested resource was not found",
"path": "/v1/knowledge-bases",
"status": 404,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Payload Too Large",
"message": "An uploaded file exceeds the per-file size limit (25 MB).",
"path": "/v1/knowledge-bases",
"status": 413,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Unsupported Media Type",
"message": "Uploaded file type is not supported. Allowed: PDF, TXT, HTML, Markdown, DOCX.",
"path": "/v1/knowledge-bases",
"status": 415,
"timestamp": "2026-05-14T14:27:22.199Z"
}{
"error": "Internal Server Error",
"message": "Something went wrong on the server",
"path": "/v1/knowledge-bases",
"status": 500,
"timestamp": "2026-05-14T14:27:22.199Z"
}Authorizations
Authenticate every request by passing your API key in the X-API-Key header. To get your key, go to Dashboard → API Keys and create or copy your Production API key.
Path Parameters
Knowledge base id to change.
Query Parameters
New name, if you want to rename. Names do not need to be unique.
Optional new text sources. Send as one form field whose value is a JSON array string. Example: knowledge_base_texts=["Hello",{"title":"Q","text":"A"}].
Optional new URL sources. Send as one form field whose value is a JSON array of URL strings (not native repeated fields). Example: knowledge_base_urls=["https://example.com/docs"].
Body
Optional files, field may be repeated. Allowed file types: PDF, TXT, HTML, Markdown, DOCX. Max file size - 25 MB
Response
Updated knowledge base.
A knowledge base and its sources.
Use this id in the URL when fetching, updating, or deleting this knowledge base.
1 - 64"kb_6sbr3tbMX757M0VD"
Knowledge base name
512"Support FAQs"
Ordered sources; each item has documentId, type, and content.
Show child attributes
Show child attributes
When the knowledge base was created.
"2026-05-06T11:15:02.073Z"
When the knowledge base or its sources were last changed.
"2026-05-06T11:15:02.073Z"