---
title: "List the people on a job, optionally filtered by pipeline stage"
method: POST
path: "/api/v1/job/applications/search"
tags: ["Job::Applications"]
---

# List the people on a job, optionally filtered by pipeline stage

`POST /api/v1/job/applications/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/job/applications/search`
- Auth: HTTP bearer

## Request body

- object
  - `post_id` integer, required
  - `filters` object, nullable: 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 tags (Tags), saved_searches (Saved Searches), 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 created_at (Created At), shortlisted_at (Shortlisted on), interview_date (Interview Date), hired_date (Hired Date), rejected_date (Rejected Date), 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 outreach_responded (Outreach replied), shortlisted (Shortlisted), with_resume (Has Resume), has_tasks (Has Tasks), in_automation (In Automation), is_active (Active), looking_for_job (Open to work) eq, neq, in, not_in, exists source (Source), shortlisted_by_id (Shortlisted by), rejected_from (Rejected From), gender (Gender), notice_period (Notice Period) eq, neq, ilike, not_ilike, exists first_name (First Name), last_name (Last Name), email (Email), phone (Phone), linkedin_id (LinkedIn ID) eq, neq, in, not_in questions_answered (Questions Answered), interview_round_status (Interview Round Status), reply_status (Reply Status), fit_level (AI Fit Level) any_of, none_of, exists interview_round (Interview Round), current_location (Current Location) eq, in, not_in is_interested (Interested) eq, exists contact_revealed (Contact Revealed) ilike, not_ilike, exists comments (Comments) eq, in application_id (Application ID) eq, neq, in, not_in, ilike, not_ilike rejection_reason (Rejection Reason) gte, lte ai_fit_score (AI Fit Score) matches keywords (Keywords) 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: is_interested: "interested"|"not_interested"|"not_asked" (Not asked yet) questions_answered: "none"|"some"|"all" interview_round_status: "to_be_scheduled"|"scheduled"|"awaiting_feedback"|"completed"|"rejected"|"on_hold" rejected_from: "screening"|"interview"|"hired" rejection_reason: "unfit"|"not_interested_this_job"|"broad_no" fit_level: "strong"|"partial"|"weak"|"not_evaluated" 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 — skills, companies, colleges, locations, designations and the like — must come from the filter options endpoint for this resource. Never invent an id, and never pass a name where an id is wanted.
  - `stage` 'screening' | 'review' | 'applicants' | 'interview' | 'hired' | 'rejected', nullable
  - `sort` 'ai_score' | 'newest', nullable
  - `timezone` string, nullable
  - `matches_search` string, nullable
  - `source` 'sourcing_agent' | 'job_application', nullable
  - `count_only` boolean, nullable

## Response `200`

Search results

