curl --request POST \
--url https://api.pubrio.com/monitors/webhook/validate \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"destination_config": {
"webhook_url": "https://your-webhook.com/endpoint",
"headers": {
"Authorization": "Bearer token"
},
"body": {
"pipeline": "my-webhook"
}
},
"monitor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"signal_types": [],
"signal_filters": [
{
"filters": {
"locations": [
"US"
]
},
"signal_type": "jobs"
},
{
"filters": {
"locations": [
"US"
]
},
"signal_type": "news"
},
{
"filters": {
"target_locations": [
"US"
]
},
"signal_type": "advertisements"
},
{
"filters": {
"tos": [
"US"
],
"stages": [
"expanding",
"scaling"
],
"signal_strengths": [
"high",
"very_high"
]
},
"signal_type": "expansions"
}
],
"company_filters": {
"locations": [
"US"
],
"employees": [
[
501,
1000
],
[
1001,
5000
]
]
},
"companies": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"domains": [
"<string>"
],
"linkedin_urls": [
"<string>"
],
"is_company_enrichment": true,
"is_people_enrichment": true,
"people_enrichment_configs": [
{
"filters": {
"people_locations": [
"US"
]
},
"max_people_to_return": 3,
"people_contact_types": [
"email-work"
]
}
],
"frequency_minute": 5040,
"max_failure_trigger": 5,
"max_daily_trigger": 43200,
"max_records_per_trigger": 50,
"notification_email": "[email protected]",
"max_retry_per_trigger": 1,
"retry_delay_second": 3
}
'import requests
url = "https://api.pubrio.com/monitors/webhook/validate"
payload = {
"destination_config": {
"webhook_url": "https://your-webhook.com/endpoint",
"headers": { "Authorization": "Bearer token" },
"body": { "pipeline": "my-webhook" }
},
"monitor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"signal_types": [],
"signal_filters": [
{
"filters": { "locations": ["US"] },
"signal_type": "jobs"
},
{
"filters": { "locations": ["US"] },
"signal_type": "news"
},
{
"filters": { "target_locations": ["US"] },
"signal_type": "advertisements"
},
{
"filters": {
"tos": ["US"],
"stages": ["expanding", "scaling"],
"signal_strengths": ["high", "very_high"]
},
"signal_type": "expansions"
}
],
"company_filters": {
"locations": ["US"],
"employees": [[501, 1000], [1001, 5000]]
},
"companies": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"domains": ["<string>"],
"linkedin_urls": ["<string>"],
"is_company_enrichment": True,
"is_people_enrichment": True,
"people_enrichment_configs": [
{
"filters": { "people_locations": ["US"] },
"max_people_to_return": 3,
"people_contact_types": ["email-work"]
}
],
"frequency_minute": 5040,
"max_failure_trigger": 5,
"max_daily_trigger": 43200,
"max_records_per_trigger": 50,
"notification_email": "[email protected]",
"max_retry_per_trigger": 1,
"retry_delay_second": 3
}
headers = {
"pubrio-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'pubrio-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
destination_config: {
webhook_url: 'https://your-webhook.com/endpoint',
headers: {Authorization: 'Bearer token'},
body: JSON.stringify({pipeline: 'my-webhook'})
},
monitor_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
name: '<string>',
description: '<string>',
signal_types: [],
signal_filters: [
{filters: {locations: ['US']}, signal_type: 'jobs'},
{filters: {locations: ['US']}, signal_type: 'news'},
{filters: {target_locations: ['US']}, signal_type: 'advertisements'},
{
filters: {
tos: ['US'],
stages: ['expanding', 'scaling'],
signal_strengths: ['high', 'very_high']
},
signal_type: 'expansions'
}
],
company_filters: {locations: ['US'], employees: [[501, 1000], [1001, 5000]]},
companies: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
domains: ['<string>'],
linkedin_urls: ['<string>'],
is_company_enrichment: true,
is_people_enrichment: true,
people_enrichment_configs: [
{
filters: {people_locations: ['US']},
max_people_to_return: 3,
people_contact_types: ['email-work']
}
],
frequency_minute: 5040,
max_failure_trigger: 5,
max_daily_trigger: 43200,
max_records_per_trigger: 50,
notification_email: '[email protected]',
max_retry_per_trigger: 1,
retry_delay_second: 3
})
};
fetch('https://api.pubrio.com/monitors/webhook/validate', 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.pubrio.com/monitors/webhook/validate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'destination_config' => [
'webhook_url' => 'https://your-webhook.com/endpoint',
'headers' => [
'Authorization' => 'Bearer token'
],
'body' => [
'pipeline' => 'my-webhook'
]
],
'monitor_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'name' => '<string>',
'description' => '<string>',
'signal_types' => [
],
'signal_filters' => [
[
'filters' => [
'locations' => [
'US'
]
],
'signal_type' => 'jobs'
],
[
'filters' => [
'locations' => [
'US'
]
],
'signal_type' => 'news'
],
[
'filters' => [
'target_locations' => [
'US'
]
],
'signal_type' => 'advertisements'
],
[
'filters' => [
'tos' => [
'US'
],
'stages' => [
'expanding',
'scaling'
],
'signal_strengths' => [
'high',
'very_high'
]
],
'signal_type' => 'expansions'
]
],
'company_filters' => [
'locations' => [
'US'
],
'employees' => [
[
501,
1000
],
[
1001,
5000
]
]
],
'companies' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'domains' => [
'<string>'
],
'linkedin_urls' => [
'<string>'
],
'is_company_enrichment' => true,
'is_people_enrichment' => true,
'people_enrichment_configs' => [
[
'filters' => [
'people_locations' => [
'US'
]
],
'max_people_to_return' => 3,
'people_contact_types' => [
'email-work'
]
]
],
'frequency_minute' => 5040,
'max_failure_trigger' => 5,
'max_daily_trigger' => 43200,
'max_records_per_trigger' => 50,
'notification_email' => '[email protected]',
'max_retry_per_trigger' => 1,
'retry_delay_second' => 3
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"pubrio-api-key: <api-key>"
],
]);
$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.pubrio.com/monitors/webhook/validate"
payload := strings.NewReader("{\n \"destination_config\": {\n \"webhook_url\": \"https://your-webhook.com/endpoint\",\n \"headers\": {\n \"Authorization\": \"Bearer token\"\n },\n \"body\": {\n \"pipeline\": \"my-webhook\"\n }\n },\n \"monitor_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"signal_types\": [],\n \"signal_filters\": [\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"jobs\"\n },\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"news\"\n },\n {\n \"filters\": {\n \"target_locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"advertisements\"\n },\n {\n \"filters\": {\n \"tos\": [\n \"US\"\n ],\n \"stages\": [\n \"expanding\",\n \"scaling\"\n ],\n \"signal_strengths\": [\n \"high\",\n \"very_high\"\n ]\n },\n \"signal_type\": \"expansions\"\n }\n ],\n \"company_filters\": {\n \"locations\": [\n \"US\"\n ],\n \"employees\": [\n [\n 501,\n 1000\n ],\n [\n 1001,\n 5000\n ]\n ]\n },\n \"companies\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"is_company_enrichment\": true,\n \"is_people_enrichment\": true,\n \"people_enrichment_configs\": [\n {\n \"filters\": {\n \"people_locations\": [\n \"US\"\n ]\n },\n \"max_people_to_return\": 3,\n \"people_contact_types\": [\n \"email-work\"\n ]\n }\n ],\n \"frequency_minute\": 5040,\n \"max_failure_trigger\": 5,\n \"max_daily_trigger\": 43200,\n \"max_records_per_trigger\": 50,\n \"notification_email\": \"[email protected]\",\n \"max_retry_per_trigger\": 1,\n \"retry_delay_second\": 3\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("pubrio-api-key", "<api-key>")
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.post("https://api.pubrio.com/monitors/webhook/validate")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"destination_config\": {\n \"webhook_url\": \"https://your-webhook.com/endpoint\",\n \"headers\": {\n \"Authorization\": \"Bearer token\"\n },\n \"body\": {\n \"pipeline\": \"my-webhook\"\n }\n },\n \"monitor_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"signal_types\": [],\n \"signal_filters\": [\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"jobs\"\n },\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"news\"\n },\n {\n \"filters\": {\n \"target_locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"advertisements\"\n },\n {\n \"filters\": {\n \"tos\": [\n \"US\"\n ],\n \"stages\": [\n \"expanding\",\n \"scaling\"\n ],\n \"signal_strengths\": [\n \"high\",\n \"very_high\"\n ]\n },\n \"signal_type\": \"expansions\"\n }\n ],\n \"company_filters\": {\n \"locations\": [\n \"US\"\n ],\n \"employees\": [\n [\n 501,\n 1000\n ],\n [\n 1001,\n 5000\n ]\n ]\n },\n \"companies\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"is_company_enrichment\": true,\n \"is_people_enrichment\": true,\n \"people_enrichment_configs\": [\n {\n \"filters\": {\n \"people_locations\": [\n \"US\"\n ]\n },\n \"max_people_to_return\": 3,\n \"people_contact_types\": [\n \"email-work\"\n ]\n }\n ],\n \"frequency_minute\": 5040,\n \"max_failure_trigger\": 5,\n \"max_daily_trigger\": 43200,\n \"max_records_per_trigger\": 50,\n \"notification_email\": \"[email protected]\",\n \"max_retry_per_trigger\": 1,\n \"retry_delay_second\": 3\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/monitors/webhook/validate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["pubrio-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"destination_config\": {\n \"webhook_url\": \"https://your-webhook.com/endpoint\",\n \"headers\": {\n \"Authorization\": \"Bearer token\"\n },\n \"body\": {\n \"pipeline\": \"my-webhook\"\n }\n },\n \"monitor_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"signal_types\": [],\n \"signal_filters\": [\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"jobs\"\n },\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"news\"\n },\n {\n \"filters\": {\n \"target_locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"advertisements\"\n },\n {\n \"filters\": {\n \"tos\": [\n \"US\"\n ],\n \"stages\": [\n \"expanding\",\n \"scaling\"\n ],\n \"signal_strengths\": [\n \"high\",\n \"very_high\"\n ]\n },\n \"signal_type\": \"expansions\"\n }\n ],\n \"company_filters\": {\n \"locations\": [\n \"US\"\n ],\n \"employees\": [\n [\n 501,\n 1000\n ],\n [\n 1001,\n 5000\n ]\n ]\n },\n \"companies\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"is_company_enrichment\": true,\n \"is_people_enrichment\": true,\n \"people_enrichment_configs\": [\n {\n \"filters\": {\n \"people_locations\": [\n \"US\"\n ]\n },\n \"max_people_to_return\": 3,\n \"people_contact_types\": [\n \"email-work\"\n ]\n }\n ],\n \"frequency_minute\": 5040,\n \"max_failure_trigger\": 5,\n \"max_daily_trigger\": 43200,\n \"max_records_per_trigger\": 50,\n \"notification_email\": \"[email protected]\",\n \"max_retry_per_trigger\": 1,\n \"retry_delay_second\": 3\n}"
response = http.request(request)
puts response.read_body{
"data": {
"destination_config": {
"webhook_url": "https://usewebhook.com/example",
"headers": {
"X-Custom-Auth": "your-token"
},
"body": {
"source": "pubrio"
}
},
"request_payload": {
"monitor": {
"monitor_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "My Monitor",
"detection_mode": "signal_first",
"signal_types": [
"jobs",
"news",
"advertisements"
],
"signal_filters": [
"..."
],
"company_filters": {
"...": "..."
},
"is_company_enrichment": true,
"is_people_enrichment": true,
"people_enrichment_configs": [
"..."
]
},
"metadata": {
"total_signals": 3,
"total_companies": 1,
"total_people": 0
},
"triggered_at": "2026-04-05T22:43:06.973Z",
"signals": [
{
"signal_type": "jobs",
"signal": {
"signal_type": "jobs",
"job_search_id": "...",
"companies": [
"..."
]
},
"companies": [
"..."
]
},
"..."
],
"source": "pubrio"
},
"response_payload": "OK"
}
}{
"code": 40001,
"message": "Errors and codes will vary depending on the scenario, please see the documentation for information.",
"details": {}
}{
"error": "Request rate limit exceeded. Please wait and try again later."
}{
"error": "An unexpected error occurred on the server."
}Monitor Validate Webhook
Send a signed test payload to a webhook URL and report whether it was accepted.
This performs a real HTTP delivery, not a URL syntax check. The receiver must accept a POST and respond successfully — a URL that merely serves a page on GET still fails. On failure you get 40023 (URL not valid or unreachable) or 40022 (test delivery failed), and details carries the raw upstream response body, which can be several kilobytes of HTML. Pass monitor_id to sign the test with that monitor’s real signature; omit it and a placeholder signature is used.
curl --request POST \
--url https://api.pubrio.com/monitors/webhook/validate \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"destination_config": {
"webhook_url": "https://your-webhook.com/endpoint",
"headers": {
"Authorization": "Bearer token"
},
"body": {
"pipeline": "my-webhook"
}
},
"monitor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"signal_types": [],
"signal_filters": [
{
"filters": {
"locations": [
"US"
]
},
"signal_type": "jobs"
},
{
"filters": {
"locations": [
"US"
]
},
"signal_type": "news"
},
{
"filters": {
"target_locations": [
"US"
]
},
"signal_type": "advertisements"
},
{
"filters": {
"tos": [
"US"
],
"stages": [
"expanding",
"scaling"
],
"signal_strengths": [
"high",
"very_high"
]
},
"signal_type": "expansions"
}
],
"company_filters": {
"locations": [
"US"
],
"employees": [
[
501,
1000
],
[
1001,
5000
]
]
},
"companies": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"domains": [
"<string>"
],
"linkedin_urls": [
"<string>"
],
"is_company_enrichment": true,
"is_people_enrichment": true,
"people_enrichment_configs": [
{
"filters": {
"people_locations": [
"US"
]
},
"max_people_to_return": 3,
"people_contact_types": [
"email-work"
]
}
],
"frequency_minute": 5040,
"max_failure_trigger": 5,
"max_daily_trigger": 43200,
"max_records_per_trigger": 50,
"notification_email": "[email protected]",
"max_retry_per_trigger": 1,
"retry_delay_second": 3
}
'import requests
url = "https://api.pubrio.com/monitors/webhook/validate"
payload = {
"destination_config": {
"webhook_url": "https://your-webhook.com/endpoint",
"headers": { "Authorization": "Bearer token" },
"body": { "pipeline": "my-webhook" }
},
"monitor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"signal_types": [],
"signal_filters": [
{
"filters": { "locations": ["US"] },
"signal_type": "jobs"
},
{
"filters": { "locations": ["US"] },
"signal_type": "news"
},
{
"filters": { "target_locations": ["US"] },
"signal_type": "advertisements"
},
{
"filters": {
"tos": ["US"],
"stages": ["expanding", "scaling"],
"signal_strengths": ["high", "very_high"]
},
"signal_type": "expansions"
}
],
"company_filters": {
"locations": ["US"],
"employees": [[501, 1000], [1001, 5000]]
},
"companies": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"domains": ["<string>"],
"linkedin_urls": ["<string>"],
"is_company_enrichment": True,
"is_people_enrichment": True,
"people_enrichment_configs": [
{
"filters": { "people_locations": ["US"] },
"max_people_to_return": 3,
"people_contact_types": ["email-work"]
}
],
"frequency_minute": 5040,
"max_failure_trigger": 5,
"max_daily_trigger": 43200,
"max_records_per_trigger": 50,
"notification_email": "[email protected]",
"max_retry_per_trigger": 1,
"retry_delay_second": 3
}
headers = {
"pubrio-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'pubrio-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
destination_config: {
webhook_url: 'https://your-webhook.com/endpoint',
headers: {Authorization: 'Bearer token'},
body: JSON.stringify({pipeline: 'my-webhook'})
},
monitor_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
name: '<string>',
description: '<string>',
signal_types: [],
signal_filters: [
{filters: {locations: ['US']}, signal_type: 'jobs'},
{filters: {locations: ['US']}, signal_type: 'news'},
{filters: {target_locations: ['US']}, signal_type: 'advertisements'},
{
filters: {
tos: ['US'],
stages: ['expanding', 'scaling'],
signal_strengths: ['high', 'very_high']
},
signal_type: 'expansions'
}
],
company_filters: {locations: ['US'], employees: [[501, 1000], [1001, 5000]]},
companies: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
domains: ['<string>'],
linkedin_urls: ['<string>'],
is_company_enrichment: true,
is_people_enrichment: true,
people_enrichment_configs: [
{
filters: {people_locations: ['US']},
max_people_to_return: 3,
people_contact_types: ['email-work']
}
],
frequency_minute: 5040,
max_failure_trigger: 5,
max_daily_trigger: 43200,
max_records_per_trigger: 50,
notification_email: '[email protected]',
max_retry_per_trigger: 1,
retry_delay_second: 3
})
};
fetch('https://api.pubrio.com/monitors/webhook/validate', 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.pubrio.com/monitors/webhook/validate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'destination_config' => [
'webhook_url' => 'https://your-webhook.com/endpoint',
'headers' => [
'Authorization' => 'Bearer token'
],
'body' => [
'pipeline' => 'my-webhook'
]
],
'monitor_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'name' => '<string>',
'description' => '<string>',
'signal_types' => [
],
'signal_filters' => [
[
'filters' => [
'locations' => [
'US'
]
],
'signal_type' => 'jobs'
],
[
'filters' => [
'locations' => [
'US'
]
],
'signal_type' => 'news'
],
[
'filters' => [
'target_locations' => [
'US'
]
],
'signal_type' => 'advertisements'
],
[
'filters' => [
'tos' => [
'US'
],
'stages' => [
'expanding',
'scaling'
],
'signal_strengths' => [
'high',
'very_high'
]
],
'signal_type' => 'expansions'
]
],
'company_filters' => [
'locations' => [
'US'
],
'employees' => [
[
501,
1000
],
[
1001,
5000
]
]
],
'companies' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'domains' => [
'<string>'
],
'linkedin_urls' => [
'<string>'
],
'is_company_enrichment' => true,
'is_people_enrichment' => true,
'people_enrichment_configs' => [
[
'filters' => [
'people_locations' => [
'US'
]
],
'max_people_to_return' => 3,
'people_contact_types' => [
'email-work'
]
]
],
'frequency_minute' => 5040,
'max_failure_trigger' => 5,
'max_daily_trigger' => 43200,
'max_records_per_trigger' => 50,
'notification_email' => '[email protected]',
'max_retry_per_trigger' => 1,
'retry_delay_second' => 3
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"pubrio-api-key: <api-key>"
],
]);
$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.pubrio.com/monitors/webhook/validate"
payload := strings.NewReader("{\n \"destination_config\": {\n \"webhook_url\": \"https://your-webhook.com/endpoint\",\n \"headers\": {\n \"Authorization\": \"Bearer token\"\n },\n \"body\": {\n \"pipeline\": \"my-webhook\"\n }\n },\n \"monitor_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"signal_types\": [],\n \"signal_filters\": [\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"jobs\"\n },\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"news\"\n },\n {\n \"filters\": {\n \"target_locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"advertisements\"\n },\n {\n \"filters\": {\n \"tos\": [\n \"US\"\n ],\n \"stages\": [\n \"expanding\",\n \"scaling\"\n ],\n \"signal_strengths\": [\n \"high\",\n \"very_high\"\n ]\n },\n \"signal_type\": \"expansions\"\n }\n ],\n \"company_filters\": {\n \"locations\": [\n \"US\"\n ],\n \"employees\": [\n [\n 501,\n 1000\n ],\n [\n 1001,\n 5000\n ]\n ]\n },\n \"companies\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"is_company_enrichment\": true,\n \"is_people_enrichment\": true,\n \"people_enrichment_configs\": [\n {\n \"filters\": {\n \"people_locations\": [\n \"US\"\n ]\n },\n \"max_people_to_return\": 3,\n \"people_contact_types\": [\n \"email-work\"\n ]\n }\n ],\n \"frequency_minute\": 5040,\n \"max_failure_trigger\": 5,\n \"max_daily_trigger\": 43200,\n \"max_records_per_trigger\": 50,\n \"notification_email\": \"[email protected]\",\n \"max_retry_per_trigger\": 1,\n \"retry_delay_second\": 3\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("pubrio-api-key", "<api-key>")
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.post("https://api.pubrio.com/monitors/webhook/validate")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"destination_config\": {\n \"webhook_url\": \"https://your-webhook.com/endpoint\",\n \"headers\": {\n \"Authorization\": \"Bearer token\"\n },\n \"body\": {\n \"pipeline\": \"my-webhook\"\n }\n },\n \"monitor_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"signal_types\": [],\n \"signal_filters\": [\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"jobs\"\n },\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"news\"\n },\n {\n \"filters\": {\n \"target_locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"advertisements\"\n },\n {\n \"filters\": {\n \"tos\": [\n \"US\"\n ],\n \"stages\": [\n \"expanding\",\n \"scaling\"\n ],\n \"signal_strengths\": [\n \"high\",\n \"very_high\"\n ]\n },\n \"signal_type\": \"expansions\"\n }\n ],\n \"company_filters\": {\n \"locations\": [\n \"US\"\n ],\n \"employees\": [\n [\n 501,\n 1000\n ],\n [\n 1001,\n 5000\n ]\n ]\n },\n \"companies\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"is_company_enrichment\": true,\n \"is_people_enrichment\": true,\n \"people_enrichment_configs\": [\n {\n \"filters\": {\n \"people_locations\": [\n \"US\"\n ]\n },\n \"max_people_to_return\": 3,\n \"people_contact_types\": [\n \"email-work\"\n ]\n }\n ],\n \"frequency_minute\": 5040,\n \"max_failure_trigger\": 5,\n \"max_daily_trigger\": 43200,\n \"max_records_per_trigger\": 50,\n \"notification_email\": \"[email protected]\",\n \"max_retry_per_trigger\": 1,\n \"retry_delay_second\": 3\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/monitors/webhook/validate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["pubrio-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"destination_config\": {\n \"webhook_url\": \"https://your-webhook.com/endpoint\",\n \"headers\": {\n \"Authorization\": \"Bearer token\"\n },\n \"body\": {\n \"pipeline\": \"my-webhook\"\n }\n },\n \"monitor_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"signal_types\": [],\n \"signal_filters\": [\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"jobs\"\n },\n {\n \"filters\": {\n \"locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"news\"\n },\n {\n \"filters\": {\n \"target_locations\": [\n \"US\"\n ]\n },\n \"signal_type\": \"advertisements\"\n },\n {\n \"filters\": {\n \"tos\": [\n \"US\"\n ],\n \"stages\": [\n \"expanding\",\n \"scaling\"\n ],\n \"signal_strengths\": [\n \"high\",\n \"very_high\"\n ]\n },\n \"signal_type\": \"expansions\"\n }\n ],\n \"company_filters\": {\n \"locations\": [\n \"US\"\n ],\n \"employees\": [\n [\n 501,\n 1000\n ],\n [\n 1001,\n 5000\n ]\n ]\n },\n \"companies\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"linkedin_urls\": [\n \"<string>\"\n ],\n \"is_company_enrichment\": true,\n \"is_people_enrichment\": true,\n \"people_enrichment_configs\": [\n {\n \"filters\": {\n \"people_locations\": [\n \"US\"\n ]\n },\n \"max_people_to_return\": 3,\n \"people_contact_types\": [\n \"email-work\"\n ]\n }\n ],\n \"frequency_minute\": 5040,\n \"max_failure_trigger\": 5,\n \"max_daily_trigger\": 43200,\n \"max_records_per_trigger\": 50,\n \"notification_email\": \"[email protected]\",\n \"max_retry_per_trigger\": 1,\n \"retry_delay_second\": 3\n}"
response = http.request(request)
puts response.read_body{
"data": {
"destination_config": {
"webhook_url": "https://usewebhook.com/example",
"headers": {
"X-Custom-Auth": "your-token"
},
"body": {
"source": "pubrio"
}
},
"request_payload": {
"monitor": {
"monitor_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "My Monitor",
"detection_mode": "signal_first",
"signal_types": [
"jobs",
"news",
"advertisements"
],
"signal_filters": [
"..."
],
"company_filters": {
"...": "..."
},
"is_company_enrichment": true,
"is_people_enrichment": true,
"people_enrichment_configs": [
"..."
]
},
"metadata": {
"total_signals": 3,
"total_companies": 1,
"total_people": 0
},
"triggered_at": "2026-04-05T22:43:06.973Z",
"signals": [
{
"signal_type": "jobs",
"signal": {
"signal_type": "jobs",
"job_search_id": "...",
"companies": [
"..."
]
},
"companies": [
"..."
]
},
"..."
],
"source": "pubrio"
},
"response_payload": "OK"
}
}{
"code": 40001,
"message": "Errors and codes will vary depending on the scenario, please see the documentation for information.",
"details": {}
}{
"error": "Request rate limit exceeded. Please wait and try again later."
}{
"error": "An unexpected error occurred on the server."
}Authorizations
Body
Configuration for the destination. For webhook: requires webhook_url (string), optional headers (object) and body (object). For email: accepts email (string) or emails (array of strings). For sequences: requires sequence_identifier (string) plus at least one of is_people_search_enrolled / is_company_contact_enrolled set to true.
{
"webhook_url": "https://your-webhook.com/endpoint",
"headers": { "Authorization": "Bearer token" },
"body": { "pipeline": "my-webhook" }
}
Unique identifier of an existing monitor to test. Optional for testing new configurations.
Name of the monitor.
Description of the monitor.
How signals are detected. signal_first scans the market broadly; company_first tracks a named account list and requires at least one company, domain or LinkedIn URL. Immutable after creation — changing it on an existing monitor returns 40021. Create a new monitor instead.
company_first, signal_first Types of signals to monitor.
jobs, news, advertisements, expansions Array of signal filter objects. Each object has signal_type (one of: jobs, news, advertisements, expansions) and filters (object with signal-specific parameters). See Job Search, News Search or Advertisement Search for the available filter parameters per signal type. For expansions, use the Expansion Search filter vocabulary — froms / tos, stages, momentum, freshness, scopes, signal_types, signal_strengths and window_days.
[
{
"filters": { "locations": ["US"] },
"signal_type": "jobs"
},
{
"filters": { "locations": ["US"] },
"signal_type": "news"
},
{
"filters": { "target_locations": ["US"] },
"signal_type": "advertisements"
},
{
"filters": {
"tos": ["US"],
"stages": ["expanding", "scaling"],
"signal_strengths": ["high", "very_high"]
},
"signal_type": "expansions"
}
]
Global company filters. Accepts the same parameters as the Company Search endpoint.
{
"locations": ["US"],
"employees": [[501, 1000], [1001, 5000]]
}
List of company domain_search_id UUIDs. Alternative: use domains or linkedin_urls.
List of company domains. Alternative to companies.
List of LinkedIn company URLs. Alternative to companies.
Whether to enrich company data.
Whether to enrich people data.
Array of people enrichment layers. Contains max_people_to_return (1-25), people_contact_types (see Redeem), and filters (see People Search).
[
{
"filters": { "people_locations": ["US"] },
"max_people_to_return": 3,
"people_contact_types": ["email-work"]
}
]
Delivery destination type.
webhook, email, sequences Trigger frequency in minutes. Min: 0, Max: 10080.
0 <= x <= 10080Maximum consecutive failures before pausing. Min: 1, Max: 10.
1 <= x <= 10Maximum triggers per day. Min: 0, Max: 86400.
0 <= x <= 86400Controls the maximum number of records delivered per trigger. Lower values reduce payload size per delivery, which is recommended for large result sets or rate-limited integrations. Min: 1, Max: 100, Default: 25. See Setting up Webhooks for guidance.
1 <= x <= 100Email for failure notifications.
Maximum retries per trigger. Min: 0, Max: 3.
0 <= x <= 3Delay between retries in seconds. Min: 1, Max: 5.
1 <= x <= 5Response
Successful response containing the webhook validation results — the destination configuration and the test request/response payloads. On webhook failure the endpoint responds 400 (MONITOR_WEBHOOK_URL_INVALID) with the webhook's response in the error details.
Show child attributes
Show child attributes

