---
title: "Search talent profiles"
method: POST
path: "/api/v1/talent/profiles/search"
tags: ["Talent::Profiles"]
---

# Search talent profiles

`POST /api/v1/talent/profiles/search`

## Request

- Base URL: `https://api.flexiple.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.flexiple.com/api/v1/talent/profiles/search`
- Auth: HTTP bearer

## Request body

- object
  - `filters` object, 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_id` integer, nullable

## Response `200`

Search results

- object
  - `data` TalentProfileSearchResult[], required
    - `id` string, required
    - `first_name` string, nullable, required
    - `last_name` string, nullable, required
    - `profile_type` string, required
    - `deleted` boolean, required
    - `expected_ctc` object
      - `amount` number, required
      - `currency` string, required
      - `display_scale` number, required
      - `display_unit` string, required
      - `formatted_amount` number, required
      - `formatted` string, required
    - `gender` 'male' | 'female' | 'null', nullable, required
    - `unlocked` boolean, required
    - `linkedin_url` string
    - `months_of_experience` integer, nullable, required
    - `notice_period_days` string
    - `current_ctc` object
      - `amount` number, required
      - `currency` string, required
      - `display_scale` number, required
      - `display_unit` string, required
      - `formatted_amount` number, required
      - `formatted` string, required
    - `overridden_fields` string[], required
    - `original_values` object
      - `current_ctc` object, nullable
        - `amount` number, required
        - `currency` string, required
        - `display_scale` number, required
        - `display_unit` string, required
        - `formatted_amount` number, required
        - `formatted` string, required
      - `notice_period_exact` number, nullable
    - `location` Location, required
      - `id` integer, required
      - `osm_id` integer, nullable, required
      - `osm_type` string, nullable, required
      - `city` string, nullable, required
      - `state` string, nullable, required
      - `country` string, nullable, required
      - `country_code` string, nullable, required
      - `formatted` string, required
      - `location_type` 'country' | 'state' | 'city', required
    - `resume_parsing` boolean, required
    - `active` boolean
    - `skills` NewSkill[], required
      - `id` integer, required
      - `name` string, required
      - `label` string, required
    - `resume_pdf_url` string
    - `summary` string
    - `notice_period` object
      - `value` integer, required
      - `label` string, required
    - `notice_period_exact` integer
    - `social_links` object
      - `website` string, required
      - `github` string, required
      - `stackoverflow` string, required
    - `picture_url` string
    - `whatsapp_number` object
      - `number` string, required
      - `country_code` string, required
    - `one_liner` string
    - `signup_source` 'old' | 'resume' | 'linkedin_url' | 'manual' | 'jd_old' | 'jd_resume' | 'jd_linkedin' | 'jd_manual'
    - `github_url` string
    - `website_url` string
    - `relocation_cities` Location[], required
      - `id` integer, required
      - `osm_id` integer, nullable, required
      - `osm_type` string, nullable, required
      - `city` string, nullable, required
      - `state` string, nullable, required
      - `country` string, nullable, required
      - `country_code` string, nullable, required
      - `formatted` string, required
      - `location_type` 'country' | 'state' | 'city', required
    - `current_experience` TalentExperience
      - `id` integer, required
      - `company_name` string, nullable, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `owner_id` string, required
      - `company` NewCompanyWithDetail
        - `id` integer, required
        - `created_at` string, date-time, required
        - `updated_at` string, date-time, required
        - `name` string, required
        - `primary_domain` string, nullable, required
        - `description` string, nullable, required
        - `slug` string, required
        - `website` string, required
        - `logo_url` string
        - `location` Location
          - `id` integer, required
          - `osm_id` integer, nullable, required
          - `osm_type` string, nullable, required
          - `city` string, nullable, required
          - `state` string, nullable, required
          - `country` string, nullable, required
          - `country_code` string, nullable, required
          - `formatted` string, required
          - `location_type` 'country' | 'state' | 'city', required
        - `industries` string[], required
        - `company_types` string[], required
        - `business_models` string[], required
        - `about` string
        - `team_members` object[], required
          - `name` string, required
          - `designation` string, required
          - `linkedin_url` string, nullable
        - `one_liner` string
        - `other_info` string
        - `team_size` string
        - `client_account_id` integer
        - `investors` string[], required
        - `funding_rounds_list` object[], required
          - `date` string, nullable
          - `type` string, nullable
          - `amount` number, nullable
          - `currency` string, nullable
          - `investors` string[], required
      - `positions` TalentPosition[], required
        - `id` integer, required
        - `title` string, nullable, required
        - `start_date` string, date, nullable, required
        - `end_date` string, date, nullable, required
        - `description` string, nullable, required
        - `employment_type` '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' | 'null', nullable, required
        - `created_at` string, date-time, required
        - `updated_at` string, date-time, required
        - `funding_stages` string[], required
        - `skills` NewSkill[], required
          - `id` integer, required
          - `name` string, required
          - `label` string, required
    - `professions` Profession[], required
      - `id` integer, required
      - `name` string, nullable, required
    - `not_looking_for_job_on` string
    - `looking_for_job` boolean, required
    - `communication_preferences` object, required
      - `email` boolean, required
      - `whatsapp` boolean, required
      - `ai_calling` boolean, required
    - `last_active_at` string
    - `evaluation_log` FilterMatchResult[], required
      - `field` string, required
      - `operator` string, required
      - `expected` union
        - string
        - number
        - boolean
        - union[]
          - union
            - string
            - number
        - object
          - `from` number, nullable
          - `to` number, nullable
        - object
          - `value` union, required
            - string
            - number
            - boolean
            - union[]
              - …
      - `actual` union
        - string
        - number
        - boolean
        - union[]
          - union
            - string
            - number
        - object
          - `from` number, nullable
          - `to` number, nullable
        - object
          - `value` union, required
            - string
            - number
            - boolean
            - union[]
              - …
      - `matched` boolean, nullable, required
    - `in_job_pipeline` boolean
    - `job_application_id` integer, nullable
    - `job_application_status` 'agent_pick' | 'applicant' | 'screening' | 'interview' | 'hired' | 'rejected' | 'null', nullable
  - `meta` SearchMeta, nullable
    - `total_count` integer
    - `count` integer
    - `has_more` boolean
    - `page` integer
    - `per_page` integer
    - `total_pages` integer
    - `took_ms` integer

## Other responses

- `401`: Authentication failed

---

[API](https://skmtc.dev/flexiple/apis/flexiple-platform-api-v1.md) - [All operations](https://skmtc.dev/flexiple/apis/flexiple-platform-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/flexiple/apis/flexiple-platform-api-v1/revisions/27e7987859f2?raw)