- object
  - `data` JobApplicationWithClient[], required
    - `id` integer, required
    - `job_post_id` integer, required
    - `source` 'job_application' | 'shortlist' | 'auto_recommendation' | 'public_network' | 'sourcing_agent', required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `talent_profile_id` string, required
    - `state` 'screening' | 'interview' | 'hired' | 'rejected', required
    - `human_state` string, required
    - `state_description` string
    - `is_interested` boolean, nullable, required
    - `stage` 'review' | 'screening' | 'interview' | 'hired' | 'rejected' | 'null', nullable, required
    - `rejection_origin` 'auto_score' | 'candidate_declined' | 'manual' | 'fit_rubric' | 'agent_dismissed' | 'null', nullable, required
    - `rejected_at` string
    - `interview_rounds` JobApplicationInterviewRound[], required
      - `id` integer, required
      - `job_application_id` integer, nullable, required
      - `job_post_interview_round_id` integer, nullable, required
      - `scheduled_at` string, date-time, nullable, required
      - `meeting_url` string, nullable, required
      - `interviewers` string[], nullable, required
      - `status` 'to_be_scheduled' | 'scheduled' | 'awaiting_feedback' | 'completed' | 'rejected' | 'on_hold' | 'null', nullable, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `feedback` string, nullable
      - `job_post_interview_round` JobPostInterviewRound, required
        - `id` integer, required
        - `job_post_id` integer, nullable, required
        - `name` string, required
        - `order` integer, required
        - `duration` integer, required
        - `round_type` 'assignment' | 'automated_coding' | 'founder_interview' | 'culture_fit' | 'profile_shortlisting' | 'tech_interview', required
        - `created_at` string, date-time, required
        - `updated_at` string, date-time, required
        - `poc` 'hr' | 'tech_team' | 'founder'
        - `agenda` string
    - `ai_eval` object
      - `score` number, required
      - `metric_scores` object[], required
        - `name` string, required
        - `score` number, required
        - `reasoning` string, required
      - `failed_mandatory` string[]
      - `rubric_version` number, nullable
      - `model` string, required
      - `evaluated_at` string, required
    - `questions_answered` 'none' | 'some' | 'all', required
    - `talent_profile` TalentProfileWithContact, 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
      - `contact_lookup` 'looking' | 'done' | 'null', nullable, required
      - `phone_numbers` string[]
      - `client_contacts` string[], required
      - `emails` string[]
    - `current_role` object, nullable, required
      - `title` string, nullable
      - `company_name` string, nullable
      - `logo_url` string, nullable
    - `applied_via_client_link` boolean
    - `outreach_summary` AutomationOutreachSummary, required
      - `id` integer, required
      - `automation_flow_id` integer, required
      - `responded` boolean, required
      - `responded_channel` 'email' | 'whatsapp' | 'ai_call' | 'linkedin' | 'null', nullable, required
      - `stop_reason` string, nullable, required
      - `current_step_id` integer, nullable, required
      - `automation_flow_name` string, nullable, required
      - `current_step_name` string, nullable, required
      - `current_step_type` string, nullable, required
      - `status` 'queued' | 'running' | 'completed' | 'failed' | 'stopped', required
      - `created_at` string, required
      - `queued_at` string, nullable, required
      - `started_at` string, nullable, required
      - `ended_at` string, nullable, required
      - `responded_at` string, nullable, required
    - `outreach_summary_version` string, required
    - `comments` string
    - `tags` JobTag[], required
      - `label` string, required
      - `value` number, required
    - `automation_flow_executions` AutomationFlowExecution[], required
      - `id` integer, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `queued_at` string, date-time, nullable, required
      - `started_at` string, date-time, nullable, required
      - `ended_at` string, date-time, nullable, required
      - `status` 'running' | 'completed' | 'failed' | 'cancelled' | 'stopped' | 'queued', required
      - `current_step_id` integer, nullable, required
      - `automation_flow_id` integer, required
      - `automation_flow_name` string, nullable, required
      - `job_application_id` integer, required
      - `responded` boolean, required
      - `stop_reason` string, nullable, required
      - `meaningful_step_completed` boolean, required
      - `candidate_name` string, nullable, required
      - `current_step_name` string, nullable, required
      - `current_step_type` string, nullable, required
      - `startup_last_error` string, nullable, required
    - `saved_searches` object[], required
      - `id` number, required
      - `title` string, required
    - `tasks_count` number, required
    - `closed_tasks_count` number, required
    - `in_review_tasks_count` number, required
    - `custom_columns` object, required
    - `rejected_from_state` string
    - `rejection_reason_bucket` 'unfit' | 'not_interested_this_job' | 'broad_no' | 'null', nullable, required
    - `reason_for_rejection` string
    - `hired_at` string
    - `shortlisted_at` string
    - `shortlisted_by_id` integer, nullable, required
  - `meta` object, nullable
    - `total_count` integer
    - `total_pages` integer
    - `next_page` integer, nullable
    - `prev_page` integer, nullable
    - `current_page` integer
    - `page_size` integer
    - `outreach_replied_count` integer, required

## 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)
