List Webhooks
curl --request GET \
--url https://api.example.com/webhooks \
--header 'Authorization: <authorization>'import requests
url = "https://api.example.com/webhooks"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.example.com/webhooks', 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.example.com/webhooks",
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: <authorization>"
],
]);
$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.example.com/webhooks"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.example.com/webhooks")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"data": [
{}
],
"total": 123,
"id": "<string>",
"apiKeyId": "<string>",
"companyId": "<string>",
"url": "<string>",
"name": "<string>",
"description": "<string>",
"headers": [
{}
],
"events": [
{}
],
"vocabulary": "<string>",
"isActive": true,
"maxRetries": 123,
"timeoutMs": 123,
"consecutiveFailures": 123,
"circuitOpenedAt": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>"
}Webhooks
List Webhooks
GET
/
webhooks
List Webhooks
curl --request GET \
--url https://api.example.com/webhooks \
--header 'Authorization: <authorization>'import requests
url = "https://api.example.com/webhooks"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.example.com/webhooks', 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.example.com/webhooks",
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: <authorization>"
],
]);
$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.example.com/webhooks"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.example.com/webhooks")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"data": [
{}
],
"total": 123,
"id": "<string>",
"apiKeyId": "<string>",
"companyId": "<string>",
"url": "<string>",
"name": "<string>",
"description": "<string>",
"headers": [
{}
],
"events": [
{}
],
"vocabulary": "<string>",
"isActive": true,
"maxRetries": 123,
"timeoutMs": 123,
"consecutiveFailures": 123,
"circuitOpenedAt": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>"
}Lists all webhook configurations for your API key.
Overview
The list webhooks endpoint returns all webhook configurations associated with your API key. Use this to monitor webhook health, check subscription status, and manage your webhook configurations.Authentication
string
required
Bearer token with
read:webhooks scopeQuery Parameters
string
Filter webhooks by company ID. If provided, returns only webhooks associated with that specific company (excludes global webhooks). If omitted, returns all webhooks including global ones. Useful for ATS integrations managing multiple companies.
Response
array
Array of webhook configuration objects
number
Total number of webhook configurations
Webhook Configuration Object
string
Unique identifier for the webhook
string
The API key ID this webhook belongs to
string
Company ID this webhook is associated with. Null if webhook receives events for all companies (global webhook).
string
The endpoint URL receiving webhook notifications
string
Human-readable name for the webhook
string
Description of the webhook’s purpose
array
Custom headers configured for this webhook. Sensitive header values are
masked.
array
Array of subscribed event type labels (e.g., “conversation.completed”), spelled in the webhook’s own
vocabularystring
Which spelling this webhook receives for the five conversation events:
NEUTRAL or LEGACY.NEUTRAL is the default for webhooks created since the option existed, and delivers
conversation.completed, conversation.failed, conversation.started,
conversation.rescheduled and conversation.cancelled. LEGACY — every webhook created
before it — delivers the same five as interview.*. Nothing else differs: the same
subscriptions fire on the same occasions, and ANALYSIS_*, SOURCING_*, ENRICH_* and
ping carry one spelling either way. See Event name
vocabulary.boolean
Whether the webhook is currently active
number
Maximum retry attempts for failed deliveries
number
Request timeout in milliseconds
number
Current count of consecutive delivery failures
string
ISO 8601 timestamp when circuit breaker was triggered (null if closed)
string
ISO 8601 timestamp when webhook was created
string
ISO 8601 timestamp when webhook was last updated
Example Request
curl -X GET "https://api.instaview.sk/webhooks?companyId=company-uuid" \
-H "Authorization: Bearer sk_your_key_here"
const response = await fetch("https://api.instaview.sk/webhooks", {
headers: {
Authorization: `Bearer ${process.env.INSTAVIEW_API_KEY}`,
},
});
const page = await response.json();
console.log(`Found ${page.total} webhooks`);
response = requests.get(
'https://api.instaview.sk/webhooks',
headers={
'Authorization': f'Bearer {os.environ["INSTAVIEW_API_KEY"]}'
}
)
page = response.json()
print(f'Found {page["total"]} webhooks')
Example Response
{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"apiKeyId": "api-key-uuid",
"companyId": "company-uuid",
"url": "https://api.example.com/webhooks/instaview",
"name": "Production Webhook",
"description": "Receives conversation completion notifications",
"headers": [
{
"name": "Authorization",
"isMasked": true
},
{
"name": "X-Custom-Header",
"isMasked": false
}
],
"events": [
"conversation.completed",
"analysis.completed"
],
"vocabulary": "NEUTRAL",
"isActive": true,
"maxRetries": 3,
"timeoutMs": 30000,
"consecutiveFailures": 0,
"circuitOpenedAt": null,
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
}
],
"total": 1
}
Monitoring Webhook Health
Check webhook health by examiningconsecutiveFailures and circuitOpenedAt:
async function checkWebhookHealth() {
const response = await fetch("https://api.instaview.sk/webhooks", {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await response.json();
const unhealthy = data.filter(
(w) => w.consecutiveFailures > 0 || w.circuitOpenedAt
);
for (const webhook of unhealthy) {
console.warn(`Webhook ${webhook.name || webhook.id}:`);
console.warn(` Failures: ${webhook.consecutiveFailures}`);
console.warn(` Circuit Open: ${webhook.circuitOpenedAt || "No"}`);
}
return unhealthy;
}
Related
Create Webhook
Create a new webhook configuration
Webhooks Guide
Learn about webhook events and payloads