Bulk Create Documents
curl --request POST \
--url https://api.cartesia.ai/agents/documents/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Cartesia-Version: <cartesia-version>' \
--header 'Content-Type: application/json' \
--data '
{
"documents": [
{
"folder_id": "<string>",
"content": "<string>",
"name": "<string>",
"metadata": {}
}
]
}
'import requests
url = "https://api.cartesia.ai/agents/documents/bulk"
payload = { "documents": [
{
"folder_id": "<string>",
"content": "<string>",
"name": "<string>",
"metadata": {}
}
] }
headers = {
"Cartesia-Version": "<cartesia-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Cartesia-Version': '<cartesia-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
documents: [{folder_id: '<string>', content: '<string>', name: '<string>', metadata: {}}]
})
};
fetch('https://api.cartesia.ai/agents/documents/bulk', 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.cartesia.ai/agents/documents/bulk",
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([
'documents' => [
[
'folder_id' => '<string>',
'content' => '<string>',
'name' => '<string>',
'metadata' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Cartesia-Version: <cartesia-version>",
"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.cartesia.ai/agents/documents/bulk"
payload := strings.NewReader("{\n \"documents\": [\n {\n \"folder_id\": \"<string>\",\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"metadata\": {}\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Cartesia-Version", "<cartesia-version>")
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.cartesia.ai/agents/documents/bulk")
.header("Cartesia-Version", "<cartesia-version>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"documents\": [\n {\n \"folder_id\": \"<string>\",\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"metadata\": {}\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cartesia.ai/agents/documents/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Cartesia-Version"] = '<cartesia-version>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"documents\": [\n {\n \"folder_id\": \"<string>\",\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"metadata\": {}\n }\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"name": "<string>",
"content": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"metadata": {}
}
]Documents
Bulk Create Documents
Upload up to 100 knowledge base documents in a single request
POST
/
agents
/
documents
/
bulk
Bulk Create Documents
curl --request POST \
--url https://api.cartesia.ai/agents/documents/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Cartesia-Version: <cartesia-version>' \
--header 'Content-Type: application/json' \
--data '
{
"documents": [
{
"folder_id": "<string>",
"content": "<string>",
"name": "<string>",
"metadata": {}
}
]
}
'import requests
url = "https://api.cartesia.ai/agents/documents/bulk"
payload = { "documents": [
{
"folder_id": "<string>",
"content": "<string>",
"name": "<string>",
"metadata": {}
}
] }
headers = {
"Cartesia-Version": "<cartesia-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Cartesia-Version': '<cartesia-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
documents: [{folder_id: '<string>', content: '<string>', name: '<string>', metadata: {}}]
})
};
fetch('https://api.cartesia.ai/agents/documents/bulk', 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.cartesia.ai/agents/documents/bulk",
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([
'documents' => [
[
'folder_id' => '<string>',
'content' => '<string>',
'name' => '<string>',
'metadata' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Cartesia-Version: <cartesia-version>",
"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.cartesia.ai/agents/documents/bulk"
payload := strings.NewReader("{\n \"documents\": [\n {\n \"folder_id\": \"<string>\",\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"metadata\": {}\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Cartesia-Version", "<cartesia-version>")
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.cartesia.ai/agents/documents/bulk")
.header("Cartesia-Version", "<cartesia-version>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"documents\": [\n {\n \"folder_id\": \"<string>\",\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"metadata\": {}\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cartesia.ai/agents/documents/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Cartesia-Version"] = '<cartesia-version>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"documents\": [\n {\n \"folder_id\": \"<string>\",\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"metadata\": {}\n }\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"name": "<string>",
"content": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"metadata": {}
}
]Authorizations
Cartesia API key (sk_car_...). Get one at play.cartesia.ai/keys.
Headers
API version header.
Available options:
2026-03-01 Example:
"2026-03-01"
Body
application/json
The documents to upload. Up to 100 per request.
Maximum array length:
100Show child attributes
Show child attributes
Response
Documents created.
The ID of the document.
The document's display name, or null if unnamed.
The full document text.
When the document was uploaded.
User-defined string-keyed metadata.
Show child attributes
Show child attributes
Was this page helpful?
⌘I