Ask a question about a document
curl --request POST \
--url https://app.voho.ai/v1/documents/ask \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form 'question=What is the torque spec for the pump on line three, and which revision is this?'import requests
url = "https://app.voho.ai/v1/documents/ask"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = { "question": "What is the torque spec for the pump on line three, and which revision is this?" }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('question', 'What is the torque spec for the pump on line three, and which revision is this?');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://app.voho.ai/v1/documents/ask', 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://app.voho.ai/v1/documents/ask",
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\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"question\"\r\n\r\nWhat is the torque spec for the pump on line three, and which revision is this?\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://app.voho.ai/v1/documents/ask"
payload := strings.NewReader("-----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=\"question\"\r\n\r\nWhat is the torque spec for the pump on line three, and which revision is this?\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://app.voho.ai/v1/documents/ask")
.header("Authorization", "Bearer <token>")
.body("-----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=\"question\"\r\n\r\nWhat is the torque spec for the pump on line three, and which revision is this?\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.voho.ai/v1/documents/ask")
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=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"question\"\r\n\r\nWhat is the torque spec for the pump on line three, and which revision is this?\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"answer": "<string>",
"quotes": [
"<string>"
],
"answered": true,
"cost_cents": 123
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API token."
}
}{
"error": {
"code": "insufficient_credit",
"message": "Your credit balance is exhausted. Top up to continue."
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Ask a question about a document
Answers a question against one document and quotes the lines the answer rests on. When the document does not contain the answer it says so rather than filling the gap with general knowledge.
Billed 4 cents a question. Files up to 8 MB.
POST
/
v1
/
documents
/
ask
Ask a question about a document
curl --request POST \
--url https://app.voho.ai/v1/documents/ask \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form 'question=What is the torque spec for the pump on line three, and which revision is this?'import requests
url = "https://app.voho.ai/v1/documents/ask"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = { "question": "What is the torque spec for the pump on line three, and which revision is this?" }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('question', 'What is the torque spec for the pump on line three, and which revision is this?');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://app.voho.ai/v1/documents/ask', 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://app.voho.ai/v1/documents/ask",
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\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"question\"\r\n\r\nWhat is the torque spec for the pump on line three, and which revision is this?\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://app.voho.ai/v1/documents/ask"
payload := strings.NewReader("-----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=\"question\"\r\n\r\nWhat is the torque spec for the pump on line three, and which revision is this?\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://app.voho.ai/v1/documents/ask")
.header("Authorization", "Bearer <token>")
.body("-----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=\"question\"\r\n\r\nWhat is the torque spec for the pump on line three, and which revision is this?\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.voho.ai/v1/documents/ask")
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=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"question\"\r\n\r\nWhat is the torque spec for the pump on line three, and which revision is this?\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"answer": "<string>",
"quotes": [
"<string>"
],
"answered": true,
"cost_cents": 123
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API token."
}
}{
"error": {
"code": "insufficient_credit",
"message": "Your credit balance is exhausted. Top up to continue."
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
API token from the Voho console. Begins with voho_sk_live_.
Body
multipart/form-dataapplication/json
Send multipart/form-data with the file attached, or JSON with the file base64 encoded.

