cURL
curl -sS -X POST "https://dashboard.ondial.ai/api/v1/knowledge-bases/documents" \
-H "Authorization: Bearer $ONDIAL_API_KEY" \
-F "file=@./document.pdf"import fs from "node:fs";
const form = new FormData();
form.append("file", new Blob([await fs.promises.readFile("./document.pdf")]), "document.pdf");
const res = await fetch("https://dashboard.ondial.ai/api/v1/knowledge-bases/documents", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.ONDIAL_API_KEY}`,
},
body: form,
});
const data = await res.json();
console.log(res.status, data);import os
import requests
res = requests.request(
"POST",
"https://dashboard.ondial.ai/api/v1/knowledge-bases/documents",
headers={
"Authorization": f"Bearer {os.environ['ONDIAL_API_KEY']}",
},
files={
"file": open("./document.pdf", "rb"),
},
timeout=30,
)
print(res.status_code, res.json())<?php
$ch = curl_init("https://dashboard.ondial.ai/api/v1/knowledge-bases/documents");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("ONDIAL_API_KEY"),
],
CURLOPT_POSTFIELDS => [
"file" => new CURLFile("./document.pdf"),
],
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $status . " " . $response;{
"document": {
"fileId": "<string>",
"knowledgebaseId": "<string>",
"fileName": "<string>",
"title": "<string>",
"wordCount": 123,
"uploadDate": "2023-11-07T05:31:56Z",
"fileType": "pdf"
},
"billing": {
"knowledgeBaseCreditsEnabled": true,
"sandbox": true,
"creditsDeducted": 123,
"creditsRemaining": 123,
"wordCount": 123,
"charCount": 123
}
}{
"leadId": 177,
"error": "<string>",
"reasonCode": "<string>",
"missing": [
"<string>"
]
}{
"error": "Invalid or inactive API key",
"reasonCode": "unauthorized"
}{
"error": "Insufficient credits for knowledge upload",
"reasonCode": "insufficient_credits",
"requiredCredits": 1.5,
"creditsAvailable": 0.25
}Upload knowledge document
Upload PDF, Word, Excel, or TXT (requires knowledge:write scope).
POST
https://dashboard.ondial.ai
/
api
/
v1
/
knowledge-bases
/
documents
cURL
curl -sS -X POST "https://dashboard.ondial.ai/api/v1/knowledge-bases/documents" \
-H "Authorization: Bearer $ONDIAL_API_KEY" \
-F "file=@./document.pdf"import fs from "node:fs";
const form = new FormData();
form.append("file", new Blob([await fs.promises.readFile("./document.pdf")]), "document.pdf");
const res = await fetch("https://dashboard.ondial.ai/api/v1/knowledge-bases/documents", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.ONDIAL_API_KEY}`,
},
body: form,
});
const data = await res.json();
console.log(res.status, data);import os
import requests
res = requests.request(
"POST",
"https://dashboard.ondial.ai/api/v1/knowledge-bases/documents",
headers={
"Authorization": f"Bearer {os.environ['ONDIAL_API_KEY']}",
},
files={
"file": open("./document.pdf", "rb"),
},
timeout=30,
)
print(res.status_code, res.json())<?php
$ch = curl_init("https://dashboard.ondial.ai/api/v1/knowledge-bases/documents");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("ONDIAL_API_KEY"),
],
CURLOPT_POSTFIELDS => [
"file" => new CURLFile("./document.pdf"),
],
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $status . " " . $response;{
"document": {
"fileId": "<string>",
"knowledgebaseId": "<string>",
"fileName": "<string>",
"title": "<string>",
"wordCount": 123,
"uploadDate": "2023-11-07T05:31:56Z",
"fileType": "pdf"
},
"billing": {
"knowledgeBaseCreditsEnabled": true,
"sandbox": true,
"creditsDeducted": 123,
"creditsRemaining": 123,
"wordCount": 123,
"charCount": 123
}
}{
"leadId": 177,
"error": "<string>",
"reasonCode": "<string>",
"missing": [
"<string>"
]
}{
"error": "Invalid or inactive API key",
"reasonCode": "unauthorized"
}{
"error": "Insufficient credits for knowledge upload",
"reasonCode": "insufficient_credits",
"requiredCredits": 1.5,
"creditsAvailable": 0.25
}Requires scope
knowledge:write.
- Multipart field name:
file - Types: PDF, DOC/DOCX, XLS/XLSX/XLSM, TXT
- Max size: 50MB
402 insufficient_credits if balance too low).
Sandbox keys: upload succeeds without debiting credits; response includes billing.sandbox: true.
There is no v1 download endpoint - binary access stays dashboard/session only.Authorizations
Paste only your API key (ond_live_… or ond_test_…). Do not type the word Bearer - the playground adds it.
Body
multipart/form-data
Response
Uploaded
Metadata only. No download URL or file bytes.

