Skip to main content
POST
/
v1
/
persons
/
search
Advanced person search
curl --request POST \
  --url https://api.stardex.ai/v1/persons/search \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "offset": 0,
  "limit": 100,
  "sort_by": "created_at",
  "sort_order": "desc",
  "email": "jsmith@example.com",
  "name": "<string>",
  "phone": "<string>",
  "linkedin_url": "<string>",
  "vector_search": "<string>",
  "include": [
    "work_experience"
  ],
  "keywords": [
    "<string>"
  ],
  "job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "job_ids_included": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "job_ids_excluded": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "filter_out_if_not_in_job": true,
  "exclude_archived_jobs": true,
  "job_titles_included": [
    "<string>"
  ],
  "job_titles_excluded": [
    "<string>"
  ],
  "departments_included": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "departments_excluded": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "current_company_ids": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "current_company_ids_excluded": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "past_company_ids": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "past_company_ids_excluded": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "pipeline_stage_ids_included": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "pipeline_stage_ids_excluded": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "pipeline_stage_history_included": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "pipeline_stage_history_excluded": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "job_page_pipeline_stages_in": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "job_page_pipeline_stages_ex": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "activity_types_included": [
    "<string>"
  ],
  "activity_types_excluded": [
    "<string>"
  ],
  "activity_content_keywords": [
    "<string>"
  ],
  "person_owner_ids_included": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "person_owner_ids_excluded": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "candidate_owner_ids_included": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "candidate_owner_ids_excluded": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "sourced_by_ids": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "sourced_by_include_empty": true,
  "list_ids_included": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "list_ids_excluded": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "hide_client_contacts": true,
  "contact_email_filter": "has_email",
  "engagement_type": "engaged_within",
  "engagement_value": 123,
  "engagement_unit": "days",
  "engagement_start_date": "<string>",
  "engagement_end_date": "<string>",
  "added_to_job_start_date": "<string>",
  "added_to_job_end_date": "<string>",
  "locations_included": [
    {
      "value": "<string>",
      "label": "<string>",
      "lat": 123,
      "lng": 123,
      "bounds": {
        "south": 123,
        "west": 123,
        "north": 123,
        "east": 123
      }
    }
  ],
  "locations_excluded": [
    {
      "value": "<string>",
      "label": "<string>",
      "lat": 123,
      "lng": 123,
      "bounds": {
        "south": 123,
        "west": 123,
        "north": 123,
        "east": 123
      }
    }
  ],
  "select_attribute_filters": [
    {
      "attribute_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "values": [],
      "excluded_values": [],
      "require_all": false,
      "include_empty": false
    }
  ],
  "numeric_attribute_filters": [
    {
      "attribute_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "min": 123,
      "max": 123,
      "include_empty": false
    }
  ],
  "date_attribute_filters": [
    {
      "attribute_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "start_date": "<string>",
      "end_date": "<string>",
      "include_empty": false
    }
  ],
  "team_member_attribute_filters": [
    {
      "attribute_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "values": [],
      "excluded_values": [],
      "require_all": false,
      "include_empty": false
    }
  ],
  "current_company_attribute_filters": {
    "select_attribute_filters": [
      {
        "attribute_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "values": [],
        "excluded_values": [],
        "require_all": false,
        "include_empty": false
      }
    ],
    "numeric_attribute_filters": [
      {
        "attribute_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "min": 123,
        "max": 123,
        "include_empty": false
      }
    ],
    "date_attribute_filters": [
      {
        "attribute_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "start_date": "<string>",
        "end_date": "<string>",
        "include_empty": false
      }
    ],
    "team_member_attribute_filters": [
      {
        "attribute_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "values": [],
        "excluded_values": [],
        "require_all": false,
        "include_empty": false
      }
    ]
  }
}
'
{
  "success": true,
  "data": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "John Doe",
      "linkedin_public_id": "johndoe",
      "first_name": "John",
      "last_name": "Doe",
      "current_job_title": "Software Engineer",
      "current_company_name": "Tech Corp",
      "current_company_id": "456e7890-e12b-34d5-a678-901234567890",
      "external_source_id": null,
      "emails": [
        {
          "contact_data_type": "work",
          "value": "john@techcorp.com"
        }
      ],
      "phones": [
        {
          "contact_data_type": "mobile",
          "value": "+1-555-0123"
        }
      ],
      "work_experience": [
        {
          "company_name": "Tech Corp",
          "company_linkedin_url": "https://www.linkedin.com/company/techcorp",
          "company_linkedin_id": 12345678,
          "company_id": "456e7890-e12b-34d5-a678-901234567890",
          "duration_in_months": 36,
          "positions": [
            {
              "title": "Software Engineer",
              "start_date": "2022-01-01",
              "end_date": null,
              "duration_in_months": 36,
              "description": "Full-stack development",
              "location": "San Francisco, CA",
              "position_type": "Full-time"
            }
          ]
        }
      ],
      "education_experience": [
        {
          "company_name": "Stanford University",
          "start_date": "2016-09-01",
          "end_date": "2020-06-01",
          "description": null,
          "degree": "B.S. Computer Science",
          "company_linkedin_url": "https://www.linkedin.com/school/stanford",
          "company_linkedin_id": 1234,
          "company_id": null
        }
      ],
      "certifications": [
        {
          "name": "AWS Solutions Architect",
          "credential_id": "AWS-SA-001",
          "start_date": "2023-06-01",
          "end_date": "2026-06-01",
          "company_name": "Amazon Web Services",
          "company_linkedin_url": null,
          "company_linkedin_id": null,
          "company_id": null
        }
      ],
      "candidates": [
        {
          "candidate_id": "789e0123-e45f-67a8-b901-234567890123",
          "job_name": "Senior Software Engineer",
          "job_id": "345e6789-e01b-23c4-d567-890123456789",
          "job_client_company_name": "StartupXYZ",
          "current_pipeline_stage_name": "Technical Interview",
          "current_pipeline_stage_id": "567e8901-e23c-45d6-e789-012345678901",
          "is_archived": false,
          "created_at": "2024-01-12T14:30:00Z",
          "sourced_by": "234e5678-e90a-12b3-c456-789012345678",
          "owner_id": null
        }
      ],
      "custom_fields": [
        {
          "attribute_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
          "attribute_name": "Seniority Level",
          "data_type": "single-select",
          "value": null,
          "tag": {
            "id": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
            "name": "Senior"
          },
          "team_member": null
        },
        {
          "attribute_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
          "attribute_name": "Years of Experience",
          "data_type": "number",
          "value": 8,
          "tag": null,
          "team_member": null
        }
      ],
      "activities": [
        {
          "id": "fff66666-0000-1111-2222-333333336666",
          "activity_type": "pipeline_status",
          "created_at": "2024-01-15T10:00:00Z",
          "activity_content": "Moved to Technical Interview",
          "team_member": {
            "id": "234e5678-e90a-12b3-c456-789012345678",
            "name": "Jane Smith"
          },
          "job": {
            "id": "345e6789-e01b-23c4-d567-890123456789",
            "title": "Senior Software Engineer",
            "company_name": "StartupXYZ"
          },
          "pipeline_status_details": {
            "stage_name": "Technical Interview",
            "is_rejection_stage": false,
            "entered_at": "2024-01-15T10:00:00Z",
            "exited_at": null,
            "reason_text": null
          }
        },
        {
          "id": "901e2345-e67f-89a0-b123-456789012345",
          "activity_type": "secondary_note",
          "created_at": "2024-01-14T16:00:00Z",
          "activity_content": "Great initial call. Strong system design skills.",
          "team_member": {
            "id": "234e5678-e90a-12b3-c456-789012345678",
            "name": "Jane Smith"
          },
          "job": {
            "id": "345e6789-e01b-23c4-d567-890123456789",
            "title": "Senior Software Engineer",
            "company_name": "StartupXYZ"
          }
        },
        {
          "id": "902e3456-f78a-90b1-c234-567890123456",
          "activity_type": "email",
          "created_at": "2024-01-13T11:00:00Z",
          "activity_content": "Hi John, following up on our conversation...",
          "team_member": {
            "id": "234e5678-e90a-12b3-c456-789012345678",
            "name": "Jane Smith"
          },
          "job": {
            "id": "345e6789-e01b-23c4-d567-890123456789",
            "title": "Senior Software Engineer",
            "company_name": "StartupXYZ"
          },
          "email_details": {
            "subject": "Following up — Senior SWE role",
            "from_email": "jane@startup.xyz",
            "to_email": "john@techcorp.com",
            "status": "sent"
          }
        }
      ],
      "compensation": [
        {
          "id": "comp-1111-2222-3333-444444444444",
          "compensation_type": "actual",
          "currency_code": "USD",
          "current_compensation_base": 180000,
          "current_compensation_bonus": 20000,
          "annual_equity_grant_percent": null,
          "annual_equity_grant_amount": 50000,
          "initial_equity_grant_percent": null,
          "initial_equity_grant_amount": null,
          "total_estimated_compensation": 250000,
          "note": "Current package at Tech Corp",
          "job_id": null,
          "job_name": null,
          "created_at": "2024-01-01T00:00:00Z",
          "updated_at": "2024-01-01T00:00:00Z"
        }
      ],
      "related_people": [
        {
          "relation_id": "rel-1111-2222-3333-444444444444",
          "person_id": "567e8901-e23c-45d6-e789-012345678901",
          "name": "Jane Smith",
          "current_job_title": "Engineering Manager",
          "linkedin_public_id": "janesmith",
          "current_company_name": "Tech Corp",
          "current_company_id": "456e7890-e12b-34d5-a678-901234567890",
          "relation_type": "colleague",
          "note": "Worked together on Platform team",
          "direction": "outgoing",
          "created_at": "2024-01-05T10:00:00Z"
        }
      ],
      "offers": [
        {
          "id": "offer-1111-2222-3333-444444444444",
          "job_id": "345e6789-e01b-23c4-d567-890123456789",
          "job_name": "Senior Software Engineer",
          "job_company_name": "StartupXYZ",
          "candidate_id": "789e0123-e45f-67a8-b901-234567890123",
          "status": {
            "id": "status-1111",
            "name": "Extended",
            "color": "#22c55e"
          },
          "extended_date": "2024-02-01T00:00:00Z",
          "accepted_date": null,
          "candidate_start_date": "2024-03-01T00:00:00Z",
          "compensation_currency": "USD",
          "compensation_base": 200000,
          "compensation_bonus": 30000,
          "bonus_type": "fixed",
          "annual_equity_grant_percent": null,
          "annual_equity_grant_amount": 50000,
          "initial_equity_grant_percent": null,
          "initial_equity_grant_amount": 100000,
          "relocation_bonus": 10000,
          "total_estimated_compensation": 290000,
          "note": "Competitive offer with strong equity component",
          "created_at": "2024-02-01T00:00:00Z",
          "updated_at": "2024-02-01T00:00:00Z"
        }
      ]
    }
  ],
  "meta": {
    "total": 100,
    "offset": 0,
    "limit": 20
  }
}

