curl --request POST \
--url https://api.getoneprofile.ai/find-signals/preview/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"query": {
"categories": [
"<string>"
],
"countries": [
"<string>"
],
"employees_max": 1,
"employees_min": 1,
"financing_types": [
"<string>"
],
"found_at_from": "2023-12-25",
"found_at_until": "2023-12-25",
"founded_year_max": 2000,
"founded_year_min": 2000,
"industries": [
"<string>"
],
"job_locations": [
"<string>"
],
"job_titles": [
"<string>"
],
"revenue_max": 1,
"revenue_min": 1,
"tags": [
"<string>"
],
"technology": "<string>"
}
}
'import requests
url = "https://api.getoneprofile.ai/find-signals/preview/"
payload = { "query": {
"categories": ["<string>"],
"countries": ["<string>"],
"employees_max": 1,
"employees_min": 1,
"financing_types": ["<string>"],
"found_at_from": "2023-12-25",
"found_at_until": "2023-12-25",
"founded_year_max": 2000,
"founded_year_min": 2000,
"industries": ["<string>"],
"job_locations": ["<string>"],
"job_titles": ["<string>"],
"revenue_max": 1,
"revenue_min": 1,
"tags": ["<string>"],
"technology": "<string>"
} }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
query: {
categories: ['<string>'],
countries: ['<string>'],
employees_max: 1,
employees_min: 1,
financing_types: ['<string>'],
found_at_from: '2023-12-25',
found_at_until: '2023-12-25',
founded_year_max: 2000,
founded_year_min: 2000,
industries: ['<string>'],
job_locations: ['<string>'],
job_titles: ['<string>'],
revenue_max: 1,
revenue_min: 1,
tags: ['<string>'],
technology: '<string>'
}
})
};
fetch('https://api.getoneprofile.ai/find-signals/preview/', 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.getoneprofile.ai/find-signals/preview/",
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([
'query' => [
'categories' => [
'<string>'
],
'countries' => [
'<string>'
],
'employees_max' => 1,
'employees_min' => 1,
'financing_types' => [
'<string>'
],
'found_at_from' => '2023-12-25',
'found_at_until' => '2023-12-25',
'founded_year_max' => 2000,
'founded_year_min' => 2000,
'industries' => [
'<string>'
],
'job_locations' => [
'<string>'
],
'job_titles' => [
'<string>'
],
'revenue_max' => 1,
'revenue_min' => 1,
'tags' => [
'<string>'
],
'technology' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-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.getoneprofile.ai/find-signals/preview/"
payload := strings.NewReader("{\n \"query\": {\n \"categories\": [\n \"<string>\"\n ],\n \"countries\": [\n \"<string>\"\n ],\n \"employees_max\": 1,\n \"employees_min\": 1,\n \"financing_types\": [\n \"<string>\"\n ],\n \"found_at_from\": \"2023-12-25\",\n \"found_at_until\": \"2023-12-25\",\n \"founded_year_max\": 2000,\n \"founded_year_min\": 2000,\n \"industries\": [\n \"<string>\"\n ],\n \"job_locations\": [\n \"<string>\"\n ],\n \"job_titles\": [\n \"<string>\"\n ],\n \"revenue_max\": 1,\n \"revenue_min\": 1,\n \"tags\": [\n \"<string>\"\n ],\n \"technology\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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.getoneprofile.ai/find-signals/preview/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"query\": {\n \"categories\": [\n \"<string>\"\n ],\n \"countries\": [\n \"<string>\"\n ],\n \"employees_max\": 1,\n \"employees_min\": 1,\n \"financing_types\": [\n \"<string>\"\n ],\n \"found_at_from\": \"2023-12-25\",\n \"found_at_until\": \"2023-12-25\",\n \"founded_year_max\": 2000,\n \"founded_year_min\": 2000,\n \"industries\": [\n \"<string>\"\n ],\n \"job_locations\": [\n \"<string>\"\n ],\n \"job_titles\": [\n \"<string>\"\n ],\n \"revenue_max\": 1,\n \"revenue_min\": 1,\n \"tags\": [\n \"<string>\"\n ],\n \"technology\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/find-signals/preview/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": {\n \"categories\": [\n \"<string>\"\n ],\n \"countries\": [\n \"<string>\"\n ],\n \"employees_max\": 1,\n \"employees_min\": 1,\n \"financing_types\": [\n \"<string>\"\n ],\n \"found_at_from\": \"2023-12-25\",\n \"found_at_until\": \"2023-12-25\",\n \"founded_year_max\": 2000,\n \"founded_year_min\": 2000,\n \"industries\": [\n \"<string>\"\n ],\n \"job_locations\": [\n \"<string>\"\n ],\n \"job_titles\": [\n \"<string>\"\n ],\n \"revenue_max\": 1,\n \"revenue_min\": 1,\n \"tags\": [\n \"<string>\"\n ],\n \"technology\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"records": [
{}
],
"signal_type": "hiring",
"technology": {
"id": "<string>",
"name": "<string>"
},
"total": 123
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Preview companies matching a signal
Fetch the first page of a signal search. There is no separate count: the provider publishes none, so a preview is the only way to see what a query finds — and its rows are billed like any others, which is why it is an explicit action capped well below a search.
curl --request POST \
--url https://api.getoneprofile.ai/find-signals/preview/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"query": {
"categories": [
"<string>"
],
"countries": [
"<string>"
],
"employees_max": 1,
"employees_min": 1,
"financing_types": [
"<string>"
],
"found_at_from": "2023-12-25",
"found_at_until": "2023-12-25",
"founded_year_max": 2000,
"founded_year_min": 2000,
"industries": [
"<string>"
],
"job_locations": [
"<string>"
],
"job_titles": [
"<string>"
],
"revenue_max": 1,
"revenue_min": 1,
"tags": [
"<string>"
],
"technology": "<string>"
}
}
'import requests
url = "https://api.getoneprofile.ai/find-signals/preview/"
payload = { "query": {
"categories": ["<string>"],
"countries": ["<string>"],
"employees_max": 1,
"employees_min": 1,
"financing_types": ["<string>"],
"found_at_from": "2023-12-25",
"found_at_until": "2023-12-25",
"founded_year_max": 2000,
"founded_year_min": 2000,
"industries": ["<string>"],
"job_locations": ["<string>"],
"job_titles": ["<string>"],
"revenue_max": 1,
"revenue_min": 1,
"tags": ["<string>"],
"technology": "<string>"
} }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
query: {
categories: ['<string>'],
countries: ['<string>'],
employees_max: 1,
employees_min: 1,
financing_types: ['<string>'],
found_at_from: '2023-12-25',
found_at_until: '2023-12-25',
founded_year_max: 2000,
founded_year_min: 2000,
industries: ['<string>'],
job_locations: ['<string>'],
job_titles: ['<string>'],
revenue_max: 1,
revenue_min: 1,
tags: ['<string>'],
technology: '<string>'
}
})
};
fetch('https://api.getoneprofile.ai/find-signals/preview/', 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.getoneprofile.ai/find-signals/preview/",
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([
'query' => [
'categories' => [
'<string>'
],
'countries' => [
'<string>'
],
'employees_max' => 1,
'employees_min' => 1,
'financing_types' => [
'<string>'
],
'found_at_from' => '2023-12-25',
'found_at_until' => '2023-12-25',
'founded_year_max' => 2000,
'founded_year_min' => 2000,
'industries' => [
'<string>'
],
'job_locations' => [
'<string>'
],
'job_titles' => [
'<string>'
],
'revenue_max' => 1,
'revenue_min' => 1,
'tags' => [
'<string>'
],
'technology' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-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.getoneprofile.ai/find-signals/preview/"
payload := strings.NewReader("{\n \"query\": {\n \"categories\": [\n \"<string>\"\n ],\n \"countries\": [\n \"<string>\"\n ],\n \"employees_max\": 1,\n \"employees_min\": 1,\n \"financing_types\": [\n \"<string>\"\n ],\n \"found_at_from\": \"2023-12-25\",\n \"found_at_until\": \"2023-12-25\",\n \"founded_year_max\": 2000,\n \"founded_year_min\": 2000,\n \"industries\": [\n \"<string>\"\n ],\n \"job_locations\": [\n \"<string>\"\n ],\n \"job_titles\": [\n \"<string>\"\n ],\n \"revenue_max\": 1,\n \"revenue_min\": 1,\n \"tags\": [\n \"<string>\"\n ],\n \"technology\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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.getoneprofile.ai/find-signals/preview/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"query\": {\n \"categories\": [\n \"<string>\"\n ],\n \"countries\": [\n \"<string>\"\n ],\n \"employees_max\": 1,\n \"employees_min\": 1,\n \"financing_types\": [\n \"<string>\"\n ],\n \"found_at_from\": \"2023-12-25\",\n \"found_at_until\": \"2023-12-25\",\n \"founded_year_max\": 2000,\n \"founded_year_min\": 2000,\n \"industries\": [\n \"<string>\"\n ],\n \"job_locations\": [\n \"<string>\"\n ],\n \"job_titles\": [\n \"<string>\"\n ],\n \"revenue_max\": 1,\n \"revenue_min\": 1,\n \"tags\": [\n \"<string>\"\n ],\n \"technology\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/find-signals/preview/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": {\n \"categories\": [\n \"<string>\"\n ],\n \"countries\": [\n \"<string>\"\n ],\n \"employees_max\": 1,\n \"employees_min\": 1,\n \"financing_types\": [\n \"<string>\"\n ],\n \"found_at_from\": \"2023-12-25\",\n \"found_at_until\": \"2023-12-25\",\n \"founded_year_max\": 2000,\n \"founded_year_min\": 2000,\n \"industries\": [\n \"<string>\"\n ],\n \"job_locations\": [\n \"<string>\"\n ],\n \"job_titles\": [\n \"<string>\"\n ],\n \"revenue_max\": 1,\n \"revenue_min\": 1,\n \"tags\": [\n \"<string>\"\n ],\n \"technology\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"records": [
{}
],
"signal_type": "hiring",
"technology": {
"id": "<string>",
"name": "<string>"
},
"total": 123
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Body
Preview a signal search.
Which buying signal a search is looking for.
Each member names one discovery question the provider can answer, and each maps to exactly one upstream endpoint. The last two are firmographic rather than event-shaped — they find companies by what they ARE rather than by what they DID — and are kept in the same enum because they land the same company rows through the same machinery.
hiring, news, technology, portfolio_companies, financing, products, firmographics, extended_firmographics Every filter any signal type can take.
ONE schema for all eight types, mirroring the domain's single query dataclass. Which of these a given signal type actually accepts is decided by the domain's per-type allow-list, and a filter the type cannot use is REJECTED with a 422 naming it — never quietly dropped.
An empty query is valid here. Discovery is bounded by the row cap rather than by the filters, so "the companies that most recently raised" is a legitimate search.
Show child attributes
Show child attributes
Response
Successful Response
The first page of a signal search.
Sample company rows, in the shape they would land in a table.
Which buying signal a search is looking for.
Each member names one discovery question the provider can answer, and each maps to exactly one upstream endpoint. The last two are firmographic rather than event-shaped — they find companies by what they ARE rather than by what they DID — and are kept in the same enum because they land the same company rows through the same machinery.
hiring, news, technology, portfolio_companies, financing, products, firmographics, extended_firmographics The provider's own entry for the technology that was searched.
Show child attributes
Show child attributes
How many companies match in total, when the provider reports it. Null for every event-shaped signal: there is no count endpoint, so null means UNKNOWN rather than zero.
Was this page helpful?