VX Agents

API directory · HR

BambooHR Hiring & Applicant Tracking

v1.0.0 · 10 endpoints · 0 connections · shared by vx.ai

Who applied for the open roles this week, and who is still waiting on a reply? Work the BambooHR ATS pipeline: list job openings and applications by status group, read an applicant's answers and status history, move them to the next status, leave comments for the hiring team, add candidates and post new job openings.

Connect this API to an AI agent Browse all specs

What you can do with BambooHR Hiring & Applicant Tracking 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.

MethodPathOperationDescription
GET /api/v1/applicant_tracking/jobs listJobOpenings List job openings with applicant counts, filtered by status group
GET /api/v1/applicant_tracking/applications listApplications List job applications by job, status, search text or submit date
GET /api/v1/applicant_tracking/applications/{applicationId} getApplication Get an application with the applicant, answers and status history
GET /api/v1/applicant_tracking/statuses listApplicantStatuses List the applicant statuses your company uses
POST /api/v1/applicant_tracking/applications/{applicationId}/status updateApplicationStatus Move an application to another status
POST /api/v1/applicant_tracking/applications/{applicationId}/comments addApplicationComment Add a comment to an application for the hiring team
POST /api/v1/applicant_tracking/application createCandidate Add a candidate to a job opening
GET /api/v1/applicant_tracking/hiring_leads listHiringLeads List employees who can be the hiring lead on a job opening
GET /api/v1/applicant_tracking/locations listJobLocations List company locations a job opening can use
POST /api/v1/applicant_tracking/job_opening createJobOpening Create a job opening (draft or open)

Authentication

basic

HTTP Basic

BambooHR API key sent with HTTP basic auth: the API key is the username and the password can be any text (e.g. x).

How to get a credential

  1. Sign in to BambooHR as a user with access to Hiring (ATS) settings, such as an admin or a hiring manager with ATS access.
  2. Click your name in the top-right corner and choose API Keys (shown when API access is enabled for your company).
  3. Click Add New Key, name it (e.g. VX Agents hiring) and copy the key.
  4. Note your company subdomain from the address bar (https://<subdomain>.bamboohr.com).

The key acts with that user's permissions, and the company needs the BambooHR Hiring (applicant tracking) feature.

Permissions used

Access (OAuth scope) Operations
Read hiring data (hiring:applications) listJobOpenings, listApplications, getApplication, listApplicantStatuses, listJobLocations
Manage applications (hiring:applications.write) updateApplicationStatus, addApplicationComment, createCandidate
ATS settings access (API key) listHiringLeads, createJobOpening

Common errors

Status Meaning Fix
401 Wrong or revoked API key Create a new key under API Keys and use it as the username.
403 The key's user has no access to ATS settings Use a key from an admin or a user with Hiring access.
400 Missing required field or bad id (status, job, location, hiring lead) List statuses, jobs, locations or hiring leads first and send their ids.
404 Wrong company subdomain or unknown application id Check the subdomain and list applications first.
429 / 503 Rate limited Wait and retry.

Store the API key as a VX Agents basic-auth credential (username = API key, password = x).

Usage guide

Setup

  • Credential: HTTP Basic with the BambooHR API key as the username and any password (e.g. x). The key's user needs access to Hiring (ATS) settings.
  • Set the server variable companyDomain to your subdomain (for https://acme.bamboohr.com use acme).
  • Worth pinning as presets: the jobId of the openings you hire for most, and the status ids you move people to (e.g. Phone Screen, Interview).

Review new applicants

  1. listJobOpenings with statusGroups=Open to see open roles and their applicant counts.
  2. listApplications with jobId, applicationStatus=NEW (or ALL_ACTIVE), newSince=2026-10-17 00:00:00, sortBy=created_date&sortOrder=DESC; use page for more results.
  3. getApplication for the applicant's contact details, answers, rating and status history.
  4. listApplicantStatuses once to learn the status ids your company uses.
  5. Move someone on: updateApplicationStatus with {"status": <status id>}. Leave context for the team with addApplicationComment ({"comment": "..."}).

Add candidates and roles

  1. createCandidate (form fields) with firstName, lastName, jobId and any fields the job's standard questions require (email, phoneNumber, source, linkedinUrl, dateAvailable as YYYY-MM-DD). It returns the new candidate id.
  2. For a new role: listHiringLeads (use employeeId) and listJobLocations (use the location id), then createJobOpening with postingTitle, jobStatus (Draft or Open), hiringLead, employmentType, jobDescription, and locationType (0 on-site and 2 hybrid need jobLocation; 1 is remote).

Good to know

  • Confirm with the user before changing a status, adding a comment, creating a candidate or opening a job: status changes can trigger candidate emails, and an Open job may be posted to your careers page.
  • newSince uses YYYY-MM-DD HH:MM:SS in UTC, not ISO 8601 with T.
  • Resume and cover letter file uploads are not included: if a job marks them as Required, add the candidate in BambooHR instead.
  • Status filters take comma-separated values (NEW,ACTIVE); job status groups are ALL, DRAFT_AND_OPEN, Open, Filled, Draft, ...
  • No deletes by design.

Source: BambooHR API reference (https://documentation.bamboohr.com/reference/applicant-tracking), checked 2026-10-24.

How to use this spec

  1. Create a free VX Agents account (sandbox tools included).
  2. Open the marketplace and connect “BambooHR Hiring & Applicant Tracking” to an agent.
  3. Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.

Related APIs