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"
}{
"error": "Service temporarily unavailable",
"message": "We could not check your API key. Please retry shortly."
}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"
}{
"error": "Service temporarily unavailable",
"message": "We could not check your API key. Please retry shortly."
}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 this folder's documents; 350 when left out or null.
100 <= x <= 2000Default token overlap between this folder's chunks, at most half of chunkSize (175 without one); 0 when left out or null.
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.

