Approve a pending document
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"notes": "Verified against the current pricing page."
}
'import requests
url = "https://api.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve"
payload = { "notes": "Verified against the current pricing page." }
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({notes: 'Verified against the current pricing page.'})
};
fetch('https://api.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve', 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.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve",
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([
'notes' => 'Verified against the current pricing page.'
]),
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.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve"
payload := strings.NewReader("{\n \"notes\": \"Verified against the current pricing page.\"\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.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"notes\": \"Verified against the current pricing page.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve")
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 \"notes\": \"Verified against the current pricing page.\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"knowledge_base_id": "<string>",
"name": "<string>",
"type": "<string>",
"source_url": "<string>",
"status": "<string>",
"chunk_count": 123,
"size_bytes": 123,
"is_public": true,
"slug": "<string>",
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"docs_url": "<string>"
}
}Knowledge Bases
Approve a pending document
Approve a document that is pending moderation review. Flips its publish lifecycle to approved and kicks off deferred vector indexing so its chunks become retrievable by agents. Optional reviewer notes are stored on the document for the submitter. Requires the knowledge:write scope (admin / owner / developer).
POST
/
api
/
v1
/
knowledge-bases
/
{id}
/
documents
/
{docId}
/
approve
Approve a pending document
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"notes": "Verified against the current pricing page."
}
'import requests
url = "https://api.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve"
payload = { "notes": "Verified against the current pricing page." }
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({notes: 'Verified against the current pricing page.'})
};
fetch('https://api.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve', 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.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve",
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([
'notes' => 'Verified against the current pricing page.'
]),
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.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve"
payload := strings.NewReader("{\n \"notes\": \"Verified against the current pricing page.\"\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.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"notes\": \"Verified against the current pricing page.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/knowledge-bases/{id}/documents/{docId}/approve")
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 \"notes\": \"Verified against the current pricing page.\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"knowledge_base_id": "<string>",
"name": "<string>",
"type": "<string>",
"source_url": "<string>",
"status": "<string>",
"chunk_count": 123,
"size_bytes": 123,
"is_public": true,
"slug": "<string>",
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"docs_url": "<string>"
}
}Authorizations
BearerApiKey
Dashboard JWT token from Clerk
Body
application/json
Optional reviewer feedback stored on the document.
Maximum string length:
2000Response
200 - application/json
The document after approval (moderation state under metadata.moderation).
⌘I