curl --request GET \
--url https://api.instaview.sk/sourcing/preview/{id}/results \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.instaview.sk/sourcing/preview/{id}/results"
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/sourcing/preview/{id}/results', 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/sourcing/preview/{id}/results",
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/sourcing/preview/{id}/results"
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/sourcing/preview/{id}/results")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.instaview.sk/sourcing/preview/{id}/results")
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{
"success": true,
"requestId": "req_prev_550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"createdAt": "2025-01-01T00:00:00.000Z",
"candidatesSourcedCount": 8,
"foundCount": 42,
"scoredCount": 30,
"message": "The sourcing agent is actively analyzing candidates. Please poll again in 10 seconds.",
"candidates": [
{
"profileId": "a1b2c3d4e5f6",
"fullName": "Jane Smith",
"profileUrl": "https://www.linkedin.com/in/janesmith",
"title": "Senior Software Engineer",
"headline": "Senior Software Engineer at Stripe",
"location": "San Francisco, CA",
"country": "United States",
"companyName": "Stripe",
"companyUrl": "https://www.linkedin.com/company/stripe"
}
],
"errorCode": "AGENT_ERROR",
"errorMessage": "The sourcing agent encountered an unexpected error.",
"completedAt": "2025-01-01T00:01:30.000Z"
}{
"success": true,
"requestId": "req_prev_550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"createdAt": "2025-01-01T00:00:00.000Z",
"candidatesSourcedCount": 8,
"foundCount": 42,
"scoredCount": 30,
"message": "The sourcing agent is actively analyzing candidates. Please poll again in 10 seconds.",
"candidates": [
{
"profileId": "a1b2c3d4e5f6",
"fullName": "Jane Smith",
"profileUrl": "https://www.linkedin.com/in/janesmith",
"title": "Senior Software Engineer",
"headline": "Senior Software Engineer at Stripe",
"location": "San Francisco, CA",
"country": "United States",
"companyName": "Stripe",
"companyUrl": "https://www.linkedin.com/company/stripe"
}
],
"errorCode": "AGENT_ERROR",
"errorMessage": "The sourcing agent encountered an unexpected error.",
"completedAt": "2025-01-01T00:01:30.000Z"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}Get Sourcing Preview Results
Returns the current state of a candidate sourcing preview run. Responds with 202 and status ‘processing’ while in progress, or 200 with the full candidate list (or error details) when completed.
curl --request GET \
--url https://api.instaview.sk/sourcing/preview/{id}/results \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.instaview.sk/sourcing/preview/{id}/results"
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/sourcing/preview/{id}/results', 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/sourcing/preview/{id}/results",
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/sourcing/preview/{id}/results"
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/sourcing/preview/{id}/results")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.instaview.sk/sourcing/preview/{id}/results")
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{
"success": true,
"requestId": "req_prev_550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"createdAt": "2025-01-01T00:00:00.000Z",
"candidatesSourcedCount": 8,
"foundCount": 42,
"scoredCount": 30,
"message": "The sourcing agent is actively analyzing candidates. Please poll again in 10 seconds.",
"candidates": [
{
"profileId": "a1b2c3d4e5f6",
"fullName": "Jane Smith",
"profileUrl": "https://www.linkedin.com/in/janesmith",
"title": "Senior Software Engineer",
"headline": "Senior Software Engineer at Stripe",
"location": "San Francisco, CA",
"country": "United States",
"companyName": "Stripe",
"companyUrl": "https://www.linkedin.com/company/stripe"
}
],
"errorCode": "AGENT_ERROR",
"errorMessage": "The sourcing agent encountered an unexpected error.",
"completedAt": "2025-01-01T00:01:30.000Z"
}{
"success": true,
"requestId": "req_prev_550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"createdAt": "2025-01-01T00:00:00.000Z",
"candidatesSourcedCount": 8,
"foundCount": 42,
"scoredCount": 30,
"message": "The sourcing agent is actively analyzing candidates. Please poll again in 10 seconds.",
"candidates": [
{
"profileId": "a1b2c3d4e5f6",
"fullName": "Jane Smith",
"profileUrl": "https://www.linkedin.com/in/janesmith",
"title": "Senior Software Engineer",
"headline": "Senior Software Engineer at Stripe",
"location": "San Francisco, CA",
"country": "United States",
"companyName": "Stripe",
"companyUrl": "https://www.linkedin.com/company/stripe"
}
],
"errorCode": "AGENT_ERROR",
"errorMessage": "The sourcing agent encountered an unexpected error.",
"completedAt": "2025-01-01T00:01:30.000Z"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}202 Accepted with status: "processing". Once finished it becomes 200 OK with the candidate preview list (or error details if the run failed).
Overview
Use this endpoint to poll for preview results when you do not have a webhook configured. TherequestId is the value returned by POST /sourcing/preview.
Polling Strategy
429 RATE_LIMIT_EXCEEDED.async function waitForPreviewResults(requestId) {
const url = `https://api.instaview.sk/sourcing/preview/${requestId}/results`;
const headers = { Authorization: `Bearer ${process.env.INSTAVIEW_API_KEY}` };
while (true) {
const res = await fetch(url, { headers });
if (res.status === 429) {
const retryAfter = Number(res.headers.get("Retry-After") ?? 10);
await new Promise((r) => setTimeout(r, retryAfter * 1000));
continue;
}
if (!res.ok)
throw new Error(`Preview polling failed with status ${res.status}`);
const body = await res.json();
if (body.status === "completed") return body.candidates;
if (body.status === "failed")
throw new Error(`Preview failed: ${body.errorMessage}`);
await new Promise((r) => setTimeout(r, 10000));
}
}
Response Examples
Still Processing (202 Accepted)
{
"success": true,
"requestId": "req_prev_9f3b827e-8c31-4bda-a7a2-b2d99d14f4e2",
"status": "processing",
"candidatesSourcedCount": 12,
"message": "The sourcing agent is actively analyzing candidates. Please poll again in 10 seconds.",
"createdAt": "2026-06-11T19:50:45.000Z"
}
Completed (200 OK)
{
"success": true,
"requestId": "req_prev_9f3b827e-8c31-4bda-a7a2-b2d99d14f4e2",
"status": "completed",
"foundCount": 20,
"scoredCount": 20,
"createdAt": "2026-06-11T19:50:45.000Z",
"completedAt": "2026-06-11T19:51:02.000Z",
"candidates": [
{
"profileId": "prof_a9238f82-a723",
"fullName": "Jane Doe",
"profileUrl": "https://www.linkedin.com/in/janedoe-ml",
"title": "Staff ML Infrastructure Engineer",
"headline": "Staff ML Infrastructure Engineer at TechCorp",
"location": "Seattle, WA, USA",
"country": "United States",
"companyName": "TechCorp",
"companyUrl": "https://www.linkedin.com/company/techcorp"
}
]
}
Failed (200 OK with status: "failed")
{
"success": true,
"requestId": "req_prev_9f3b827e-8c31-4bda-a7a2-b2d99d14f4e2",
"status": "failed",
"errorCode": "PROVIDER_TEMPORARILY_UNAVAILABLE",
"errorMessage": "External sourcing indexing platform returned a 503 after exhausting retries.",
"createdAt": "2026-06-11T19:50:45.000Z",
"completedAt": "2026-06-11T19:51:01.000Z"
}
Multi-Tenant Isolation
If therequestId does not belong to the company associated with the authenticating API key, or if the request ID format does not match a preview run, the API returns 404 REQUEST_NOT_FOUND or 400 BAD_REQUEST.Authorizations
API key for authentication using Bearer scheme
Path Parameters
The requestId returned by POST /sourcing/preview (e.g. req_prev_550e8400-…).
^req_prev_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$Response
Sourcing preview results (completed or failed)
Whether the response was successful.
true
Unique external identifier for this sourcing run.
"req_prev_550e8400-e29b-41d4-a716-446655440000"
Current status of the run.
processing, completed, failed "completed"
ISO 8601 timestamp when the run was created.
"2025-01-01T00:00:00.000Z"
Running count of candidates found so far. Present when status = 'processing'.
8
Total number of candidates found before scoring.
42
Number of candidates that were AI-scored.
30
Human-readable status message. Present when status = 'processing'.
"The sourcing agent is actively analyzing candidates. Please poll again in 10 seconds."
Scored and ranked candidates. Present when status = 'completed'.
Show child attributes
Show child attributes
Machine-readable error code when status = 'failed'.
"AGENT_ERROR"
Human-readable error message when status = 'failed'.
"The sourcing agent encountered an unexpected error."
ISO 8601 timestamp when the run completed or failed.
"2025-01-01T00:01:30.000Z"