Talent::Profiles

Survey the candidate pool for a filter tree

Answers "who is in the pool?" in one call: how many profiles match, the attrition funnel per top-level condition, and a sample of ten of them. Each funnel entry carries count, how many would match with that condition dropped (the one to relax is the entry furthest above the total), and cumulative, how many match the conditions up to and including it in order (read this when every count is zero: the first zero is where the pool died). The count is the whole pool; the sample is ten examples from it, so never count the sample to answer "how many". Page through the sample with page. When only the count matters, send sample: false. Two trees are refused before they are counted: a condition whose value carries no ids, groups or keywords (resolve the names first), and the availability filter by itself (that is everyone). On an intake run, the first count also refuses skills all_of: the first tree carries skills as any_of, all_of is a later tightening.

post/api/v1/talent/profiles/pool

Request

  • Base URL
    https://api.flexiple.com (the document declares no server; this is the origin it was published from)
  • Auth
    HTTP bearer

Request body

filtersobject required

A filter tree. A leaf is {"field": F, "operator": O, "value": V}. Groups are {"and": [...]} or {"or": [...]} and may nest; a single leaf on its own is also valid. Every criterion is a requirement — there is no "nice to have", so put anything optional in an "or" or leave it out.

Example: {"and": [{"field": "skills", "operator": "any_of", "value": [12, 44]}, {"field": "months_of_experience", "operator": "gte", "value": 5}]}

Fields, grouped by the operators they accept:

any_of, all_of, none_of, exists spoken_languages (Spoken Languages), employment_types (Employment Types), profession (Profession), designations (Designations), relocation_places (Relocation Places), all_locations (All Locations), skills (Skills), experience_in_skill (Experience in Skill), companies (Company), company_types (Company Type), company_business_models (Business Type), company_industries (Industry), company_funding_stages (Funding Stage), company_sizes (Company Sizes), education_degrees (Education Degree), education_fields (Education Field), colleges (Colleges)

eq, neq, gt, gte, lt, lte, between, exists current_ctc (Current CTC, in LPA), expected_ctc (Expected CTC, in LPA), resume_completeness (Resume Completeness), months_of_experience (Experience, in years), experience_in_current_position (Experience in Current Position, in years), experience_in_current_company (Experience in Current Company, in years), average_experience (Average Experience per Company, in years), maximum_experience (Maximum Experience in a Company, in years), year_of_graduation (Year of Graduation)

eq, neq, in, not_in, exists gender (Gender), notice_period (Notice Period)

eq is_active (Active), looking_for_job (Open to work)

matches keywords (Keywords)

any_of, none_of, exists current_location (Current Location)

Most fields take their value directly. These take an object instead, one key per input:

spoken_languages: {"value": [id, ...], "min_proficiency": 0 (Elementary)|1 (Limited Working)|2 (Professional Working)|3 (Full Professional)|4 (Native Or Bilingual)} current_ctc, expected_ctc: {"value": number, "currency": "INR"|"USD"} designations, companies: {"value": [id, ...], "scope": "current_or_past"|"current"|"past"} experience_in_skill: {"value": [id, ...], "scope": ["0_1"|"1_3"|"3_5"|"5_7"|"7_plus", ...]}

With "between", "min" and "max" replace "value" — {"min": 5, "max": 8}, and inside the object above where the field has one: {"min": 25, "max": 40, "currency": "INR"}.

Some id fields also take groups — one id standing for a set the recruiter's dropdowns offer as a single row: a metro area for locations, an institution family for colleges, a discipline for skills and designations, a kind of employer for companies (IT services and outsourcing firms, fintechs). The lookup returns them in their own "groups" list, apart from the plain rows. Put a group's id under "groups" in the field's value object — {"value": [ids...], "groups": [group ids...]} where the field takes a plain list, an extra key where it already takes an object; "value" may be empty — and never list its members yourself. Prefer a group whenever the brief means the whole of what it names: a city and its suburbs, an IIT-type family, every title in a discipline. Fields that take groups: designations, current_location, relocation_places, all_locations, skills, companies, colleges.

Fields with a fixed set of values. Send the value, never the label in brackets: gender: "male"|"female" notice_period: "immediately_available"|"1_to_15_days"|"16_to_30_days"|"31_to_45_days"|"46_to_60_days"|"61_to_90_days"|"more_than_90_days" employment_types: "Full-time"|"Part-time"|"Self-employed"|"Freelance"|"Internship"|"Trainee"|"Apprenticeship"|"Contract"|"Temporary Staff"|"Contract Full-time"|"Contract Part-time"|"Permanent Full-time"|"Permanent Part-time"|"Seasonal"|"Casual / On-call"|"Co-op"|"Permanent"|"Indirect Contract"|"On-Call" company_sizes: "self_employed"|"2-10"|"11-50"|"51-200"|"201-500"|"501-1000"|"1001-5000"|"5001-10,000"|"10,000+"

Values for fields that hold ids come from the lookup endpoint for this resource (names in, ranked ids out). It resolves: skills, designations, colleges, education_degrees, education_fields, current_location, companies, profession, company_types, company_business_models, company_industries, company_funding_stages. Never invent an id, and never pass a name where an id is wanted. An id field the lookup does not resolve cannot be filled through this API — leave it out.

job_post_idinteger nullable
sampleboolean nullable

Default true. Send false when only the count and funnel matter — pricing a filter change, checking whether a pool is thin — and no profiles come back: sample is [] and the answer is a fraction of the size. Send true (or omit it) only when you need to see who is in the pool.

titlestring

On an intake turn, send this with the first count: the job title the role is advertised under (e.g. "Senior Backend Engineer"), at most six words, with no place or other filter in it. The search and the draft job take it as soon as the first tree lands, so nothing reads "Drafting…" while the filters are refined. Ignored on any other call.

facetsstring[]

The titles (designations) or skills the people in the counted pool hold, top 20 by how many hold each, as ids with labels. To find title variants, count the tree without the designations condition, ask for designations, and add the ones in the same discipline as the role.

Response

Pool size, attrition funnel, and a sample

Changes

No recorded changes to this operation across all 1 revision of this API.