AI Search
Text to Filters
Convert natural language queries into structured filters
POST
Convert a natural language query into structured filters that can be used with
The response contains
/search/people or /search/companies endpoints.
Credit Cost
| Action | Credits |
|---|---|
| Filter generation | 1 credit |
Request Body
Natural language search query (minimum 3 characters).Examples:
"développeurs Python à Paris""CEOs of fintech startups in London""50 data scientists with 5+ years experience"
Category to generate filters for:
"people" or "company".Use case for lookalike search. Only applies when the query contains a LinkedIn profile URL (e.g.,
linkedin.com/in/...), which is automatically detected."sales"— Generate filters similar from a sales/prospecting perspective"recruiter"— Generate filters similar from a recruiting perspective
When
true, runs a count on the generated filters and returns total_results — the number of matching records. The count is capped at 10,000.The query from a previous call, for incremental refinement. Provide it together with
previous_filters: the model re-extracts the full filter set anchored on what was already detected, so the output stays stable when the user edits their query. Filters whose intent is unchanged are kept identical; filters the new query no longer mentions are dropped.The
simple_filters object returned by the previous call. Required alongside previous_query for incremental refinement.Response
The category for the filters (
"people" or "company").Structured filters in FilterGroup format, directly usable with
/search/people or /search/companies.Count detected in the query if specified (e.g.,
"50 devs" → 50), otherwise null.The flat key/value filters detected by the model, before expansion into the nested FilterGroup. Pass this object back as
previous_filters on the next call to enable incremental refinement.Number of matching records. Populated only when
with_total is true. Capped at 10,000.true when total_results reached the 10,000 cap — the real count is higher (display it as “10,000+”).true when the filters were served from cache (no LLM call was made for this request).Incremental refinement
When a user edits a query, pass the previous call’squery and simple_filters back as previous_query and previous_filters. The model refines the existing filters instead of recomputing from scratch — keeping unchanged criteria stable and only applying the delta. Both parameters must be provided together.
One-shot search
POST /search/llm takes the same query, category and lookalike_use_case parameters but runs the search immediately and returns results in a single call — no separate /search/people request needed.
Two extra parameters:
Number of results to return. Maximum: 100.
Whether to enrich results with live data.
true— Returns fresh, up-to-date data (1.5 credits per result)false— Returns cached data (0.75 credits per result)
query_interpretation (how the AI read your query, including the advanced_filters it applied), total, count and results — profiles or companies in the same structure as /search/people / /search/companies.
Pagination is not available on this endpoint. To paginate, reuse
query_interpretation.advanced_filters with /search/people or /search/companies and set an offset. For multi-turn refinement and clarifying questions, use Reasoning Search instead.Examples
People filters
People filters
Lookalike filters
Lookalike filters
Company filters with count
Company filters with count
With result count
With result count

