Skip to main content
POST
Vector Search Jobs
Run semantic job searches using vector embeddings. Instead of relying on keyword matching, this API understands the meaning behind your query to return more relevant job results. You can use the Vector Search Jobs API to search by natural language, match jobs similar to a specific listing, or find jobs that align with a candidate’s resume.

Endpoint

Search Types

Use the query parameter to search with a natural language description of the specific job.
Use the job_id parameter with search_type=job to find jobs similar to a specific job.
Use the artifact_id parameter with search_type=resume to find jobs that match a resume. The artifact_id is the _id returned by Upload Resume.

Request Body

Note:
  • All request body fields are optional unless stated otherwise.
  • Begin with minimal filters to avoid excluding relevant results too early.
  • Filter combinations can be mixed and matched.
  • Use specific filters to narrow down search results and get relevant matches.
The core vector search parameters (search_type, query, top_k, accuracy, limit, page) work as documented. Lexical filter parameters (salary_from, years_from, industries, locations, etc.) are accepted but may not narrow results in all cases. For reliable filtered search, use Neural Search, which combines vector matching with lexical filtering.
string
default:"summary"
required
Type of search to perform (“summary”, “job”, or “resume”)
string
required
Natural language description of the job you’re looking for
Note:Required only when the search type is Natural Language Query. Omit for Similar Job Search and Resume Matching search types.
string
required
The ID of the job to use as a reference for retrieving similar job listings (obtain job IDs from Search Jobs).
Note:Required only when the search type is Similar Job Search. Omit for Natural Language Query and Resume Matching search types.
string
required
Find jobs matching a resume by its stored id. This is the _id returned by Upload Resume.
The artifact_id must be a valid MongoDB ObjectId. A malformed (non-ObjectId) value currently returns 500 rather than 400/404.
Note:Required only when the search type is Resume Matching. Omit for Natural Language Query and Similar Job Search search types.
string[]
Filter by one or more company industries (e.g., "Tech, Software & IT Services", "Healthcare"). See List Industries.
string[]
Filter by one or more specific subindustries. See List Subindustries.
string
Filter jobs by exact job title (e.g., “Software Engineer”, “Marketing Manager”).
string[]
Array of employment types. Accepted values: "Full Time", "Part Time", "Contract", "Internship".
The "Contract" value matches roles whose returned job_type is "Contract / Temporary" — request token and response label differ.
The correct field name is job_types (plural). Using job_type (singular) is silently ignored — the request succeeds but the filter is not applied.
string[]
Filter by experience level. Accepted values: "Entry", "Junior", "Mid", "Senior", "Executive".
string[]
Filter jobs by the hiring company’s headcount bucket. Accepted values: "1-10", "11-50", "51-200", "201-500", "501-1000", "1001-5000", "5001-10000", "10000+". Pass multiple values to combine ranges (e.g., ["11-50", "51-200"]).
This parameter is named company_types for historical reasons but currently filters by company size. A separate classification filter (Public Company / Non-Profit / etc.) will be added in a future API update.
string[]
Filter by one or more job category tags (e.g., "Engineering Jobs", "Marketing Jobs").
string
Filter by the unique slug of a job (used to fetch or highlight a specific job).
string[]
Filter by the job board source (e.g., “Workable”, “Greenhouse”).
string
Filter by the name of the company offering the job.
string
Filter jobs by the unique company slug identifier.
object
Filter jobs by one or more locations. Each location object can include city, region, or country.
string
Filter jobs posted on or after a specific date (format: YYYY-MM-DD).
string
Filter to include only jobs that offer visa sponsorship.
number
default:"10"
Number of results to return
number
Minimum similarity score to include in results
Note:Higher similarity scores indicate stronger semantic matches.
number
Minimum salary filter
number
Maximum salary filter
number
Minimum years of experience filter
number
Maximum years of experience filter
number
default:"1"
Page number for pagination
number
default:"10"
Number of results per page
number
Offset for results (alternative to page)
Note:The page, limit, and offset fields all control how results are paginated i.e., how many results you get and which ones are returned. You can use either page and limit together or use offset withlimit.
  • If you’re using page, you’re asking for a specific page of results (like page 2 or page 3), and limit defines how many results appear on each page.
  • If you’re using offset, you’re skipping a certain number of results before starting to return data. For example, offset= 20 with limit= 10 means “skip the first 20 results, then return the next 10.”
number
default:"0.0"
Search accuracy vs. speed, as a float from 0.0 (fastest) to 1.0 (most accurate). Higher values take more time.

Response

array
Array of job objects, each representing a single job listing along with company and scoring metadata.
number
Total number of matching job listings across all pages.
number
Reserved for unique-company counts. Currently always returns 0 for this endpoint — use total_count for result sizing.
number
Current page number of the response.
number
Maximum number of jobs returned per page.
number
Total number of pages available for the current query.
Rate limit: 100 requests per 60 seconds per API key. 429 responses include a Retry-After header. See Error Handling.Vector search bills the jobs meter (m_jobs_api_calls), one unit per job returned, the same as lexical search. See Usage Headers & Metering.Note: Per-job similarity score is not currently returned in vsearch responses (verified for summary and job search modes).

Example Request

Example Response

Error Responses

Returns when the request is missing required data or includes invalid parameters.
  • For example, this error occurs if an artifact_id is provided but not found in the system.
Returns when the API key is missing, invalid, or incorrect.
Returns when your account does not have permission to access the requested feature.
  • This usually means the feature is restricted to certain subscription tiers.
Best Practices
  • Use detailed natural language queries: The API performs best when queries are specific and clearly describe experience, goals, or desired roles.
  • Prefer prompts over structured parameters: The most accurate matches come from descriptive prompts rather than strict filters.