curl --request POST \
--url https://api.pubrio.com/monitors/signals/search \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"page_token": "<string>"
}
'import requests
url = "https://api.pubrio.com/monitors/signals/search"
payload = { "page_token": "<string>" }
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({page_token: '<string>'})
};
fetch('https://api.pubrio.com/monitors/signals/search', 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/signals/search",
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([
'page_token' => '<string>'
]),
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/signals/search"
payload := strings.NewReader("{\n \"page_token\": \"<string>\"\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/signals/search")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"page_token\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/monitors/signals/search")
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 \"page_token\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"monitor_log_id": "516b72de-79d5-400b-9bae-423a43eca98b",
"page_token": "c2b1…"
},
"data": {
"monitor": {
"monitor_id": "c9cd5421-b327-4243-9cd7-8b341b3da8bd",
"name": "Weekly CFO hires",
"detection_mode": "signal_first",
"record_unit": "signal"
},
"metadata": {
"monitor_log_id": "516b72de-79d5-400b-9bae-423a43eca98b",
"parent_monitor_log_id": null,
"total_signals": 25,
"total_companies": 25,
"total_people": 0,
"window": {
"from": "2026-10-10T02:09:00.000Z",
"to": "2026-10-17T06:09:56.270Z",
"next_page_token": "eyJhbGciOi…"
}
},
"triggered_at": "2026-10-17T06:20:11.002Z",
"signals": [],
"pagination": {
"page": 2,
"per_page": 25,
"total_entries": 395,
"total_pages": 16,
"total_display_pages": 16,
"is_timeout": false,
"is_estimated": false
}
}
}{
"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 Signals Search
Read the next page of one paged delivery (is_paged_delivery: true). The window is frozen at the run: the page holds only signals of that window, under the monitor’s current filters, company scope, exclusions and company dedupe window, in the delivery’s order. Each page is one bounded keyset read, and is billed like the equivalent search (one search credit per signal type the page reads; watchlists are free). The page has the webhook payload’s shape.
curl --request POST \
--url https://api.pubrio.com/monitors/signals/search \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"page_token": "<string>"
}
'import requests
url = "https://api.pubrio.com/monitors/signals/search"
payload = { "page_token": "<string>" }
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({page_token: '<string>'})
};
fetch('https://api.pubrio.com/monitors/signals/search', 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/signals/search",
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([
'page_token' => '<string>'
]),
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/signals/search"
payload := strings.NewReader("{\n \"page_token\": \"<string>\"\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/signals/search")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"page_token\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/monitors/signals/search")
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 \"page_token\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"monitor_log_id": "516b72de-79d5-400b-9bae-423a43eca98b",
"page_token": "c2b1…"
},
"data": {
"monitor": {
"monitor_id": "c9cd5421-b327-4243-9cd7-8b341b3da8bd",
"name": "Weekly CFO hires",
"detection_mode": "signal_first",
"record_unit": "signal"
},
"metadata": {
"monitor_log_id": "516b72de-79d5-400b-9bae-423a43eca98b",
"parent_monitor_log_id": null,
"total_signals": 25,
"total_companies": 25,
"total_people": 0,
"window": {
"from": "2026-10-10T02:09:00.000Z",
"to": "2026-10-17T06:09:56.270Z",
"next_page_token": "eyJhbGciOi…"
}
},
"triggered_at": "2026-10-17T06:20:11.002Z",
"signals": [],
"pagination": {
"page": 2,
"per_page": 25,
"total_entries": 395,
"total_pages": 16,
"total_display_pages": 16,
"is_timeout": false,
"is_estimated": false
}
}
}{
"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
metadata.window.next_page_token from a paged delivery or from the previous page. It carries the frozen window, so the same token always reads the same span; null on the last page means the window is done.
Response
The page, in the webhook payload's shape plus the same pagination block every search returns. The envelope is { metadata: { monitor_log_id, page_token }, data: {...} }.

