Ashby Candidates & Applications
Where does each candidate stand, and what did the interviewers say? Search Ashby candidates by name or email, read their applications, stage history and scorecards, see upcoming interview schedules, then add a note, tag a candidate or move an application to the next interview stage.
Connect this API to an AI agent Browse all specs
What you can do with Ashby Candidates & Applications via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| POST | /candidate.search |
searchCandidates | Find candidates by email and/or name |
| POST | /candidate.info |
getCandidate | Get a candidate's profile, contact details, tags and application ids |
| POST | /candidate.listNotes |
listCandidateNotes | List the notes on a candidate, newest first |
| POST | /application.list |
listApplications | List applications, filtered by job, status or creation date |
| POST | /application.info |
getApplication | Get an application with its job, current stage, source and status |
| POST | /application.listHistory |
listApplicationHistory | See every stage an application has passed through and when |
| POST | /applicationFeedback.list |
listApplicationFeedback | Read the interview scorecards and feedback on an application |
| POST | /job.list |
listJobs | List jobs, optionally only open ones |
| POST | /job.info |
getJob | Get a job with its hiring team, locations and interview plan |
| POST | /interviewStage.list |
listInterviewStages | List the stages of an interview plan in order |
| POST | /interviewSchedule.list |
listInterviewSchedules | List scheduled interviews and their events |
| POST | /candidateTag.list |
listCandidateTags | List the candidate tags in use |
| POST | /archiveReason.list |
listArchiveReasons | List the reasons an application can be archived (rejected, withdrew...) |
| POST | /source.list |
listSources | List candidate sources (referral, LinkedIn, job board...) |
| POST | /candidate.createNote |
createCandidateNote | Add a note to a candidate's profile |
| POST | /candidate.addTag |
addCandidateTag | Tag a candidate |
| POST | /candidate.create |
createCandidate | Create a new candidate with name, email, phone and links |
| POST | /application.changeStage |
changeApplicationStage | Move an application to another interview stage (or archive it with a reason) |
Authentication
BasicAuth
HTTP Basic
HTTP basic auth with your Ashby API key as the username and an empty password (-u API_KEY:).
How to get a credential
- As an Ashby Admin, open Admin > Integrations > API Keys (app.ashbyhq.com/admin/api/credentials).
- Create a new key and name it (e.g. VX Agents recruiting).
- Grant the module permissions below; leave confidential jobs and private fields off unless needed.
- Copy the key (it is shown once).
Permissions used
| Permission | Operations |
|---|---|
candidatesRead |
searchCandidates, getCandidate, listCandidateNotes, listApplications, getApplication, listApplicationHistory, listApplicationFeedback |
candidatesWrite |
createCandidate, createCandidateNote, addCandidateTag, changeApplicationStage |
hiringProcessMetadataRead |
listCandidateTags, listArchiveReasons, listSources |
jobsRead |
listJobs, getJob |
interviewsRead |
listInterviewStages, listInterviewSchedules |
Common errors
| Status | Meaning | Fix |
|---|---|---|
| 401 | API key missing | Store the key as the basic-auth username with an empty password. |
| 403 | Key wrong or deactivated, or missing_endpoint_permission |
Check the key is active and grant the module permission listed above. |
400 / success: false |
Bad or missing field (Ashby often answers 200 with success: false and errors) |
Read errors and fix the ids or fields named there. |
| 429 | Rate limit | Wait and retry with backoff. |
Store the key as a VX Agents basic-auth credential (username = API key, password empty).
Usage guide
Setup
- Credential: an Ashby API key (Admin > Integrations > API Keys) stored as a basic-auth credential: username = the key, password empty. Grant
candidatesRead,jobsRead,interviewsReadandhiringProcessMetadataRead; addcandidatesWriteonly if notes, tags, new candidates or stage moves are wanted. - Worth pinning: the
jobIdof the role you are hiring for (fromlistJobswithstatus: ["Open"]).
Review a candidate and move them forward
Every call is a POST with a JSON body, even reads.
searchCandidateswithemailand/orname, thengetCandidatewithidfor profile, tags and application ids.getApplicationwithapplicationIdfor the job, current stage and status.listApplicationswithjobIdandstatus(Active,Hired,Archived,Lead) lists a whole pipeline.- Context:
listApplicationHistory(stages and dates),listApplicationFeedback(scorecards),listCandidateNotes, andlistInterviewScheduleswithapplicationIdfor booked interviews. getJobfor the job's interview plan id, thenlistInterviewStageswithinterviewPlanIdto get the stage ids in order.- Write back, after the user confirms:
createCandidateNote(candidateId,noteas text or{type: "text/html", value}),addCandidateTag(tagIdfromlistCandidateTags), orchangeApplicationStage(applicationId,interviewStageId). - To reject, move to the plan's stage of type
Archivedwith anarchiveReasonIdfromlistArchiveReasons. AddingarchiveEmailsends the candidate an email, so only do it when the user explicitly asks.
New candidates: createCandidate needs name; add email, phoneNumber, linkedInUrl and a sourceId from listSources. Always confirm before creating candidates or changing stages.
Good to know
- Ashby can answer HTTP 200 with
success: falseand anerrorslist: checksuccesson every response. Data is inresults. - Lists page with
cursor(fromnextCursorwhilemoreDataAvailableis true) andlimit(page size).syncTokenreturns only changes since the last full sync. - Timestamps are ISO 8601 UTC. Ids are UUIDs.
- Confidential jobs and private fields stay hidden unless the key has those extra permissions.
- Source: Ashby API reference (https://developers.ashbyhq.com/reference/candidatelist), checked 2026-10-22.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Ashby Candidates & Applications” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.