curl --request POST \
--url https://api.avidoai.com/v0/documents/upload \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--header 'x-application-id: <api-key>' \
--form 'file=<unknown>' \
--form 'fileName=Knowledge Base Q1 2024' \
--form documentType=KNOWLEDGE \
--form quickstartId=456e7890-e89b-12d3-a456-426614174001 \
--form topicId=789e0123-e89b-12d3-a456-426614174002 \
--form 'metadata={"step":"KNOWLEDGE_BASE_REVIEW"}' \
--form processFile=trueimport requests
url = "https://api.avidoai.com/v0/documents/upload"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<unknown>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nKnowledge Base Q1 2024\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nKNOWLEDGE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quickstartId\"\r\n\r\n456e7890-e89b-12d3-a456-426614174001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"topicId\"\r\n\r\n789e0123-e89b-12d3-a456-426614174002\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n{\"step\":\"KNOWLEDGE_BASE_REVIEW\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"processFile\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
headers = {
"x-api-key": "<api-key>",
"x-application-id": "<api-key>",
"Content-Type": "multipart/form-data"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<unknown>');
form.append('fileName', 'Knowledge Base Q1 2024');
form.append('documentType', 'KNOWLEDGE');
form.append('quickstartId', '456e7890-e89b-12d3-a456-426614174001');
form.append('topicId', '789e0123-e89b-12d3-a456-426614174002');
form.append('metadata', '{"step":"KNOWLEDGE_BASE_REVIEW"}');
form.append('processFile', 'true');
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'x-application-id': '<api-key>'}
};
options.body = form;
fetch('https://api.avidoai.com/v0/documents/upload', 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.avidoai.com/v0/documents/upload",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<unknown>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nKnowledge Base Q1 2024\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nKNOWLEDGE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quickstartId\"\r\n\r\n456e7890-e89b-12d3-a456-426614174001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"topicId\"\r\n\r\n789e0123-e89b-12d3-a456-426614174002\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n{\"step\":\"KNOWLEDGE_BASE_REVIEW\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"processFile\"\r\n\r\ntrue\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-api-key: <api-key>",
"x-application-id: <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.avidoai.com/v0/documents/upload"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<unknown>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nKnowledge Base Q1 2024\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nKNOWLEDGE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quickstartId\"\r\n\r\n456e7890-e89b-12d3-a456-426614174001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"topicId\"\r\n\r\n789e0123-e89b-12d3-a456-426614174002\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n{\"step\":\"KNOWLEDGE_BASE_REVIEW\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"processFile\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-application-id", "<api-key>")
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.avidoai.com/v0/documents/upload")
.header("x-api-key", "<api-key>")
.header("x-application-id", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<unknown>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nKnowledge Base Q1 2024\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nKNOWLEDGE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quickstartId\"\r\n\r\n456e7890-e89b-12d3-a456-426614174001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"topicId\"\r\n\r\n789e0123-e89b-12d3-a456-426614174002\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n{\"step\":\"KNOWLEDGE_BASE_REVIEW\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"processFile\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.avidoai.com/v0/documents/upload")
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["x-application-id"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<unknown>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nKnowledge Base Q1 2024\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nKNOWLEDGE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quickstartId\"\r\n\r\n456e7890-e89b-12d3-a456-426614174001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"topicId\"\r\n\r\n789e0123-e89b-12d3-a456-426614174002\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n{\"step\":\"KNOWLEDGE_BASE_REVIEW\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"processFile\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"data": {
"fileProcessingId": "654e7890-e89b-12d3-a456-426614174000"
}
}{
"message": "Resource not found"
}{
"message": "Resource not found"
}{
"message": "Resource not found"
}{
"message": "Invalid request data",
"issues": [
{
"code": "invalid_string",
"message": "Invalid UUID",
"path": [
"id"
]
}
]
}{
"message": "Resource not found"
}Upload documents via CSV, PDF, or XLSX file
Uploads a CSV, PDF, or XLSX file containing documents. CSV files will be validated and processed. PDF files will be processed via OCR. XLSX files are split per sheet and each sheet is converted into one or more documents via an LLM. Unless processFile is set to false, processing happens asynchronously. Returns the created FileProcessing id so callers can poll progress and join on DocumentV2.fileProcessingId once the row is COMPLETED.
curl --request POST \
--url https://api.avidoai.com/v0/documents/upload \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--header 'x-application-id: <api-key>' \
--form 'file=<unknown>' \
--form 'fileName=Knowledge Base Q1 2024' \
--form documentType=KNOWLEDGE \
--form quickstartId=456e7890-e89b-12d3-a456-426614174001 \
--form topicId=789e0123-e89b-12d3-a456-426614174002 \
--form 'metadata={"step":"KNOWLEDGE_BASE_REVIEW"}' \
--form processFile=trueimport requests
url = "https://api.avidoai.com/v0/documents/upload"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<unknown>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nKnowledge Base Q1 2024\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nKNOWLEDGE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quickstartId\"\r\n\r\n456e7890-e89b-12d3-a456-426614174001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"topicId\"\r\n\r\n789e0123-e89b-12d3-a456-426614174002\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n{\"step\":\"KNOWLEDGE_BASE_REVIEW\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"processFile\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
headers = {
"x-api-key": "<api-key>",
"x-application-id": "<api-key>",
"Content-Type": "multipart/form-data"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<unknown>');
form.append('fileName', 'Knowledge Base Q1 2024');
form.append('documentType', 'KNOWLEDGE');
form.append('quickstartId', '456e7890-e89b-12d3-a456-426614174001');
form.append('topicId', '789e0123-e89b-12d3-a456-426614174002');
form.append('metadata', '{"step":"KNOWLEDGE_BASE_REVIEW"}');
form.append('processFile', 'true');
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'x-application-id': '<api-key>'}
};
options.body = form;
fetch('https://api.avidoai.com/v0/documents/upload', 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.avidoai.com/v0/documents/upload",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<unknown>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nKnowledge Base Q1 2024\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nKNOWLEDGE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quickstartId\"\r\n\r\n456e7890-e89b-12d3-a456-426614174001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"topicId\"\r\n\r\n789e0123-e89b-12d3-a456-426614174002\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n{\"step\":\"KNOWLEDGE_BASE_REVIEW\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"processFile\"\r\n\r\ntrue\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-api-key: <api-key>",
"x-application-id: <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.avidoai.com/v0/documents/upload"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<unknown>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nKnowledge Base Q1 2024\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nKNOWLEDGE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quickstartId\"\r\n\r\n456e7890-e89b-12d3-a456-426614174001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"topicId\"\r\n\r\n789e0123-e89b-12d3-a456-426614174002\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n{\"step\":\"KNOWLEDGE_BASE_REVIEW\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"processFile\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-application-id", "<api-key>")
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.avidoai.com/v0/documents/upload")
.header("x-api-key", "<api-key>")
.header("x-application-id", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<unknown>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nKnowledge Base Q1 2024\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nKNOWLEDGE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quickstartId\"\r\n\r\n456e7890-e89b-12d3-a456-426614174001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"topicId\"\r\n\r\n789e0123-e89b-12d3-a456-426614174002\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n{\"step\":\"KNOWLEDGE_BASE_REVIEW\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"processFile\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.avidoai.com/v0/documents/upload")
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["x-application-id"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<unknown>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nKnowledge Base Q1 2024\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nKNOWLEDGE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quickstartId\"\r\n\r\n456e7890-e89b-12d3-a456-426614174001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"topicId\"\r\n\r\n789e0123-e89b-12d3-a456-426614174002\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n{\"step\":\"KNOWLEDGE_BASE_REVIEW\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"processFile\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"data": {
"fileProcessingId": "654e7890-e89b-12d3-a456-426614174000"
}
}{
"message": "Resource not found"
}{
"message": "Resource not found"
}{
"message": "Resource not found"
}{
"message": "Invalid request data",
"issues": [
{
"code": "invalid_string",
"message": "Invalid UUID",
"path": [
"id"
]
}
]
}{
"message": "Resource not found"
}Authorizations
Your unique Avido API key
Your unique Avido Application ID
Body
Request for uploading documents via CSV, PDF, or XLSX file
CSV, PDF, or XLSX file containing documents
Name for this import
1 - 256"Knowledge Base Q1 2024"
Type of the documents being uploaded. Defaults to KNOWLEDGE.
KNOWLEDGE, POLICY "KNOWLEDGE"
ID of the quickstart this upload belongs to.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"456e7890-e89b-12d3-a456-426614174001"
ID of the topic to associate the uploaded document with.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"789e0123-e89b-12d3-a456-426614174002"
Optional extra metadata merged into document version metadata. Send as a JSON string in FormData.
Show child attributes
Show child attributes
"{\"step\":\"KNOWLEDGE_BASE_REVIEW\"}"
Whether to process the file asynchronously via background job. Defaults to true.
true
Response
File uploaded and queued for processing successfully
Response for uploading documents
Show child attributes
Show child attributes