Metadata
Update Document Metadata in Batch
Update metadata values for multiple documents in a single request.
POST
/
datasets
/
{dataset_id}
/
documents
/
metadata
Update Document Metadata in Batch
curl --request POST \
--url https://{api_base_url}/datasets/{dataset_id}/documents/metadata \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"operation_data": [
{
"document_id": "<string>",
"metadata_list": [
{
"id": "<string>",
"name": "<string>",
"value": "<unknown>"
}
],
"partial_update": false
}
]
}
'import requests
url = "https://{api_base_url}/datasets/{dataset_id}/documents/metadata"
payload = { "operation_data": [
{
"document_id": "<string>",
"metadata_list": [
{
"id": "<string>",
"name": "<string>",
"value": "<unknown>"
}
],
"partial_update": False
}
] }
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({
operation_data: [
{
document_id: '<string>',
metadata_list: [{id: '<string>', name: '<string>', value: '<unknown>'}],
partial_update: false
}
]
})
};
fetch('https://{api_base_url}/datasets/{dataset_id}/documents/metadata', 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_base_url}/datasets/{dataset_id}/documents/metadata",
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([
'operation_data' => [
[
'document_id' => '<string>',
'metadata_list' => [
[
'id' => '<string>',
'name' => '<string>',
'value' => '<unknown>'
]
],
'partial_update' => false
]
]
]),
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_base_url}/datasets/{dataset_id}/documents/metadata"
payload := strings.NewReader("{\n \"operation_data\": [\n {\n \"document_id\": \"<string>\",\n \"metadata_list\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ],\n \"partial_update\": false\n }\n ]\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_base_url}/datasets/{dataset_id}/documents/metadata")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"operation_data\": [\n {\n \"document_id\": \"<string>\",\n \"metadata_list\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ],\n \"partial_update\": false\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{api_base_url}/datasets/{dataset_id}/documents/metadata")
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 \"operation_data\": [\n {\n \"document_id\": \"<string>\",\n \"metadata_list\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ],\n \"partial_update\": false\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"result": "success"
}Authorizations
Every request authenticates with an API key: Authorization: Bearer {API_KEY}. App endpoints take an app API key; knowledge endpoints take a knowledge base API key (Get Started).
Keep keys server-side; never embed them in client code. Requests with a missing or invalid key fail with HTTP 401 (unauthorized).
Path Parameters
Knowledge base ID. See List Knowledge Bases.
Body
application/json
Document metadata update operations, one entry per document.
Show child attributes
Show child attributes
Response
Document metadata updated successfully.
Operation result.
Last modified on July 17, 2026
Was this page helpful?
⌘I
Update Document Metadata in Batch
curl --request POST \
--url https://{api_base_url}/datasets/{dataset_id}/documents/metadata \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"operation_data": [
{
"document_id": "<string>",
"metadata_list": [
{
"id": "<string>",
"name": "<string>",
"value": "<unknown>"
}
],
"partial_update": false
}
]
}
'import requests
url = "https://{api_base_url}/datasets/{dataset_id}/documents/metadata"
payload = { "operation_data": [
{
"document_id": "<string>",
"metadata_list": [
{
"id": "<string>",
"name": "<string>",
"value": "<unknown>"
}
],
"partial_update": False
}
] }
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({
operation_data: [
{
document_id: '<string>',
metadata_list: [{id: '<string>', name: '<string>', value: '<unknown>'}],
partial_update: false
}
]
})
};
fetch('https://{api_base_url}/datasets/{dataset_id}/documents/metadata', 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_base_url}/datasets/{dataset_id}/documents/metadata",
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([
'operation_data' => [
[
'document_id' => '<string>',
'metadata_list' => [
[
'id' => '<string>',
'name' => '<string>',
'value' => '<unknown>'
]
],
'partial_update' => false
]
]
]),
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_base_url}/datasets/{dataset_id}/documents/metadata"
payload := strings.NewReader("{\n \"operation_data\": [\n {\n \"document_id\": \"<string>\",\n \"metadata_list\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ],\n \"partial_update\": false\n }\n ]\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_base_url}/datasets/{dataset_id}/documents/metadata")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"operation_data\": [\n {\n \"document_id\": \"<string>\",\n \"metadata_list\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ],\n \"partial_update\": false\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{api_base_url}/datasets/{dataset_id}/documents/metadata")
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 \"operation_data\": [\n {\n \"document_id\": \"<string>\",\n \"metadata_list\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ],\n \"partial_update\": false\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"result": "success"
}