Create Knowledgebase API
Upload a PDF document or provide a URL to create a knowledgebase, enhancing your Bolna Voice AI agent’s information base and response accuracy.
curl --request POST \
--url https://api.bolna.ai/knowledgebase \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form url=https://example.com/docs \
--form chunk_size=512 \
--form similarity_top_k=15 \
--form overlapping=128 \
--form language_support=multilingualimport requests
url = "https://api.bolna.ai/knowledgebase"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"url": "https://example.com/docs",
"chunk_size": "512",
"similarity_top_k": "15",
"overlapping": "128",
"language_support": "multilingual"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('url', 'https://example.com/docs');
form.append('chunk_size', '512');
form.append('similarity_top_k', '15');
form.append('overlapping', '128');
form.append('language_support', 'multilingual');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.bolna.ai/knowledgebase', 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.bolna.ai/knowledgebase",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\nhttps://example.com/docs\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_size\"\r\n\r\n512\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"similarity_top_k\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"overlapping\"\r\n\r\n128\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_support\"\r\n\r\nmultilingual\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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.bolna.ai/knowledgebase"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\nhttps://example.com/docs\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_size\"\r\n\r\n512\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"similarity_top_k\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"overlapping\"\r\n\r\n128\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_support\"\r\n\r\nmultilingual\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bolna.ai/knowledgebase")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\nhttps://example.com/docs\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_size\"\r\n\r\n512\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"similarity_top_k\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"overlapping\"\r\n\r\n128\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_support\"\r\n\r\nmultilingual\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bolna.ai/knowledgebase")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\nhttps://example.com/docs\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_size\"\r\n\r\n512\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"similarity_top_k\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"overlapping\"\r\n\r\n128\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_support\"\r\n\r\nmultilingual\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"rag_id": "3c90c3xs0d444b5088228dd25736052a",
"file_name": "sample-rag.pdf",
"status": "processing",
"source_type": "pdf",
"language_support": "multilingual"
}{
"error": 123,
"message": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
PDF file to upload (max 20 MB). Required if url is not provided.
URL to scrape and ingest as knowledgebase. Required if file is not provided.
"https://example.com/docs"
Chunk size for embedding model
512
Number of top similar nodes to return.
15
Number of characters which overlap in between neighboring nodes.
128
Enable multilingual support for the knowledgebase. When set to multilingual, enables cross-lingual retrieval across 100+ languages. This allows you to upload documents in any language and query them in any language. If not provided, the default English-optimized configuration is used.
multilingual "multilingual"
Response
knowledgebase create status response
The ID of the knowledgebase
"3c90c3xs0d444b5088228dd25736052a"
File name of the PDF uploaded or URL ingested
"sample-rag.pdf"
Status of the knowledgebase. Initially the status would be processing.
processing, processed, error "processing"
Type of source ingested
pdf, url "pdf"
Language support mode of the knowledgebase. multilingual if enabled, null otherwise.
multilingual "multilingual"
Was this page helpful?
curl --request POST \
--url https://api.bolna.ai/knowledgebase \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form url=https://example.com/docs \
--form chunk_size=512 \
--form similarity_top_k=15 \
--form overlapping=128 \
--form language_support=multilingualimport requests
url = "https://api.bolna.ai/knowledgebase"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"url": "https://example.com/docs",
"chunk_size": "512",
"similarity_top_k": "15",
"overlapping": "128",
"language_support": "multilingual"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('url', 'https://example.com/docs');
form.append('chunk_size', '512');
form.append('similarity_top_k', '15');
form.append('overlapping', '128');
form.append('language_support', 'multilingual');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.bolna.ai/knowledgebase', 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.bolna.ai/knowledgebase",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\nhttps://example.com/docs\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_size\"\r\n\r\n512\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"similarity_top_k\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"overlapping\"\r\n\r\n128\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_support\"\r\n\r\nmultilingual\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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.bolna.ai/knowledgebase"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\nhttps://example.com/docs\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_size\"\r\n\r\n512\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"similarity_top_k\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"overlapping\"\r\n\r\n128\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_support\"\r\n\r\nmultilingual\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bolna.ai/knowledgebase")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\nhttps://example.com/docs\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_size\"\r\n\r\n512\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"similarity_top_k\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"overlapping\"\r\n\r\n128\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_support\"\r\n\r\nmultilingual\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bolna.ai/knowledgebase")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\nhttps://example.com/docs\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_size\"\r\n\r\n512\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"similarity_top_k\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"overlapping\"\r\n\r\n128\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_support\"\r\n\r\nmultilingual\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"rag_id": "3c90c3xs0d444b5088228dd25736052a",
"file_name": "sample-rag.pdf",
"status": "processing",
"source_type": "pdf",
"language_support": "multilingual"
}{
"error": 123,
"message": "<string>"
}
