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
Bearer token with read:webhooks scope
Query Parameters
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 of webhook configuration objects
Total number of webhook configurations
Webhook Configuration Object
Unique identifier for the webhook
The API key ID this webhook belongs to
Company ID this webhook is associated with. Null if webhook receives events for all companies (global webhook).
The endpoint URL receiving webhook notifications
Human-readable name for the webhook
Description of the webhook’s purpose
Custom headers configured for this webhook. Sensitive header values are
masked.
Array of subscribed event type labels (e.g., “interview.completed”)
Whether the webhook is currently active
Maximum retry attempts for failed deliveries
Request timeout in milliseconds
Current count of consecutive delivery failures
ISO 8601 timestamp when circuit breaker was triggered (null if closed)
ISO 8601 timestamp when webhook was created
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"
Example Response
{
"success": true,
"data": {
"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 interview completion notifications",
"headers": [
{ "name": "Authorization", "isMasked": true },
{ "name": "X-Custom-Header", "isMasked": false }
],
"events": ["interview.completed", "analysis.completed"],
"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 examining consecutiveFailures 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.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;
}