Preview Signal
Sample what a preset would detect, without creating a signal.
Returns up to 10 recent matches over a 30-day window. The sample is wider than a live run: no audience filter and no dedup are applied, so use it to check the detection filters, not to predict volume.
Requires the signals:read scope on the API key.
curl --request POST \
--url https://api.topo.io/v1/signals/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"search_filters": {}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({search_filters: {}})
};
fetch('https://api.topo.io/v1/signals/preview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.topo.io/v1/signals/preview"
payload = { "search_filters": {} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"window_days": 123,
"total_count": 123,
"items": [
{
"event_type": "CLIENT_POST_REACTION",
"company_name": "<string>",
"company_domain": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"job_title": "<string>",
"linkedin_url": "<string>",
"email": "<string>"
}
],
"unavailable_reason": "<string>"
}Authorizations
Bearer API key issued from Settings → Developers.
Body
Preview Signal payload
Which preset to sample. Read GET /v1/signals/presets first — a preset with preview_supported: false cannot be previewed.
LINKEDIN_OWN_POST_ENGAGEMENT, LINKEDIN_COMPETITOR_POST_ENGAGEMENT, LINKEDIN_PERSON_POST_ENGAGEMENT, LINKEDIN_KEYWORD_MENTION, LINKEDIN_OWN_COMPANY_FOLLOWERS, LINKEDIN_COMPETITOR_FOLLOWERS, LINKEDIN_COMPANY_PAGE_FOLLOWERS, HIRING_SIGNALS, JOB_DESCRIPTION_KEYWORD, FUNDING_EVENTS, TECH_ADOPTION, NEWS_EVENTS, NEW_JOB, CUSTOM_EVENT, LINKEDIN_PARTNER_FOLLOWERS, LINKEDIN_CUSTOMER_FOLLOWERS, LINKEDIN_PARTNER_POST_ENGAGEMENT, LINKEDIN_CUSTOMER_POST_ENGAGEMENT, LINKEDIN_COMPANY_PAGE_POST_ENGAGEMENT, LINKEDIN_OWN_PROFILE_POST_ENGAGEMENT, LINKEDIN_OWN_EMPLOYEES_POST_ENGAGEMENT, LINKEDIN_COMPETITOR_EMPLOYEES_POST_ENGAGEMENT, LINKEDIN_PARTNER_EMPLOYEES_POST_ENGAGEMENT, LINKEDIN_CUSTOMER_EMPLOYEES_POST_ENGAGEMENT, LINKEDIN_OWN_BRAND_MENTION, LINKEDIN_COMPETITOR_MENTION, LINKEDIN_PARTNER_MENTION, LINKEDIN_CUSTOMER_MENTION, LINKEDIN_EVENT_MENTION, COMPETITOR_TECH_ADOPTION, INTEGRATION_TECH_ADOPTION, LINKEDIN_EVENT_PAGE_FOLLOWERS, CHAMPION_CHANGED_JOB, CRM_LIST_ENTRY Response
Successful Response
How many days back the sample looked.
How many facts the source reports over the window, when it counts them.
A sample of recent matches, newest first.
Hide child attributes
Hide child attributes
What kind of fact the source detected.
CLIENT_POST_REACTION, CLIENT_POST_COMMENT, COMPETITOR_POST_REACTION, COMPETITOR_POST_COMMENT, PERSON_POST_REACTION, CLIENT_PAGE_FOLLOW, COMPETITOR_PAGE_FOLLOW, COMPANY_PAGE_FOLLOW, PUBLIC_BRAND_MENTION_LINKEDIN, PAIN_POINT_PUBLIC_POST, LEADERSHIP_HIRING, HIRING_SURGE, NEW_ROLE, TECH_ADOPTED, TECH_DROPPED, FUNDING_EVENT, M_AND_A_EVENT, LEADERSHIP_CHANGE_NEWS, BRAND_MENTION_NEWS, CUSTOM_EVENT Name of the detected company.
Domain of the detected company.
First name of the detected person.
Last name of the detected person.
Job title of the detected person.
LinkedIn URL of the detected person.
Email of the detected person.
Why this preset returned no sample. Empty when a sample was attempted.
Was this page helpful?
curl --request POST \
--url https://api.topo.io/v1/signals/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"search_filters": {}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({search_filters: {}})
};
fetch('https://api.topo.io/v1/signals/preview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.topo.io/v1/signals/preview"
payload = { "search_filters": {} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"window_days": 123,
"total_count": 123,
"items": [
{
"event_type": "CLIENT_POST_REACTION",
"company_name": "<string>",
"company_domain": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"job_title": "<string>",
"linkedin_url": "<string>",
"email": "<string>"
}
],
"unavailable_reason": "<string>"
}