GET /search/candidates is the primary v1 endpoint. It searches Cutshort’s talent database and returns 10 hits per page with triage data — no identity or contact fields.
Response fields
Each hit includes:
Use
profileSignals and redactedResumeText together to judge fit without contact details. When you want email, phone, or the resume file, call Get candidate details — it auto-unlocks the candidate (one credit).
AI / NLP search
At least one search filter is required (q, inresume, location/experience/salary, profile attributes, or activity). Bare pagination-only requests are rejected with 400 search_criteria_required.
Add q (up to 20,000 characters; inputs above 50,000 are rejected) for semantic ranking:
q with a role-summary prompt, embeds it, and runs kNN search. Short phrases like python developer work. Combine q with structured filters — filters narrow the pool, q ranks within it.
Response includes searchType: "ai" when q is present, otherwise "structured".
Skill search — use inresume
Skill requirements are expressed with inresume — a Lucene boolean query over the full resume text. It catches every mention (tagged skills, job descriptions, projects), so recall is much higher than tag-based filtering. There is no separate skills parameter.
Good inresume examples
- Use uppercase
AND/OR/NOT - Quote phrases:
"machine learning","system design" - Within a group, list synonyms and abbreviations with
OR(ML OR "machine learning") - Keep 2–4 skill groups — more groups reduce recall
- Avoid version suffixes:
python, notpython 3.10 - Do not URL-encode manually; pass the raw expression
Location encoding
Encoding:
- Spaces →
+(e.g.Navi+Mumbai) - Multiple cities → dash-separated (
Mumbai-Pune) - Bangalore →
Bengaluru+%28Bangalore%29
Experience and salary
Always pass both bounds when filtering experience:
If only one experience bound is sent, the API fills the other automatically.
Availability
Profile attribute filters
These filters correspond to fields in
profileSignals on each hit. Dash-separated values within one param are OR’d (e.g. eduPed=tier1plus-tier1 = either tier).
Combining profile attributes: AND vs OR
By default, supplying more than one ofeduPed, startupExp, entrExp, domainTags requires a candidate to match all of them. Add profileAttributesMode=or to match any:
profileAttributesMode=or affects only these four params. All other filters (location, experience, salary, inresume, availability, activity) always stay ANDed.
Pagination
Search discipline
- Run searches sequentially — not in parallel
- Review each page before refining
- Avoid near-identical queries (overlapping results waste quota)
- When exploring multiple angles, use disjoint slices (different experience bands or locations)
