curl --request GET \
--url https://api.openpulse.cloud/v1/results \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.openpulse.cloud/v1/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.openpulse.cloud/v1/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.openpulse.cloud/v1/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.openpulse.cloud/v1/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.openpulse.cloud/v1/results")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openpulse.cloud/v1/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{
"items": [
{
"id": "<string>",
"orgId": "<string>",
"listenerId": "<string>",
"source": "x",
"url": "<string>",
"title": "<string>",
"excerpt": "<string>",
"postedAt": "2023-11-07T05:31:56Z",
"relevanceScore": 50,
"classification": "high_intent",
"rationale": "<string>",
"matchedKeywords": [
"<string>"
],
"firstSeenAt": "2023-11-07T05:31:56Z",
"author": "<string>",
"publishedAt": "2023-11-07T05:31:56Z",
"approximateDate": true,
"dedupeKey": "<string>",
"titleKey": "<string>",
"coverage": "full_text",
"scoreVersion": 1,
"scoreBreakdown": {
"purchaseIntent": 15,
"fit": 10,
"urgency": 7,
"recency": 5,
"commercialValue": 5,
"evidenceQuality": 5,
"multiSignal": 2
},
"signalCategory": "direct_intent",
"urgency": "low",
"purchaseIntent": "weak",
"confidence": "low",
"inferredNeed": "<string>",
"recommendedAction": "<string>",
"situation": "<string>",
"opportunity": "<string>",
"inferenceHops": 0,
"suggestedAngle": "<string>",
"themes": [
"<string>"
],
"rating": 3,
"subjectOrg": {
"name": "<string>",
"location": "<string>",
"workMode": "any",
"seniority": "<string>",
"compensation": "<string>"
},
"subjectName": "<string>",
"accountKey": "<string>",
"rivalKey": "<string>",
"placeKey": "<string>",
"policy": {
"propensity": 0,
"explored": true,
"scoreAtDecision": 123,
"barAtDecision": 123
},
"passedBy": "keyword",
"rerankScore": 123,
"foundByQuery": "<string>",
"queryAttribution": "exact",
"assignedTo": {
"userId": "<string>",
"at": "2023-11-07T05:31:56Z",
"by": "<string>"
},
"feedback": {
"verdict": "good",
"at": "2023-11-07T05:31:56Z"
},
"readAt": "2023-11-07T05:31:56Z",
"alertedAt": "2023-11-07T05:31:56Z"
}
],
"nextCursor": "<string>"
}{
"message": "<string>",
"code": "<string>",
"detail": "<unknown>"
}{
"message": "<string>",
"code": "<string>",
"detail": "<unknown>"
}{
"message": "<string>",
"code": "<string>",
"detail": "<unknown>"
}List signals
Kept signals across the workspace, newest first, cursor-paginated. A signal is one public post, job posting or review that a listener judged relevant, with its score and the reasoning behind it.
classification values differ per listener mode: filtering by one from the wrong mode returns an empty page rather than an error, which reads as ‘nothing found’ and is not. Pass listenerId to scope the filter to a listener whose mode you know.
curl --request GET \
--url https://api.openpulse.cloud/v1/results \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.openpulse.cloud/v1/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.openpulse.cloud/v1/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.openpulse.cloud/v1/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.openpulse.cloud/v1/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.openpulse.cloud/v1/results")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openpulse.cloud/v1/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{
"items": [
{
"id": "<string>",
"orgId": "<string>",
"listenerId": "<string>",
"source": "x",
"url": "<string>",
"title": "<string>",
"excerpt": "<string>",
"postedAt": "2023-11-07T05:31:56Z",
"relevanceScore": 50,
"classification": "high_intent",
"rationale": "<string>",
"matchedKeywords": [
"<string>"
],
"firstSeenAt": "2023-11-07T05:31:56Z",
"author": "<string>",
"publishedAt": "2023-11-07T05:31:56Z",
"approximateDate": true,
"dedupeKey": "<string>",
"titleKey": "<string>",
"coverage": "full_text",
"scoreVersion": 1,
"scoreBreakdown": {
"purchaseIntent": 15,
"fit": 10,
"urgency": 7,
"recency": 5,
"commercialValue": 5,
"evidenceQuality": 5,
"multiSignal": 2
},
"signalCategory": "direct_intent",
"urgency": "low",
"purchaseIntent": "weak",
"confidence": "low",
"inferredNeed": "<string>",
"recommendedAction": "<string>",
"situation": "<string>",
"opportunity": "<string>",
"inferenceHops": 0,
"suggestedAngle": "<string>",
"themes": [
"<string>"
],
"rating": 3,
"subjectOrg": {
"name": "<string>",
"location": "<string>",
"workMode": "any",
"seniority": "<string>",
"compensation": "<string>"
},
"subjectName": "<string>",
"accountKey": "<string>",
"rivalKey": "<string>",
"placeKey": "<string>",
"policy": {
"propensity": 0,
"explored": true,
"scoreAtDecision": 123,
"barAtDecision": 123
},
"passedBy": "keyword",
"rerankScore": 123,
"foundByQuery": "<string>",
"queryAttribution": "exact",
"assignedTo": {
"userId": "<string>",
"at": "2023-11-07T05:31:56Z",
"by": "<string>"
},
"feedback": {
"verdict": "good",
"at": "2023-11-07T05:31:56Z"
},
"readAt": "2023-11-07T05:31:56Z",
"alertedAt": "2023-11-07T05:31:56Z"
}
],
"nextCursor": "<string>"
}{
"message": "<string>",
"code": "<string>",
"detail": "<unknown>"
}{
"message": "<string>",
"code": "<string>",
"detail": "<unknown>"
}{
"message": "<string>",
"code": "<string>",
"detail": "<unknown>"
}Authorizations
A workspace API key, created in workspace settings and sent as Authorization: Bearer op_live_…. Session cookies are not accepted. Scopes: signals:read, accounts:read, listeners:read, listeners:analyse, pipeline:read, pipeline:write, collections:write, export:read.
Query Parameters
Only signals from this listener.
Page size, 1–200. Defaults to 50. Values outside the range are clamped rather than rejected.
1 <= x <= 200nextCursor from the previous page. An unreadable cursor is ignored and the first page is returned, so check nextCursor for null rather than looping until a page comes back empty.
Only signals published within this many days. Defaults to the workspace's retention window, and cannot be used to read further back than it.
x >= 1Intent label. Valid values depend on the listener's mode, and one from the wrong mode returns an empty page rather than an error — which reads as "nothing found" and is not. Pass listenerId too when you know the mode.
high_intent, evaluating, relevant, competitor, content, strong_match, worth_a_look, stretch, mismatch, stale, hiring_now, expanding, replacing, adjacent, switching, frustrated, comparing, praise, pain_confirmed, at_risk, healthy, noise Platform the signal came from.
Only signals carrying this theme.
Free-text search over the signal's title and summary. Matches whole words, with stemming: report finds reporting, repo does not. Truncated past 120 characters.
120Response
Signals newest first by postedAt, within the retention window.
One page of signals, newest or strongest first depending on the endpoint.
Was this page helpful?