curl --request GET \
--url https://api.instaview.sk/contacts/{id}/documents \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.instaview.sk/contacts/{id}/documents"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.instaview.sk/contacts/{id}/documents', 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.instaview.sk/contacts/{id}/documents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.instaview.sk/contacts/{id}/documents"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://api.instaview.sk/contacts/{id}/documents")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.instaview.sk/contacts/{id}/documents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"title": "Benefits and perks",
"status": "READY",
"isActive": true,
"source": "UPLOAD",
"createdAt": "2026-08-08T10:15:00.000Z",
"fileName": "benefits-and-perks.pdf",
"mimeType": "application/pdf",
"sizeBytes": 482133
}
],
"total": 3,
"limit": 10
}List Contact Documents
Lists every document on the contact: the processed CV (source: CV), completed uploads, and uploads that have not been completed yet (status: PENDING).
Whether any of these documents reaches a call is a separate decision: the agent must have contextConfig.useContactContext enabled.
curl --request GET \
--url https://api.instaview.sk/contacts/{id}/documents \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.instaview.sk/contacts/{id}/documents"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.instaview.sk/contacts/{id}/documents', 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.instaview.sk/contacts/{id}/documents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.instaview.sk/contacts/{id}/documents"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://api.instaview.sk/contacts/{id}/documents")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.instaview.sk/contacts/{id}/documents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"title": "Benefits and perks",
"status": "READY",
"isActive": true,
"source": "UPLOAD",
"createdAt": "2026-08-08T10:15:00.000Z",
"fileName": "benefits-and-perks.pdf",
"mimeType": "application/pdf",
"sizeBytes": 482133
}
],
"total": 3,
"limit": 10
}Overview
A contact’s documents are what an agent can look up about the specific person it is calling — their CV, a cover letter, application notes. They live in the same knowledge base machinery as an agent’s documents, and the response has the same shape, with one addition:source.
source | Meaning |
|---|---|
UPLOAD | A file attached through this API or the dashboard. Can be renamed, deactivated and deleted. |
CV | Produced by InstaView from the contact’s processed CV. Appears once the CV has been processed; can be deactivated, but not renamed or deleted here — delete the CV instead. |
limit is the per-contact cap on uploaded documents (5). The CV document does not count towards it.
Whether a document reaches a call
Listing a document does not mean an agent will see it. One switch decides: the agent hascontextConfig.useContactContext enabled — the agent author’s intent to draw on what the platform knows about the person it is calling.
With it on, the contact’s active documents are attached to the call as the candidate knowledge base, and the agent’s prompt gains one sentence telling it the documents exist and may be looked up — never read aloud. With it off, the call runs exactly as it did before, documents or not.
Example
curl https://api.instaview.sk/contacts/$CONTACT_ID/documents \
-H "Authorization: Bearer $INSTAVIEW_API_KEY"
{
"data": [
{
"id": "8b2e1f40-3c4d-4e5f-9a6b-7c8d9e0f1a2b",
"title": "CV",
"fileName": "jana-novakova-cv.pdf",
"mimeType": "text/markdown",
"status": "READY",
"isActive": true,
"source": "CV",
"createdAt": "2026-09-05T08:12:00.000Z"
},
{
"id": "5d3c2b1a-0f9e-4d8c-b7a6-5f4e3d2c1b0a",
"title": "Cover letter",
"fileName": "cover-letter.pdf",
"mimeType": "application/pdf",
"sizeBytes": 482133,
"status": "READY",
"isActive": true,
"source": "UPLOAD",
"createdAt": "2026-09-05T09:30:00.000Z"
}
],
"total": 2,
"limit": 5
}
CV document’s fileName is the name of the file that was uploaded for processing; what the
agent can look up is the anonymized text of that CV — names, contact details and employer
names replaced with generic terms — not the original file, which InstaView does not keep.Error Scenarios
- 404 Not Found: No contact with that id belongs to your API key’s company
Related Resources
Authorizations
API key for authentication using Bearer scheme
Path Parameters
Contact the documents belong to.
Query Parameters
Required for ATS API keys to specify which company to access. Ignored for standard company API keys.
Response
Documents on the contact, oldest first. limit is the per-contact upload cap (5); the CV document does not count towards it.
Documents attached to the agent or contact, oldest first
Show child attributes
Show child attributes
Number of documents attached
3
Maximum uploaded documents the resource may hold: 10 for an agent, 5 for a contact. A contact's CV document does not count towards it.
10