Open appvitae.ai

Candidate Search

The sourcing hub uses AI to find professionals matching your requirements. Results stream in real-time via SSE.

Search candidates

POST /v1/searches/candidates/search
Authorization: Bearer <token>
Content-Type: application/json
 
{
  "prompt": "senior backend engineer with Node.js and PostgreSQL in New York"
}

The response streams via text/event-stream with candidate results as they are found.

Search with intent classification

Before running a search, classify the prompt to extract structured filters:

POST /v1/searches/candidates/classify-intent
Authorization: Bearer <token>
Content-Type: application/json
 
{
  "prompt": "senior backend engineer with Node.js in New York"
}

Search from Sales Navigator URL

Import search criteria directly from a LinkedIn Sales Navigator URL:

POST /v1/searches/candidates/start-with-sales-navigator-url
Authorization: Bearer <token>
Content-Type: application/json
 
{
  "url": "https://www.linkedin.com/sales/search/people?..."
}

View search history

GET /v1/searches/candidates/history
Authorization: Bearer <token>

Returns a list of previous searches with metadata.

Get search results

GET /v1/searches/candidates/:candidateSearchId
Authorization: Bearer <token>

Expand search results

When initial results are too narrow, expand to find more candidates:

POST /v1/searches/candidates/:candidateSearchId/expand
Authorization: Bearer <token>

Update search prompt

Refine a search by updating its prompt:

PATCH /v1/searches/candidates/:candidateSearchId
Authorization: Bearer <token>
Content-Type: application/json
 
{
  "prompt": "senior backend engineer with Node.js, 5+ years, remote OK"
}

Helper endpoints

Get job title synonyms and skill suggestions to refine searches:

POST /v1/searches/candidates/job-title-synonyms
Content-Type: application/json
 
{ "title": "backend engineer" }
POST /v1/searches/candidates/skills-suggestions
Content-Type: application/json
 
{ "skills": ["Node.js"] }

Candidate lists

Save search results to a named list for ongoing management:

POST /v1/pools/candidates
Authorization: Bearer <token>
Content-Type: application/json
 
{
  "name": "NYC Backend Engineers Q2",
  "candidateSearchId": "search_01abc..."
}

List, update, and delete saved lists:

GET    /v1/pools/candidates/org
GET    /v1/pools/candidates/:listId
PUT    /v1/pools/candidates/:listId
DELETE /v1/pools/candidates/:listId

Full spec

See the API Reference for the complete request/response schema.