Skip to main content
POST
Start a lead search

Authorizations

Authorization
string
header
required

A ManyPI API key (mpi_...) from the profile menu → API Access in the dashboard, or an OAuth 2.1 access token obtained through the MCP consent flow.

Body

application/json
criteria
object

The structured search. The description does most of the work; the rest is what the agent enforces.

profile_id
string<uuid>

Re-run a saved search. Its criteria are used when criteria is omitted; when criteria is sent, it replaces them entirely.

seed_lead_ids
string<uuid>[]

Seed the search from existing leads ("find similar").

Maximum array length: 50
save
boolean
default:true

Persist the criteria as a reusable saved search. With profile_id, writes them back to that saved search.

name
string
Maximum string length: 120
kind
enum<string>
Available options:
icp,
similar
check_intent
boolean
default:true

Check that a free-text-only request reads as a lead search, and start a plain agent run when it does not. Send false when your integration only ever sends lead searches.

Search even when the description names leads the workspace already has.

Response

A run was created — or, when known is present instead of run_id, the workspace already holds the leads the description names and no run was started.

run_id
string<uuid>

Absent when the response carries known.

conversation_id
string<uuid>
status
string
count
integer

Leads the run will actually try to save, after clamping.

profile
object | null
clamped
object

Present only when count was reduced to fit the plan.

redirected
boolean

Present and true when the request did not read as a lead search and a plain agent run was started instead. See check_intent.

known
object

Present instead of run_id when the description names leads the workspace already has. Holds those leads; no run was started. See force_search.

description
string

The description that was matched, returned alongside known.