List contacts
curl --request GET \
--url https://api.instaview.sk/contacts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.instaview.sk/contacts"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.instaview.sk/contacts")
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",
"firstName": "John",
"lastName": "Doe",
"status": "APPLIED",
"fields": {
"order_number": "SO-40128",
"is_vip": true,
"renewal_date": "2026-04-01"
},
"createdAt": "2025-11-20T10:30:00Z",
"updatedAt": "2025-11-20T10:30:00Z",
"jobId": "987e6543-e21b-12d3-a456-426614174000",
"jobIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"email": "john.doe@example.com",
"phoneNumber": "+421915123456",
"gdprExpiryDate": "2026-11-16",
"overallRating": 85,
"metadata": {
"source": "LinkedIn",
"externalId": "CAND-12345"
},
"analysisCount": 2,
"interviewCount": 3,
"links": {
"analyses": "/v1/public/contacts/123e4567-e89b-12d3-a456-426614174000/analyses",
"interviews": "/v1/public/contacts/123e4567-e89b-12d3-a456-426614174000/conversations"
},
"gender": "female",
"anonymizedCvText": "[NAME]\nSoftware Engineer\nExperience: ...",
"workHistory": [
{
"companyName": "Google",
"candidatePosition": "Software Engineer",
"referencePhone": "+1987654321",
"id": "123e4567-e89b-12d3-a456-426614174000",
"referenceName": "Jane Smith",
"startDate": "2020-01-01",
"endDate": "2022-12-31"
}
]
}
],
"total": 150,
"page": 1,
"limit": 20,
"totalPages": 8
}Contacts
List Contacts
Lists the contacts that belong to the API key’s company, whether or not they hold job assignments.
GET
/
contacts
List contacts
curl --request GET \
--url https://api.instaview.sk/contacts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.instaview.sk/contacts"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.instaview.sk/contacts")
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",
"firstName": "John",
"lastName": "Doe",
"status": "APPLIED",
"fields": {
"order_number": "SO-40128",
"is_vip": true,
"renewal_date": "2026-04-01"
},
"createdAt": "2025-11-20T10:30:00Z",
"updatedAt": "2025-11-20T10:30:00Z",
"jobId": "987e6543-e21b-12d3-a456-426614174000",
"jobIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"email": "john.doe@example.com",
"phoneNumber": "+421915123456",
"gdprExpiryDate": "2026-11-16",
"overallRating": 85,
"metadata": {
"source": "LinkedIn",
"externalId": "CAND-12345"
},
"analysisCount": 2,
"interviewCount": 3,
"links": {
"analyses": "/v1/public/contacts/123e4567-e89b-12d3-a456-426614174000/analyses",
"interviews": "/v1/public/contacts/123e4567-e89b-12d3-a456-426614174000/conversations"
},
"gender": "female",
"anonymizedCvText": "[NAME]\nSoftware Engineer\nExperience: ...",
"workHistory": [
{
"companyName": "Google",
"candidatePosition": "Software Engineer",
"referencePhone": "+1987654321",
"id": "123e4567-e89b-12d3-a456-426614174000",
"referenceName": "Jane Smith",
"startDate": "2020-01-01",
"endDate": "2022-12-31"
}
]
}
],
"total": 150,
"page": 1,
"limit": 20,
"totalPages": 8
}GET /candidates is a permanent alias of this endpoint and keeps working unchanged, with the same scopes and the same response. See Resource names.Overview
This endpoint returns the contacts belonging to your API key’s company. You can filter by job or status, search by name or email, and page through the results — useful for finding someone before starting a conversation with them.Use Cases
- Browse your contacts: review everyone your company holds
- Job-specific filtering: narrow to the contacts assigned to one job
- Status tracking: filter by where someone has got to in your process
- Search: locate a contact by name or email
Basic Usage
// List all contacts (first page, 20 items)
GET /contacts
With Filters
// Filter by job
GET /contacts?jobId=job-uuid
// Filter by status
GET /contacts?status=IN_PROCESS
// Search by name or email
GET /contacts?search=jane@example.com
// Combine filters with pagination
GET /contacts?jobId=job-uuid&status=APPLIED&page=1&limit=50
status is one of UNDEFINED, APPLIED, IN_PROCESS, REJECTED or ACCEPTED. The names
are hiring-flavoured because they predate the neutral vocabulary; they are the values the API
accepts, so they are unchanged.Company Scoping
Every contact returned belongs to your API key’s company. Contacts from other companies are filtered out.Related Resources
Contacts Resource Guide
Learn about managing contacts, status workflows, and filtering
Pagination Guide
Understand pagination best practices
Get Contact
Retrieve a single contact by ID
Authorizations
API key for authentication using Bearer scheme
Query Parameters
Page number (1-based)
Required range:
1 <= x <= 10000Example:
1
Number of items per page
Required range:
1 <= x <= 100Example:
20
Company ID (required for ATS keys, optional for regular keys)
Example:
"123e4567-e89b-12d3-a456-426614174000"
Filter by job ID
Example:
"123e4567-e89b-12d3-a456-426614174000"
Filter by contact status
Available options:
UNDEFINED, APPLIED, IN_PROCESS, REJECTED, ACCEPTED Example:
"APPLIED"
Search by name (first or last name)
Example:
"John"