curl --request POST \
--url https://cool.jobmojito.com/functions/v1/knowledge-base-document-upload \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form knowledge_base_store_id=d9d6f121-1230-48fd-b3a7-8b5a1e8db052 \
--form file=@example-file \
--form 'name=<string>' \
--form 'merchant_id=<string>' \
--form interview_ids=de300000-0000-4000-8001-000000000007import requests
url = "https://cool.jobmojito.com/functions/v1/knowledge-base-document-upload"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"knowledge_base_store_id": "d9d6f121-1230-48fd-b3a7-8b5a1e8db052",
"name": "<string>",
"merchant_id": "<string>",
"interview_ids": "de300000-0000-4000-8001-000000000007"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('knowledge_base_store_id', 'd9d6f121-1230-48fd-b3a7-8b5a1e8db052');
form.append('file', '<string>');
form.append('name', '<string>');
form.append('merchant_id', '<string>');
form.append('interview_ids', 'de300000-0000-4000-8001-000000000007');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://cool.jobmojito.com/functions/v1/knowledge-base-document-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://cool.jobmojito.com/functions/v1/knowledge-base-document-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=\"knowledge_base_store_id\"\r\n\r\nd9d6f121-1230-48fd-b3a7-8b5a1e8db052\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"merchant_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"interview_ids\"\r\n\r\nde300000-0000-4000-8001-000000000007\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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://cool.jobmojito.com/functions/v1/knowledge-base-document-upload"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_store_id\"\r\n\r\nd9d6f121-1230-48fd-b3a7-8b5a1e8db052\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"merchant_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"interview_ids\"\r\n\r\nde300000-0000-4000-8001-000000000007\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://cool.jobmojito.com/functions/v1/knowledge-base-document-upload")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_store_id\"\r\n\r\nd9d6f121-1230-48fd-b3a7-8b5a1e8db052\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"merchant_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"interview_ids\"\r\n\r\nde300000-0000-4000-8001-000000000007\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://cool.jobmojito.com/functions/v1/knowledge-base-document-upload")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_store_id\"\r\n\r\nd9d6f121-1230-48fd-b3a7-8b5a1e8db052\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"merchant_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"interview_ids\"\r\n\r\nde300000-0000-4000-8001-000000000007\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"knowledge_base_id": "<string>",
"limit_to_interviews": true,
"interview_ids": [
"<string>"
]
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}Upload a knowledge base document
Uploads a document to a knowledge base store and queues it for processing. Accepts the file either as multipart/form-data (binary file) or as application/json (base64 file). Use interview_ids to limit the document to chosen interviews.
curl --request POST \
--url https://cool.jobmojito.com/functions/v1/knowledge-base-document-upload \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form knowledge_base_store_id=d9d6f121-1230-48fd-b3a7-8b5a1e8db052 \
--form file=@example-file \
--form 'name=<string>' \
--form 'merchant_id=<string>' \
--form interview_ids=de300000-0000-4000-8001-000000000007import requests
url = "https://cool.jobmojito.com/functions/v1/knowledge-base-document-upload"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"knowledge_base_store_id": "d9d6f121-1230-48fd-b3a7-8b5a1e8db052",
"name": "<string>",
"merchant_id": "<string>",
"interview_ids": "de300000-0000-4000-8001-000000000007"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('knowledge_base_store_id', 'd9d6f121-1230-48fd-b3a7-8b5a1e8db052');
form.append('file', '<string>');
form.append('name', '<string>');
form.append('merchant_id', '<string>');
form.append('interview_ids', 'de300000-0000-4000-8001-000000000007');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://cool.jobmojito.com/functions/v1/knowledge-base-document-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://cool.jobmojito.com/functions/v1/knowledge-base-document-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=\"knowledge_base_store_id\"\r\n\r\nd9d6f121-1230-48fd-b3a7-8b5a1e8db052\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"merchant_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"interview_ids\"\r\n\r\nde300000-0000-4000-8001-000000000007\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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://cool.jobmojito.com/functions/v1/knowledge-base-document-upload"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_store_id\"\r\n\r\nd9d6f121-1230-48fd-b3a7-8b5a1e8db052\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"merchant_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"interview_ids\"\r\n\r\nde300000-0000-4000-8001-000000000007\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://cool.jobmojito.com/functions/v1/knowledge-base-document-upload")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_store_id\"\r\n\r\nd9d6f121-1230-48fd-b3a7-8b5a1e8db052\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"merchant_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"interview_ids\"\r\n\r\nde300000-0000-4000-8001-000000000007\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://cool.jobmojito.com/functions/v1/knowledge-base-document-upload")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"knowledge_base_store_id\"\r\n\r\nd9d6f121-1230-48fd-b3a7-8b5a1e8db052\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"merchant_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"interview_ids\"\r\n\r\nde300000-0000-4000-8001-000000000007\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"knowledge_base_id": "<string>",
"limit_to_interviews": true,
"interview_ids": [
"<string>"
]
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}Authorizations
Supabase JWT — Authorization: Bearer <token>.
Body
The knowledge base store to add the document to.
1"d9d6f121-1230-48fd-b3a7-8b5a1e8db052"
The document file (binary).
Document name with its extension, which decides how the file is read: .doc, .docx, .rtf, .odt, .pdf, .pages or .pptx; any other is refused with 422 (name). Falls back to the uploaded file name for multipart.
Override merchant id (admin / sub-merchant only).
The interviews that may use this document, in the live session and when generating questions. An interview uses this knowledge base once its knowledge_base_store_id is set (job-interview-create / job-interview-update): link it first. Omit it or send null to use the document in every interview on the knowledge base. An empty list limits it to no interview. Each interview must belong to the same company and use this knowledge base. With multipart/form-data, repeat the field or send one JSON array such as ["<id>"], and write an empty list as [].
["de300000-0000-4000-8001-000000000007"]
Response
The document was uploaded and queued for processing.
Id of the created knowledge_base record.
True when the document is limited to the interviews in interview_ids. False when every interview on the knowledge base can use it.
The interviews this document is limited to. Present only when limit_to_interviews is true; an empty list means no interview can use it.