List API
Your lists, their companies and what changed on them, read with a scoped bearer key. The same rows as the token feeds, and what each route costs.
Four routes over your own lists, on a bearer key holding markets:read. A list is built from a description, imported, or made of the companies you follow. The routes keep the name markets for all three. Building a list, importing companies and turning on monitoring stay in the browser.
curl -s -H 'Authorization: Bearer pxk_…' 'https://prospex.ch/api/v1/markets'
curl -s -H 'Authorization: Bearer pxk_…' 'https://prospex.ch/api/v1/markets/41'
curl -s -H 'Authorization: Bearer pxk_…' \
'https://prospex.ch/api/v1/markets/41/companies?bucket=core&band=strong,good'
curl -s -H 'Authorization: Bearer pxk_…' \
'https://prospex.ch/api/v1/markets/41/signals?since=2026-08-01'
A key holding watches:read, from before watches became monitoring on a list, reads these routes too.
What each route costs
| Route | What it costs |
|---|---|
| GET /api/v1/markets | Your lists, with their origin, state, Core count and monitoring. Costs no rows. |
| GET /api/v1/markets/<id> | One list. For a built list, also its definition and the queries the build ran. Costs no rows. |
| GET /api/v1/markets/<id>/companies | One page of the list's companies. One row of the budget per company. |
| GET /api/v1/markets/<id>/signals | What changed on the list's companies, newest first. One row of the budget per company the signals are about. |
The two metadata routes spend nothing. Reading companies costs a row per company, and reading signals a row per company they are about.
Another account's list answers 404.
A list
| Field | Type | Meaning |
|---|---|---|
| origin | string | built (a list built from a description), imported, or follows (the companies you follow). |
| state | string | ready once the list can be read. A built list also passes through building and refreshing. |
| core_count | integer | How many companies are in the list's Core. |
| definition | string|null | The description a built list was made from. Null on an imported or followed list. |
| queries | array|null | Detail route only. The searches the build ran, your own words first. Null on an imported or followed list. |
| monitoring | object|null | Null when monitoring is off. Otherwise since, paused, topics, instant_topics, instant_enabled and new_signals, the signals on the list's topics since monitoring started. |
An imported or followed list holds all its companies in Core, so bucket=explore reads empty on it.
Resolved paths
| Name | Path |
|---|---|
| market_index | /api/v1/markets |
| market_detail | /api/v1/markets/<str:market_id> |
| market_companies | /api/v1/markets/<str:market_id>/companies |
| market_signals | /api/v1/markets/<str:market_id>/signals |
Company parameters
| Parameter | Meaning |
|---|---|
| bucket | core (the default) or explore. The token feed calls this tab; both are published and neither is being renamed. |
| band | strong, good, possible or weak, repeated or comma-separated. Narrows what this page shows within the ranking. |
| limit | Rows per page, up to 100. |
| cursor | Opaque, and carrying the build it was issued under. |
A parameter this route does not accept answers 400 unknown_parameter. That includes tab, which is the token feed's name for bucket.
Signal parameters
| Parameter | Meaning |
|---|---|
| since | ISO date or datetime. Only signals recorded after it. |
| type | Topic keys, repeated or comma-separated. Narrows within the list's own topics. |
| limit | Rows per page, up to 100. |
| cursor | Opaque. Follow next_url instead of building one. |
Signals are newest first, from the companies in the list's Core, on the list's topics. The route answers whether monitoring is on or not. The cursor is keyset-based, so a signal recorded between two requests is never skipped.
A signal row is a signal-feed row, field for field, so the signal feed page has the field table.
Topics
| Key | What it covers |
|---|---|
| company_structure | Company structure |
| leadership | Leadership and teams |
| products_positioning | Products and positioning |
| growth_finance | Growth and finance |
| company_news | Company news |
A company row
A row here is identical to a row from the list's token feed. The list feed page has the field table.
Each row carries up to 3 recent events on the company, so a workflow that has just been told "this company fits, and here is why" also knows what kind of week the company is having.
Fit is a word
| Band | What it claims |
|---|---|
| strong | Answers your definition at least as well as the customers you called ideal. |
| good | A clear match on your definition, below the anchored cut. |
| possible | Worth a look. Partial match on your definition. |
| weak | Ranked below both buckets. |
No route carries a numerical score. The underlying number varies by query and by pool, so it is not comparable across lists. Use the band word.
Pagination
Follow next_url. It is absolute, carries every parameter you sent, and carries no credential.
The cursor carries the build it was issued under. A list's order changes only when a build refreshes it, so a cursor from an older build answers 400 invalid_parameter. Start again without a cursor.
Maximum page size 100. version is 1, the same contract the token feed publishes.