Upsert Document
curl --request POST \
--url https://api.ravan.ai/api/v1/rag/document \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"org_id": "<string>",
"kb_id": "<string>",
"doc_id": "<string>",
"text": "<string>",
"url": "<string>",
"urls": [
"<string>"
],
"max_pages": 123,
"max_depth": 123,
"metadata": {}
}
'import requests
url = "https://api.ravan.ai/api/v1/rag/document"
payload = {
"org_id": "<string>",
"kb_id": "<string>",
"doc_id": "<string>",
"text": "<string>",
"url": "<string>",
"urls": ["<string>"],
"max_pages": 123,
"max_depth": 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({
org_id: '<string>',
kb_id: '<string>',
doc_id: '<string>',
text: '<string>',
url: '<string>',
urls: ['<string>'],
max_pages: 123,
max_depth: 123,
metadata: {}
})
};
fetch('https://api.ravan.ai/api/v1/rag/document', 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.ravan.ai/api/v1/rag/document",
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([
'org_id' => '<string>',
'kb_id' => '<string>',
'doc_id' => '<string>',
'text' => '<string>',
'url' => '<string>',
'urls' => [
'<string>'
],
'max_pages' => 123,
'max_depth' => 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.ravan.ai/api/v1/rag/document"
payload := strings.NewReader("{\n \"org_id\": \"<string>\",\n \"kb_id\": \"<string>\",\n \"doc_id\": \"<string>\",\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"max_pages\": 123,\n \"max_depth\": 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.ravan.ai/api/v1/rag/document")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"org_id\": \"<string>\",\n \"kb_id\": \"<string>\",\n \"doc_id\": \"<string>\",\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"max_pages\": 123,\n \"max_depth\": 123,\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ravan.ai/api/v1/rag/document")
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 \"org_id\": \"<string>\",\n \"kb_id\": \"<string>\",\n \"doc_id\": \"<string>\",\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"max_pages\": 123,\n \"max_depth\": 123,\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"data": {
"doc_id": "<string>",
"kb_id": "<string>",
"org_id": "<string>",
"text": "<string>",
"url": "<string>",
"status": "<string>",
"metadata": {},
"created_at": "<string>",
"updated_at": "<string>"
}
}RAG Knowledge Base API
Upsert Document
Upsert Document.
POST
/
api
/
v1
/
rag
/
document
Upsert Document
curl --request POST \
--url https://api.ravan.ai/api/v1/rag/document \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"org_id": "<string>",
"kb_id": "<string>",
"doc_id": "<string>",
"text": "<string>",
"url": "<string>",
"urls": [
"<string>"
],
"max_pages": 123,
"max_depth": 123,
"metadata": {}
}
'import requests
url = "https://api.ravan.ai/api/v1/rag/document"
payload = {
"org_id": "<string>",
"kb_id": "<string>",
"doc_id": "<string>",
"text": "<string>",
"url": "<string>",
"urls": ["<string>"],
"max_pages": 123,
"max_depth": 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({
org_id: '<string>',
kb_id: '<string>',
doc_id: '<string>',
text: '<string>',
url: '<string>',
urls: ['<string>'],
max_pages: 123,
max_depth: 123,
metadata: {}
})
};
fetch('https://api.ravan.ai/api/v1/rag/document', 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.ravan.ai/api/v1/rag/document",
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([
'org_id' => '<string>',
'kb_id' => '<string>',
'doc_id' => '<string>',
'text' => '<string>',
'url' => '<string>',
'urls' => [
'<string>'
],
'max_pages' => 123,
'max_depth' => 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.ravan.ai/api/v1/rag/document"
payload := strings.NewReader("{\n \"org_id\": \"<string>\",\n \"kb_id\": \"<string>\",\n \"doc_id\": \"<string>\",\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"max_pages\": 123,\n \"max_depth\": 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.ravan.ai/api/v1/rag/document")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"org_id\": \"<string>\",\n \"kb_id\": \"<string>\",\n \"doc_id\": \"<string>\",\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"max_pages\": 123,\n \"max_depth\": 123,\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ravan.ai/api/v1/rag/document")
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 \"org_id\": \"<string>\",\n \"kb_id\": \"<string>\",\n \"doc_id\": \"<string>\",\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"max_pages\": 123,\n \"max_depth\": 123,\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"data": {
"doc_id": "<string>",
"kb_id": "<string>",
"org_id": "<string>",
"text": "<string>",
"url": "<string>",
"status": "<string>",
"metadata": {},
"created_at": "<string>",
"updated_at": "<string>"
}
}Authorizations
string
required
Your Agni API key used to authenticate the request. Pass it in the
X-Api-Key header. Find or rotate it from your Ravan AI account settings.Body
string
required
The organization ID that owns the resource. Use the organization ID from your Agni account.
string
required
The unique knowledge base ID. Use the ID returned by the knowledge base create or list endpoint.
string
required
The unique document ID in the knowledge base. Use a stable ID so later upserts update the same document.
string
The text content to ingest, search, or store, depending on the endpoint.
string
A publicly reachable URL. Include the full protocol, for example
https://example.com/docs.string[]
A list of publicly reachable URLs. Include the full protocol for each URL.
integer
The maximum number of pages to crawl or ingest from the provided URL sources.
integer
The maximum crawl depth when discovering or ingesting URLs. Higher values can include more nested pages.
object
Custom key-value data to attach to the resource. Use this for IDs or attributes from your own systems.
Response
boolean
Whether the request succeeded.
string
Human-readable status message.
object
Authorizations
Body
application/json