Authorizations

Authorization
string
header
required

Authenticate with a Bearer token: API key, OAuth token, or session token.

Body

application/json
offset
integer
default:0

Records to skip for pagination. Defaults to 0.

Required range: x >= 0
limit
integer
default:100

Max records to return (1–100). Defaults to 100.

Required range: 1 <= x <= 100
sort_by
string

Sort column. Values: name, created_at, updated_at, current_job_title, company, linkedin_location, date_of_last_engagement, person_owner, last_activity_type, contact_email. Job-context columns (require job_id or single job_ids_included): pipeline_stage, stage_date, added_to_job_at, rating, rating_note, candidate_owner. Custom field sorting: custom_<attribute_id>. Defaults to created_at.

Example:

"created_at"

sort_order
enum<string>
default:desc

Sort direction. Defaults to desc (newest first).

Available options:
asc,
desc
email
string<email>

Filter by exact email address match.

name
string

Filter by name (partial, case-insensitive).

phone
string

Filter by phone number. Tiered matching: exact → normalized → last-7-digits.

linkedin_url
string

Filter by LinkedIn profile URL. Must be a valid LinkedIn profile URL (https://www.linkedin.com/in/...)

Pattern: ^https?:\/\/(?:[a-z]{2}\.)?(?:www\.)?linkedin\.com\/in\/[^?#\s]+\/?(?:[?#][^\s]*)?$

AI semantic search query (min 5 chars). Searches profile text via vector embeddings.

Minimum string length: 5
include
enum<string>[]

Sections to embed in each person record. Values: work_experience, education_experience, certifications, candidates, custom_fields, activities, compensation, related_people, offers. Omit for base fields only. Pass empty array [] for base fields explicitly.

Available options:
work_experience,
education_experience,
certifications,
candidates,
custom_fields,
activities,
compensation,
related_people,
offers
keywords
string[]

Full-text keyword search across profile data.

job_id
string<uuid>

Single job UUID to scope results to candidates in this job. Enables job-context sort columns (pipeline_stage, stage_date, etc.). Get job IDs from POST /v1/jobs/search. For multi-job filtering, use job_ids_included.

job_ids_included
string<uuid>[]

Only include candidates from these jobs. Get IDs from POST /v1/jobs/search.

job_ids_excluded
string<uuid>[]

Exclude candidates from these jobs.

filter_out_if_not_in_job
boolean

When true, only return persons who are candidates in at least one of job_ids_included.

exclude_archived_jobs
boolean

Exclude candidates from archived jobs.

job_titles_included
string[]

Include persons whose current_job_title partially matches any of these strings.

job_titles_excluded
string[]

Exclude persons whose current_job_title matches any of these strings.

departments_included
string<uuid>[]

Include persons in jobs with these department UUIDs.

departments_excluded
string<uuid>[]

Exclude persons in jobs with these department UUIDs.

current_company_ids
string<uuid>[]

Include persons currently at these companies. Get IDs from GET /v1/companies.

current_company_ids_excluded
string<uuid>[]

Exclude persons currently at these companies.

past_company_ids
string<uuid>[]

Include persons who previously worked at these companies.

past_company_ids_excluded
string<uuid>[]

Exclude persons who previously worked at these companies.

pipeline_stage_ids_included
string<uuid>[]

Include persons currently in these pipeline stages. Get stage IDs from GET /v1/jobs/{id} → pipeline_stages.

pipeline_stage_ids_excluded
string<uuid>[]

Exclude persons currently in these pipeline stages.

pipeline_stage_history_included
string<uuid>[]

Include persons who were ever in these stages (historical).

pipeline_stage_history_excluded
string<uuid>[]

Exclude persons who were ever in these stages (historical).

job_page_pipeline_stages_in
string<uuid>[]

Filter by current pipeline stage within a specific job context. Stage IDs from GET /v1/jobs/{id} → pipeline_stages.

job_page_pipeline_stages_ex
string<uuid>[]

Exclude these pipeline stages within a specific job context.

activity_types_included
string[]

Include persons with activities of these types (e.g. "email", "secondary_note").

activity_types_excluded
string[]

Exclude persons with activities of these types.

activity_content_keywords
string[]

Filter by keywords found in activity content text.

person_owner_ids_included
string<uuid>[]

Include persons owned by these team members. Get IDs from GET /v1/team-members.

person_owner_ids_excluded
string<uuid>[]

Exclude persons owned by these team members.

candidate_owner_ids_included
string<uuid>[]

Include persons whose candidate record is owned by these team members.

candidate_owner_ids_excluded
string<uuid>[]

Exclude persons whose candidate record is owned by these team members.

sourced_by_ids
string<uuid>[]

Filter by team members who sourced the candidate. Get IDs from GET /v1/team-members.

sourced_by_include_empty
boolean

When true, also include candidates with no source assigned.

list_ids_included
string<uuid>[]

Include persons in these saved lists.

list_ids_excluded
string<uuid>[]

Exclude persons in these saved lists.

hide_client_contacts
boolean

When true, exclude persons who are client contacts.

contact_email_filter
enum<string>

"has_email" returns only persons with at least one email; "missing_email" returns only persons with no email.

Available options:
has_email,
missing_email
engagement_type
enum<string>

Engagement recency filter type.

Available options:
engaged_within,
not_engaged_within,
custom_range,
never_engaged
engagement_value
number

Numeric value for engagement window (e.g. 30 for "30 days").

engagement_unit
enum<string>

Time unit for engagement_value.

Available options:
days,
months,
years
engagement_start_date
string

Start of custom engagement date range (ISO 8601).

engagement_end_date
string

End of custom engagement date range (ISO 8601).

added_to_job_start_date
string

Only include candidates added to a job after this date (ISO 8601).

added_to_job_end_date
string

Only include candidates added to a job before this date (ISO 8601).

locations_included
object[]

Include persons within these geographic bounding boxes.

locations_excluded
object[]

Exclude persons within these geographic bounding boxes.

select_attribute_filters
object[]

Filter by select/multi-select custom fields. Get attribute_id and tag IDs from GET /v1/custom-fields/persons.

numeric_attribute_filters
object[]

Filter by numeric custom fields (min/max range). Get attribute_id from GET /v1/custom-fields/persons.

date_attribute_filters
object[]

Filter by date custom fields (date range). Get attribute_id from GET /v1/custom-fields/persons.

team_member_attribute_filters
object[]

Filter by team-member custom fields. Get attribute_id from GET /v1/custom-fields/persons, team member IDs from GET /v1/team-members.

current_company_attribute_filters
object

Filter by company-level custom attributes on the person's current employer. Get attribute_id from GET /v1/custom-fields/companies.

Response

Successful search response

success
enum<boolean>
required
Available options:
true
data
object[]
required
meta
object
required