curl --request PATCH \
--url https://api.instaview.sk/contacts/{id}/documents/{documentId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Cover letter (2026)",
"isActive": false
}
'import requests
url = "https://api.instaview.sk/contacts/{id}/documents/{documentId}"
payload = {
"title": "Cover letter (2026)",
"isActive": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: 'Cover letter (2026)', isActive: false})
};
fetch('https://api.instaview.sk/contacts/{id}/documents/{documentId}', 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/{documentId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Cover letter (2026)',
'isActive' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.instaview.sk/contacts/{id}/documents/{documentId}"
payload := strings.NewReader("{\n \"title\": \"Cover letter (2026)\",\n \"isActive\": false\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.instaview.sk/contacts/{id}/documents/{documentId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Cover letter (2026)\",\n \"isActive\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.instaview.sk/contacts/{id}/documents/{documentId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Cover letter (2026)\",\n \"isActive\": false\n}"
response = http.request(request)
puts response.read_body{
"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
}Update Contact Document
Renames a document and/or activates or deactivates it. Deactivating keeps the document but stops it being attached to new calls — it is also the way to keep a contact’s CV out of calls. Only completed (READY) documents can be toggled, and the CV document cannot be renamed. At least one of title or isActive is required.
curl --request PATCH \
--url https://api.instaview.sk/contacts/{id}/documents/{documentId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Cover letter (2026)",
"isActive": false
}
'import requests
url = "https://api.instaview.sk/contacts/{id}/documents/{documentId}"
payload = {
"title": "Cover letter (2026)",
"isActive": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: 'Cover letter (2026)', isActive: false})
};
fetch('https://api.instaview.sk/contacts/{id}/documents/{documentId}', 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/{documentId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Cover letter (2026)',
'isActive' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.instaview.sk/contacts/{id}/documents/{documentId}"
payload := strings.NewReader("{\n \"title\": \"Cover letter (2026)\",\n \"isActive\": false\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.instaview.sk/contacts/{id}/documents/{documentId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Cover letter (2026)\",\n \"isActive\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.instaview.sk/contacts/{id}/documents/{documentId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Cover letter (2026)\",\n \"isActive\": false\n}"
response = http.request(request)
puts response.read_body{
"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
}Overview
Sendtitle, isActive, or both. An empty body is a 400.
Deactivating keeps the document but stops it being attached to new calls. It is also the way to keep a contact’s CV out of calls while keeping the CV itself: set isActive: false on the document whose source is CV. Nothing about the contact’s processing changes; the agent simply no longer has the document to look up.
The CV document cannot be renamed — its title is set by the platform and would be reset the next time the CV was synced. Only completed (READY) documents can be toggled; a PENDING upload is a 409.
Example
# Keep this contact's CV out of calls
curl -X PATCH https://api.instaview.sk/contacts/$CONTACT_ID/documents/$CV_DOCUMENT_ID \
-H "Authorization: Bearer $INSTAVIEW_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "isActive": false }'
{
"id": "8b2e1f40-3c4d-4e5f-9a6b-7c8d9e0f1a2b",
"title": "CV",
"fileName": "jana-novakova-cv.pdf",
"mimeType": "text/markdown",
"status": "READY",
"isActive": false,
"source": "CV",
"createdAt": "2026-09-05T08:12:00.000Z"
}
Error Scenarios
- 400 Bad Request: Neither
titlenorisActivewas provided - 404 Not Found: No such document on that contact
- 409 Conflict: The upload has not been completed yet, or the request renames the
CVdocument
Related Resources
Authorizations
API key for authentication using Bearer scheme
Path Parameters
Contact the document belongs to.
Document id.
Query Parameters
Required for ATS API keys to specify which company to access. Ignored for standard company API keys.
Body
New human-readable label for the document. Not accepted for the CV document, whose title is set by the platform.
255"Cover letter (2026)"
Whether agents may consult this document during a call. Deactivating keeps the document — it simply stops being attached to new calls. Only READY documents can be toggled.
false
Response
Document updated
Document ID
"123e4567-e89b-12d3-a456-426614174000"
Human-readable label for the document
"Benefits and perks"
PENDING while waiting for the file to be uploaded to the presigned URL and the upload to be completed; READY once the file is confirmed stored. Only READY documents are attached to calls.
PENDING, READY "READY"
Whether the agent may consult this document during a call. Always false while the upload is PENDING.
true
UPLOAD for a file attached through the API or the dashboard. CV for the document the platform produces from a contact's processed CV (contacts only); a CV document can be deactivated but not renamed or deleted. Always UPLOAD on an agent's knowledge base.
UPLOAD, CV "UPLOAD"
When the document was created
"2026-08-08T10:15:00.000Z"
Original file name as uploaded
"benefits-and-perks.pdf"
MIME type of the stored file
"application/pdf"
Size of the stored file in bytes, as verified against storage. Absent until the upload is READY.
482133