curl --request POST \
--url https://api.anam.ai/v1/knowledge/groups \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Product docs",
"description": "Help-centre articles and API reference.",
"chunkSize": 800,
"chunkOverlap": 100
}
'import requests
url = "https://api.anam.ai/v1/knowledge/groups"
payload = {
"name": "Product docs",
"description": "Help-centre articles and API reference.",
"chunkSize": 800,
"chunkOverlap": 100
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Product docs',
description: 'Help-centre articles and API reference.',
chunkSize: 800,
chunkOverlap: 100
})
};
fetch('https://api.anam.ai/v1/knowledge/groups', 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.anam.ai/v1/knowledge/groups",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Product docs',
'description' => 'Help-centre articles and API reference.',
'chunkSize' => 800,
'chunkOverlap' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.anam.ai/v1/knowledge/groups"
payload := strings.NewReader("{\n \"name\": \"Product docs\",\n \"description\": \"Help-centre articles and API reference.\",\n \"chunkSize\": 800,\n \"chunkOverlap\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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.anam.ai/v1/knowledge/groups")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Product docs\",\n \"description\": \"Help-centre articles and API reference.\",\n \"chunkSize\": 800,\n \"chunkOverlap\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anam.ai/v1/knowledge/groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Product docs\",\n \"description\": \"Help-centre articles and API reference.\",\n \"chunkSize\": 800,\n \"chunkOverlap\": 100\n}"
response = http.request(request)
puts response.read_body{
"id": "00000000-0000-0000-0000-000000000000",
"name": "Product docs",
"description": "Help-centre articles and API reference.",
"documentCount": 12,
"chunkSize": 800,
"chunkOverlap": 100,
"createdAt": "2026-04-20T10:00:00.000Z",
"updatedAt": "2026-04-20T10:00:00.000Z"
}create knowledge group
Create a new knowledge group
curl --request POST \
--url https://api.anam.ai/v1/knowledge/groups \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Product docs",
"description": "Help-centre articles and API reference.",
"chunkSize": 800,
"chunkOverlap": 100
}
'import requests
url = "https://api.anam.ai/v1/knowledge/groups"
payload = {
"name": "Product docs",
"description": "Help-centre articles and API reference.",
"chunkSize": 800,
"chunkOverlap": 100
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Product docs',
description: 'Help-centre articles and API reference.',
chunkSize: 800,
chunkOverlap: 100
})
};
fetch('https://api.anam.ai/v1/knowledge/groups', 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.anam.ai/v1/knowledge/groups",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Product docs',
'description' => 'Help-centre articles and API reference.',
'chunkSize' => 800,
'chunkOverlap' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.anam.ai/v1/knowledge/groups"
payload := strings.NewReader("{\n \"name\": \"Product docs\",\n \"description\": \"Help-centre articles and API reference.\",\n \"chunkSize\": 800,\n \"chunkOverlap\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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.anam.ai/v1/knowledge/groups")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Product docs\",\n \"description\": \"Help-centre articles and API reference.\",\n \"chunkSize\": 800,\n \"chunkOverlap\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anam.ai/v1/knowledge/groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Product docs\",\n \"description\": \"Help-centre articles and API reference.\",\n \"chunkSize\": 800,\n \"chunkOverlap\": 100\n}"
response = http.request(request)
puts response.read_body{
"id": "00000000-0000-0000-0000-000000000000",
"name": "Product docs",
"description": "Help-centre articles and API reference.",
"documentCount": 12,
"chunkSize": 800,
"chunkOverlap": 100,
"createdAt": "2026-04-20T10:00:00.000Z",
"updatedAt": "2026-04-20T10:00:00.000Z"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Name and optional description for the new knowledge group. The group starts empty — upload documents separately via POST /v1/knowledge/groups/{id}/documents.
Default maximum tokens per chunk for documents processed in this group. When not set or null, the group stores the default of 350.
100 <= x <= 2000Default token overlap for documents processed in this group. Must be at most half of chunkSize, or at most 175 when chunkSize is not set. When not set or null, the group stores the default of 0.
0 <= x <= 1000Response
Successfully created knowledge group
A folder of documents that a persona can search via RAG tools.
Unique identifier for the knowledge group.
Human-readable name for the group.
Free-form description of what the group contains.
Number of non-deleted documents currently in the group.
Default maximum tokens per chunk for documents in this group. Null means documents use the default of 350.
Default token overlap for documents in this group. Null means documents use the default of 0.
Timestamp when the group was created.
Timestamp when the group was last updated.
Was this page helpful?

