Introduction
What the Pulse Intelligence public API is and how to use it
The Pulse Intelligence public API gives your organization programmatic, read-only access to the same mining and commodity intelligence data that powers the Pulse platform — companies, mining assets, publications, and people, plus per-entity production, reserves, economic-assessment, drill-result, and ownership datasets — along with the filter and lookup endpoints you need to build screens and integrations against that data. It's a thin, purpose-built projection over the same audited service layer that Pulse's own chat and MCP surfaces call, so an endpoint documented here returns the same underlying data you'd see in the product.
Base URL
Every endpoint below is mounted directly under the API root — there's no
/api prefix on the public surface:
https://api.pulseintelligence.com/v1/Endpoints
The trailing slash on each path is required — a request without it doesn't redirect, it 404s.
Search and dossiers
| Method | Endpoint | Purpose |
|---|---|---|
POST | /v1/companies/search/ | Screen companies by commodity, geography, listing, market cap, and more. |
GET | /v1/companies/{id}/dossier/ | Full picture for a single company — overview, financials, recent news, related assets. |
POST | /v1/mining-assets/search/ | Screen mining assets by stage, phase, commodity, geography, and more. |
GET | /v1/mining-assets/{id}/dossier/ | Full picture for a single mining asset. |
POST | /v1/publications/search/ | Search company and asset publications (filings, releases, reports). |
POST | /v1/people/search/ | Search people associated with tracked companies. |
The company and mining-asset searches accept limit/offset/sort and can
enumerate their whole universe with an empty filter list — see
Pagination and enumeration.
Reserve dossier rows
Reserve rows in overview.company_reserves and overview.mining_asset_reserves always have five top-level tier keys:
reserves, resources, measured_indicated, inferred, and total_inventory.
Absent tiers are null; present tiers keep all fields, with unavailable individual values null.
For example, this excerpt shows a tungsten reserve:
{
"canonical_species": "W",
"is_grade_species_stated": true,
"reserves": {
"label": "20.3 kt WO₃",
"grade_label": "11.8 Mt @ 0.17 % WO₃",
"contained_kg": 20275000,
"contained_species": "WO₃",
"contained_canonical_kg": 16078075,
"ore_t": 11800000,
"grade": 0.171,
"grade_unit": "%",
"grade_species": "WO₃"
},
"resources": null,
"measured_indicated": null,
"inferred": null,
"total_inventory": null
}contained_kg is the exact mass in contained_species;
contained_canonical_kg is the comparable mass in the row's canonical_species for metrics and SQL comparisons.
ore_t is metric tonnes of rock and is null for contained-metal-basis reports or non-tonnage source units such as mtu.
grade uses its own grade_unit and grade_species: lithium can have LCE contained mass and Li₂O grade.
Row-level is_grade_species_stated records whether the source named grade chemistry; it does not assert that the source used the normalized spelling.
Company quantities are attributable and asset quantities are 100%.
Compute from numbers and quote backend labels; no client species conversion or label parsing is needed.
Dates, ownership, reporting standard and citation are shared once per row.
Total inventory carries the same fields with ore and grade null and follows the existing resource-inclusivity rules.
Dataset sub-resources
Structured per-entity datasets, served row-by-row rather than as a dossier summary — see Dataset sub-resources for the semantics each one carries.
| Method | Endpoint | Purpose |
|---|---|---|
GET | /v1/companies/{id}/production/ | A company's production summary rows, newest first. |
GET | /v1/companies/{id}/reserves/ | A company's reserves & resources summary rows. |
GET | /v1/companies/{id}/mining-assets/ | The company's asset ownership relations, historical included. |
GET | /v1/mining-assets/{id}/production/ | An asset's production summary rows. |
GET | /v1/mining-assets/{id}/reserves/ | An asset's reserves & resources summary rows. |
GET | /v1/mining-assets/{id}/economic-assessments/ | An asset's economic study scenarios with price, cost, and NPV detail. |
GET | /v1/mining-assets/{id}/drill-results/ | An asset's drill-result disclosures with holes and intercepts (paginated). |
GET | /v1/mining-assets/{id}/companies/ | The asset's company ownership relations, historical included. |
Lookup and detail
| Method | Endpoint | Purpose |
|---|---|---|
GET | /v1/companies/lookup/ | Resolve a ticker symbol to a company — unique match or a candidate list. |
GET | /v1/publications/{id}/ | A single publication's metadata, AI content, and asset relations. |
GET | /v1/people/{id}/ | A single person's business profile. |
Reference and discovery
| Method | Endpoint | Purpose |
|---|---|---|
GET | /v1/commodities/ | The full commodity registry — units, display species, conversion factors, spot snapshot. |
GET | /v1/filters/{resource}/ | List the filterable fields and columns available for a resource. |
GET | /v1/options/{path}/ | Resolve valid option values for a select-type filter field. |
Access
The public API is available to Pulse organization customers. Access is
granted through organization API keys, created by an org admin from the
Pulse product UI — see Authentication for how
to create a key and use it on requests. A key authenticates your
organization as a whole, not an individual user, and only works against the
/v1/ endpoints listed above.
Versioning and stability
This is v1 of the public API.
Within v1, request and response contracts are frozen: endpoints, field names, and shapes documented here won't change or disappear out from under you.
New fields and endpoints may be added over time, and additions like that are non-breaking.
A future v2, if one is ever needed, would be introduced as a new version rather than by changing v1 in place.
Reserve dossier migration (2026-09-18): the tier shape is an additive migration.
The planned legacy-field retirement is scoped to this reserve-dossier migration; it does not change other frozen v1 contracts.
The nine legacy *_quantity_label, *_grade_label, and total_inventory_label fields and five *_figures blocks remain available with their original nested fields, units, and null behavior.
New integrations should read the five tier objects described above.
Legacy fields are deprecated; removal will follow confirmed client migration and a separate changelog announcement, with a target migration window of 60 days after deployment.
No format parameter is required.
The reserves dataset sub-resources retain their separate row contract.