curl --request POST \
--url https://api.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"text": "<string>",
"chunk_position": 123,
"metadata": {}
}
'import requests
url = "https://api.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks"
payload = {
"text": "<string>",
"chunk_position": 123,
"metadata": {}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>', chunk_position: 123, metadata: {}})
};
fetch('https://api.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks', 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.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks",
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([
'text' => '<string>',
'chunk_position' => 123,
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks"
payload := strings.NewReader("{\n \"text\": \"<string>\",\n \"chunk_position\": 123,\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\",\n \"chunk_position\": 123,\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\",\n \"chunk_position\": 123,\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"text": "<string>",
"artifact_id": "<string>",
"chunk_position": 123,
"status": "Pending",
"metadata": {},
"user_supplied_metadata": {},
"status_reason": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Create chunk for local chunk artifacts
Creates a single chunk on an artifact and returns it with its final upload status. This is synchronous: the chunk text is embedded and upserted into the vector index and written to the database in the same request, then the returned chunk’s status is set to Completed on success or Failed (with a status_reason) if indexing failed. Only artifacts whose source is local chunks are allowed — any other source raises a client error. Metadata containing null values (including nested) is rejected because it breaks OpenSearch indexing.
curl --request POST \
--url https://api.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"text": "<string>",
"chunk_position": 123,
"metadata": {}
}
'import requests
url = "https://api.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks"
payload = {
"text": "<string>",
"chunk_position": 123,
"metadata": {}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>', chunk_position: 123, metadata: {}})
};
fetch('https://api.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks', 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.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks",
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([
'text' => '<string>',
'chunk_position' => 123,
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks"
payload := strings.NewReader("{\n \"text\": \"<string>\",\n \"chunk_position\": 123,\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\",\n \"chunk_position\": 123,\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.egp.scale.com/v4/knowledge-bases/{knowledge_base_id}/artifacts/{artifact_id}/chunks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\",\n \"chunk_position\": 123,\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"text": "<string>",
"artifact_id": "<string>",
"chunk_position": 123,
"status": "Pending",
"metadata": {},
"user_supplied_metadata": {},
"status_reason": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Headers
Body
Response
Successful Response
The id of the chunk
The text of the chunk as stored in the database
The id of the artifact
Chunk position
Status of the chunk. If Failed or Pending, its possible that the chunk does not reflect in OpenSearch
Pending, Completed, Failed Metadata of the chunk which is stored in OpenSearch
Metadata of the chunk which is stored in the database only provided via custom chunking.
Status reason of the chunk. May be successful
Date and time of chunk creation

