Execute BambooHR primary workflows: employee CRUD, directory sync, and custom reports.
Use when managing employees, syncing employee data to external systems,
or building HR data pipelines with BambooHR.
Trigger with phrases like "bamboohr employees", "bamboohr employee management",
"sync bamboohr directory", "bamboohr custom report", "add employee bamboohr".
Execute BambooHR primary workflows: employee CRUD, directory sync, and custom reports.
Use when managing employees, syncing employee data to external systems,
or building HR data pipelines with BambooHR.
Trigger with phrases like "bamboohr employees", "bamboohr employee management",
"sync bamboohr directory", "bamboohr custom report", "add employee bamboohr".
allowed-tools
Read, Write, Edit, Bash(curl:*), Grep
version
1.4.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
["saas","hr","bamboohr","employees","reports"]
compatibility
Designed for Claude Code
BambooHR Core Workflow A — Employee Management & Reports
Overview
Primary BambooHR workflows: CRUD operations on employees, directory sync to external systems, custom reports, and table data (job history, compensation, emergency contacts).
Prerequisites
Completed bamboohr-install-auth setup
BambooHRClient from bamboohr-sdk-patterns
API key with appropriate permissions (read or read+write)
Instructions
Step 1: Add a New Employee
// POST /employees/ — minimum: firstName + lastNameconst newEmpRes = awaitfetch(`${BASE}/employees/`, {
method: 'POST',
headers: { Authorization: AUTH, 'Content-Type': 'application/json' },
body: JSON.stringify({
firstName: 'Sarah',
lastName: 'Chen',
department: 'Engineering',
jobTitle: 'Backend Engineer',
workEmail: 'sarah.chen@acmecorp.com',
hireDate: '2026-04-01',
location: 'San Francisco',
status: 'Active',
}),
});
// New employee ID is in the Location headerconst locationHeader = newEmpRes.headers.get('Location');
// e.g., "https://api.bamboohr.com/.../v1/employees/456"
newId = locationHeader?.().();
.();
const
split
'/'
pop
console
log
`Created employee ID: ${newId}`
Step 2: Update Employee Fields
// POST /employees/{id}/ — only send fields you want to changeawaitfetch(`${BASE}/employees/${newId}/`, {
method: 'POST',
headers: { Authorization: AUTH, 'Content-Type': 'application/json' },
body: JSON.stringify({
jobTitle: 'Senior Backend Engineer',
department: 'Platform Engineering',
}),
});
Fields that trigger position history changes:jobTitle, department, division, location, reportsTo. Updating these creates a new row in the employee's position history table.