Quickstart
Make your first request to the Pulse public API
This guide walks through your first request to the Pulse public API: screening companies by market cap.
Prerequisites
You'll need an organization API key. If you don't have one, ask an admin on
your Pulse organization to create one from Settings → API Keys — see
Authentication for the full flow. Every
request below assumes you have a valid key in the pulse_... placeholder.
Search companies
POST /v1/companies/search/ screens companies against a set of filters and
returns matching rows. A search request takes filters, logic, and
columns — see Filters for the full shape of each.
For a first request, let's screen for companies with a market cap of at
least $100M, using a single gte (greater-than-or-equal) filter on
market_cap_in_usd:
{
"filters": [
{ "field": "market_cap_in_usd", "operator": "gte", "value": 100000000 }
]
}Note the trailing slash on /v1/companies/search/ — it's required on
every endpoint (see Endpoints); keep it when you
adapt these examples.
curl
curl https://api.pulseintelligence.com/v1/companies/search/ \
-H "Authorization: Bearer pulse_a1b2c3d4_<secret>" \
-H "Content-Type: application/json" \
-d '{
"filters": [
{ "field": "market_cap_in_usd", "operator": "gte", "value": 100000000 }
]
}'Python
import requests
response = requests.post(
"https://api.pulseintelligence.com/v1/companies/search/",
headers={"Authorization": "Bearer pulse_a1b2c3d4_<secret>"},
json={
"filters": [
{"field": "market_cap_in_usd", "operator": "gte", "value": 100000000},
],
},
)
response.raise_for_status()
data = response.json()Read the response
The response is a flat object with the matching rows and the page window that produced them:
{
"results": [
{
"id": 1,
"name": "Example Mining Corp",
"symbol": "EXM",
"market_cap_in_usd": 245000000
}
],
"count": 1,
"truncated": false,
"limit": 25,
"offset": 0
}results— the matching rows, shaped by whatevercolumnsyou requested (or the default set if you didn't request any).name,symbol, andmarket_cap_in_usdabove are typical company fields.count— how many rows matched in total, across all pages.truncated—trueif more rows matched than this page returns. Advanceoffsetbylimitand repeat the request to fetch the rest.limit/offset— the page window actually used, echoing what you sent (limitdefaults to 25,offsetto 0).
To page through a larger result set, send limit, offset, and an explicit
sort alongside your filters and keep advancing offset while truncated
is true — see Pagination and enumeration for
the full semantics, including why sort matters when you paginate.
Go deeper
- Filters covers the full filter vocabulary,
available operators, combining filters with
logicandexpression, and discovering filterable fields viaGET /v1/filters/{resource}/. - Pagination and enumeration covers
limit/offset/sortand how to walk the full company or asset universe. - Rate limits and errors covers quota
headers,
429responses, and the error envelope shape. - The API Reference has the full request/response schema for this endpoint, plus every other endpoint on the API.