Skip to content

HRIS

BambooHR
API integration

Ship HRIS features without building the integration. Full BambooHR API access via Proxy, normalized data through Unified APIs, and 90+ MCP-ready tools for AI agents — all extensible to your exact use case.

Talk to us
BambooHR

Use Cases

Why integrate with BambooHR

Common scenarios for SaaS companies building BambooHR integrations for their customers.

01

Automate employee provisioning and deprovisioning

IT and identity management platforms can sync BambooHR's employee directory in real time using webhooks and employee list endpoints to automatically provision accounts, assign licenses, and revoke access when employees are terminated — without HR lifting a finger.

02

Sync org structure for expense and approval workflows

Finance and expense management SaaS products can pull employee records, job info tables, and reporting hierarchies from BambooHR to automatically configure spending limits by role and route approvals to the correct manager.

03

Push completed training records back to BambooHR

Learning management systems can write course completions, certifications, and compliance training data directly into BambooHR's employee training records, keeping HR's system of record audit-ready without manual data entry.

04

Enrich scheduling with time-off and timesheet data

Workforce scheduling and capacity planning tools can read approved time-off requests and push clock entries or hour entries back into BambooHR, ensuring shift plans respect PTO and payroll gets accurate hours worked.

05

Streamline hiring by connecting ATS workflows

Recruitment and background check platforms can pull open jobs, create applications, and update candidate statuses in BambooHR's applicant tracking system — closing the loop from sourcing to hire without context switching.

What You Can Build

Ship these features with Truto + BambooHR

Concrete product features your team can ship faster by leveraging Truto’s BambooHR integration instead of building from scratch.

01

Real-time employee directory sync

Continuously import and update employee profiles — including department, location, job title, and manager — using BambooHR webhooks and the unified HRIS Employees model.

02

Automated onboarding and offboarding triggers

Configure BambooHR webhooks to listen for status field changes and instantly trigger provisioning or deprovisioning workflows in your product.

03

PTO-aware scheduling and capacity planning

Pull approved time-off requests and time-off balances from BambooHR so your app can block unavailable employees from assignments, shifts, or project plans.

04

Two-way goal and performance sync

Read and write OKRs, performance goals, and goal comments between your platform and BambooHR so HR always has a unified view of employee progress.

05

Candidate pipeline integration via unified ATS

List open jobs, push new applications, and advance candidates through interview stages in BambooHR directly from your sourcing or assessment tool using Truto's unified ATS API.

06

Compliance document upload to employee files

Automatically attach background check reports, signed agreements, or certification PDFs to the correct employee's file repository in BambooHR.

SuperAI

BambooHR AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_bamboohr_employees

Get employee directory for companyDomain in BambooHR. Returns employee id, displayName, firstName, lastName, gender, jobTitle, workPhone, workPhoneExtension, skypeUsername, and facebook fields. Note: Directory feature may be disabled by company.

get_single_bamboohr_employee_by_id

Get employee data by specifying id and fields in BambooHR. Returns id, firstName, lastName, and other requested fields.

update_a_bamboohr_employee_by_id

Update an employee by id in BambooHR. Requires company_domain and id. Returns success message on update. If employee syncs with Trax Payroll, all specified fields must be included for successful update.

create_a_bamboohr_employee

Add a new employee in BambooHR with required fields firstName and lastName. Returns the Location header containing the URL with the new employee's id.

list_all_bamboohr_users

Get a list of users for the companyDomain in BambooHR. Returns user id, employeeId if linked, firstName, lastName, email, status, and lastLogin in ISO 8601 format.

list_all_bamboohr_time_off_requests

Get time off requests for companyDomain with required start and end dates. Returns id, employeeId, name, status (lastChanged, lastChangedByUserId, status), start, end, created, type (id, name, icon), amount (unit, amount), notes, and dates if available in BambooHR.

create_a_bamboohr_time_off_request

Create a time off request for employee with id in BambooHR. Requires company_domain and employee id. Returns empty response with 201 status on success. Request includes status, start, end, timeOffTypeId, amount, notes, dates, and previousRequest.

list_all_bamboohr_time_off_balance

Get estimated future time off balances for employee id in BambooHR with required company_domain and end date. Returns timeOffType, name, units, balance, policyType, usedYearToDate, and end date fields.

list_all_bamboohr_jobs

Get a list of job summaries in BambooHR for the specified companyDomain. Returns job details including title, lead, created date, and status.

create_a_bamboohr_job

Add a new job opening in BambooHR with required parameters company_domain, postingTitle, jobStatus, hiringLead, employmentType, and jobDescription. Returns success status on creation.

get_single_bamboohr_job_by_id

Retrieves detailed information about a specific job posting in BambooHR based on the unique job ID.

list_all_bamboohr_applications

Get a list of applications for companyDomain in BambooHR. Returns application id, appliedDate, status with rating, applicant info, and job info. Requires companyDomain.

get_single_bamboohr_application_by_id

Get details about a specific application in BambooHR. Requires company_domain and id. Returns fields such as id, appliedDate, status, rating, education, resumeFileId, coverLetterFileId, applicant details, job details, and related counts.

bamboohr_applications_change_status

Change applicant's status by application id in BambooHR. Requires companyDomain and applicationId. Returns success status on update.

create_a_bamboohr_application

Add a new candidate application to a job opening in BambooHR. Requires company_domain and jobId. Returns success status on completion.

list_all_bamboohr_statuses

Get a list of statuses for a company in BambooHR using company_domain. Returns all available status entries for applicant tracking.

list_all_bamboohr_company_locations

Get company locations using company_domain in BambooHR. Returns an array of location objects for creating new job openings.

list_all_bamboohr_fields

Get a list of fields available in a BambooHR account using companyDomain. Returns id, name, type, and alias for each field.

update_a_bamboohr_field_by_id

Use this endpoint to update one or more metadata fields in the account.

create_a_bamboohr_custom_report

Request a custom report in BambooHR with companyDomain and format. Returns the report with specified fields such as firstName and lastName. Supports filtering by lastChanged date to include only employees changed since that time.

list_all_bamboohr_company_files

List company files and categories for companyDomain in BambooHR. Returns categories with id and name, and files with id, name, originalFileName, size, dateCreated, createdBy, and shareWithEmployee fields.

bamboohr_company_files_download

Use this endpoint to download a specific file stored in the company's BambooHR file repository by providing the file_id.

get_single_bamboohr_company_file_by_id

Get company file by id in BambooHR using company_domain and id. Returns the file content if found.

create_a_bamboohr_company_file

Add a new company file category in BambooHR using company_domain. Returns 201 status on successful creation.

update_a_bamboohr_company_file_by_id

Update a company file in BambooHR using company_domain and id. Returns status 200 if the file is updated. Fields updated can include name, categoryId, and shareWithEmployees.

delete_a_bamboohr_company_file_by_id

Delete a company file by id in BambooHR. Requires company_domain and id. Returns 200 on successful deletion, 403 if permission denied, and 404 if file not found.

list_all_bamboohr_employee_files

List employee files and categories for employee with id in BambooHR. Returns categories with id and name, and files with id, name, originalFileName, size, dateCreated, createdBy, and shareWithEmployee fields.

get_single_bamboohr_employee_file_by_id

Get an employee file by id and file_id in BambooHR. Returns the file content if found. Requires company_domain, id, and file_id.

create_a_bamboohr_employee_file

Add an employee file category in BambooHR using company_domain. Returns 201 status on successful creation.

update_a_bamboohr_employee_file_by_id

Update an employee file by id in BambooHR with parameters name, categoryId, and shareWithEmployee. Returns status 200 if the file was updated successfully.

delete_a_bamboohr_employee_file_by_id

Delete an employee file by employee id and fileId in BambooHR. Returns confirmation of deletion.

list_all_bamboohr_payroll_deductions

Use this endpoint to retrieve a list of payroll deductions assigned to a specific employee, identified by their employee_id

list_all_bamboohr_time_off_types

Get a list of time off types for companyDomain in BambooHR. Returns id, name, units, color, and icon for each time off type.

list_all_bamboohr_time_off_policies

Get a list of time off policies for the companyDomain in BambooHR. Returns id, timeOffTypeId, name, effectiveDate, and type for each policy.

list_all_bamboohr_employee_time_off_policies

List time off policies for an employee in BambooHR. Requires company_domain and id. Returns timeOffPolicyId, timeOffTypeId, and accrualStartDate for each policy.

list_all_bamboohr_timesheet

Get all timesheet entries for a given period with start and end dates in BambooHR. Returns id, employeeId, type, date, start, end, timezone, hours, note, projectInfo, approvedAt, and approved fields. Data limited to last 365 days.

create_a_bamboohr_clock_entry

Create a timesheet clock-in entry for an employee in BambooHR. Requires company_domain and id. Returns id, employeeId, type, date, start, end, timezone, hours, note, and projectInfo with project and task details.

update_a_bamboohr_clock_entry_by_id

Add or edit timesheet clock entries in BambooHR with required entries including employeeId, date, start, and end. Returns id, employeeId, type, date, start, end, timezone, hours, note, and projectInfo fields for each entry.

delete_a_bamboohr_clock_entry_by_id

Delete timesheet clock entries by providing clockEntryIds in BambooHR. Returns 204 on successful deletion with no content.

bamboohr_clock_entries_clock_out

Create a timesheet clock-out entry for an employee in BambooHR using company_domain and id. Returns id, employeeId, type, date, start, end, timezone, hours, note, and projectInfo fields.

update_a_bamboohr_hour_entry_by_id

Add or edit timesheet hour entries in BambooHR. Requires companyDomain and an array of hours objects with employeeId, date, hours, note, projectId, and taskId. Returns id, employeeId, type, date, hours, note, and projectInfo with project and task details.

delete_a_bamboohr_hour_entry_by_id

Delete timesheet hour entries in BambooHR using companyDomain and hourEntryIds. Returns no content on success.

list_all_bamboohr_webhooks

Get a list of webhooks for the user API key in BambooHR. Requires company_domain. Returns webhook id, name, created date, lastSent date, and url.

get_single_bamboohr_webhook_by_id

Get webhook data for a specific webhook by id in BambooHR. Returns id, name, created timestamp, lastSent timestamp, monitorFields, postFields, url, format, frequency, limit, and includeCompanyDomain fields.

create_a_bamboohr_webhook

Create a new webhook in BambooHR with required parameters company_domain, name, monitorFields, postFields, and url. Returns webhook id, name, created timestamp, lastSent timestamp, monitorFields, postFields, url, format, frequency, limit, privateKey, and includeCompanyDomain flag.

update_a_bamboohr_webhook_by_id

Update a webhook by id in BambooHR with required fields name, monitorFields, postFields, and url. Returns updated webhook id, name, created timestamp, lastSent timestamp, monitorFields, postFields, url, format, frequency, limit, and includeCompanyDomain.

delete_a_bamboohr_webhook_by_id

Delete a webhook by id for the specified companyDomain in BambooHR. Returns confirmation of deletion.

bamboohr_webhooks_logs

Get webhook logs for a specific webhook by id in BambooHR. Returns webhookId, url, lastAttempted, lastSuccess, failureCount, status, and employeeIds fields.

bamboohr_webhooks_fields

Get a list of fields that webhooks can monitor in BambooHR. Requires company_domain. Returns fields with id, name, and alias.

list_all_bamboohr_dataset

Get available datasets for the companyDomain in BambooHR. Returns dataset name and label fields.

bamboohr_dataset_fields

Get available fields for a dataset in BambooHR using companyDomain and datasetName. Returns fields with name, label, parentType, and parentName.

bamboohr_dataset_data

Get data from the specified dataset in BambooHR using company_domain and dataset_name. Returns data array with requested fields, aggregations, and sorting as specified in the request body.

list_all_bamboohr_employee_dependents

Get all employee dependents for employeeid in BambooHR. Returns id, employeeId, firstName, lastName, relationship, gender, maskedSSN, dateOfBirth, address, city, state, zipCode, country, isUsCitizen, and isStudent fields.

get_single_bamboohr_employee_dependent_by_id

Get employee dependent by id in BambooHR. Returns fields including id, employeeId, firstName, lastName, relationship, gender, maskedSSN, dateOfBirth, address, city, state, zipCode, country, isUsCitizen, and isStudent.

create_a_bamboohr_employee_dependent

Add an employee dependent in BambooHR with employeeId, firstName, lastName, relationship, gender, ssn, dateOfBirth, addressLine1, city, state, zipCode, country, isUsCitizen, and isStudent. Date of birth must be in ISO YYYY-MM-DD format. Gender must be male or female. Relationship must be spouse, child, domestic partner, step child, or foster child. State must be 2 character code. Country must be 2 character ISO code.

update_a_bamboohr_employee_dependent_by_id

Update an employee dependent by id in BambooHR. Requires company_domain and id. Returns status 201 on success.

list_all_bamboohr_benefits

Get benefit coverages for the companyDomain in BambooHR. Returns id, shortName, description, and sortOrder for each benefit coverage.

bamboohr_benefits_deduction_type

Get all benefit deduction types for the companyDomain in BambooHR. Returns id, deductionTypeName, and allowableBenefitTypes for each deduction type.

bamboohr_benefits_member_events

Get a list of member benefit events in BambooHR for the specified companyDomain. Returns members with memberId, coverages with planId, and events including effectiveDate, type, premiumTierId, and monthlyPremiumInCents.

list_all_bamboohr_company_information

Get company information for companyDomain in BambooHR. Returns legalName, displayName, address (line1, line2, city, state, zip), and phone number.

list_all_bamboohr_company_eins

Get Company EINs for the companyDomain in BambooHR. Returns an array of EIN strings representing the company's Employer Identification Numbers.

list_all_bamboohr_table

Get all updated employee table data for table using companyDomain and table. Returns employees with changes since the provided 'since' timestamp including employee id, lastChanged timestamp, and all table rows with fields.

get_single_bamboohr_table_by_id

Get all table rows for a given employee and table in BambooHR. Requires company_domain, id (employee ID), and table name. Returns rows with fields like date, location, division, department, jobTitle, and reportsTo.

create_a_bamboohr_table

Add a table row for an employee in BambooHR using company_domain, id, and table. Returns success message if row is added. Requires all required fields for the table and employee if on compensation table.

update_a_bamboohr_table_by_id

Update a table row for an employee in BambooHR using company_domain, id, table, and row_id. Returns 200 if at least one field is updated. Requires all required fields for pay schedule or compensation table if applicable.

delete_a_bamboohr_table_by_id

Delete a table row for an employee in BambooHR. Requires employee id, table name, and rowId.

list_all_bamboohr_goals

Get goals for an employee in BambooHR using company_domain and employee_id. Returns id, title, description, percentComplete, dueDate, completionDate, status, milestones, and actions for each goal.

create_a_bamboohr_goal

Create a new goal for an employee in BambooHR using company_domain and employee id. Returns the goal id, title, description, percentComplete, sharedWithEmployeeIds, dueDate, completionDate, status, and milestones if included.

delete_a_bamboohr_goal_by_id

Delete a goal for an employee in BambooHR using company_domain, employee_id, and id. Returns 204 on successful deletion.

update_a_bamboohr_goal_by_id

Update a goal for employeeId and id in BambooHR. Requires title, sharedWithEmployeeIds, dueDate. Returns updated goal fields including id, title, description, percentComplete, sharedWithEmployeeIds, dueDate, completionDate, status, and milestones if enabled.

list_all_bamboohr_goal_comments

Get comments for a specific goal using employee_id and goal_id in BambooHR. Returns comment id, authorUserId, createdAt, text, canEdit, and canDelete fields.

create_a_bamboohr_goal_comment

Create a new goal comment for employeeId and goalId in BambooHR. Returns id, authorUserId, createdAt, text, canEdit, and canDelete fields in the response.

update_a_bamboohr_goal_comment_by_id

Update a goal comment for employeeId, goalId, and commentId in BambooHR. Returns id, authorUserId, createdAt, text, canEdit, and canDelete fields in the response.

delete_a_bamboohr_goal_comment_by_id

Delete a goal comment for employee_id, goal_id, and comment_id in BambooHR. Returns 204 No Content on success.

get_single_bamboohr_photo_by_id

Get an employee photo in BambooHR using company_domain, employee id, and size. Returns binary JPEG data of the photo in specified size (original, large, medium, small, xs, tiny).

create_a_bamboohr_photo

Store a new employee photo for employeeId in BambooHR. The photo must be jpg, gif, or png, have equal width and height, and be no larger than 20MB. Returns 201 on success.

get_single_bamboohr_time_tracking_by_id

Get an hour record by id in BambooHR. Returns fields including timeTrackingId, employeeId, dateHoursWorked, hoursWorked, adjustedHours, payRate, and job details.

create_a_bamboohr_time_tracking

Add a time tracking record in BambooHR with required parameters companyDomain, timeTrackingId, employeeId, dateHoursWorked, rateType, and hoursWorked. Returns timeTrackingId of the created record.

update_a_bamboohr_time_tracking_by_id

Edit an hour record in BambooHR using timeTrackingId and hoursWorked. Returns the updated timeTrackingId.

delete_a_bamboohr_time_tracking_by_id

Delete an hour record in BambooHR using companyDomain and id. Returns status and message confirming record removal.

bamboohr_login_user

Authenticate user login in BambooHR using companyDomain, user email, password, and applicationKey. Returns success status, userId, employeeId, and key in response.

list_all_bamboohr_custom_reports_new

List available custom reports in BambooHR using company_domain. Returns report id and name fields.

get_single_bamboohr_custom_reports_new_by_id

Get data for a specific custom report in BambooHR using company_domain and id. Returns the report data fields as specified in the report configuration.

list_all_bamboohr_training

Get a list of training types in BambooHR for the specified companyDomain. Returns trainingId for each training type.

create_a_bamboohr_training

Add a training type in BambooHR with required parameter name. Returns id, name, renewable, frequency, dueFromHireDate, required, category (id and name), linkUrl, description, and allowEmployeesToMarkComplete fields in the response.

update_a_bamboohr_training_by_id

Update an existing training type in BambooHR using company_domain and id. Returns updated training type fields including id, name, renewable, frequency, dueFromHireDate, required, category (id and name), linkUrl, description, and allowEmployeesToMarkComplete.

delete_a_bamboohr_training_by_id

Delete an existing training type by id in BambooHR. Requires company_domain and id. Deletion succeeds only if all employee trainings for this type have been removed.

list_all_bamboohr_training_category

Get a list of training categories in BambooHR. Requires company_domain. Returns categoryId objects containing the category ID and name.

create_a_bamboohr_training_category

Add a training category with name in BambooHR. Requires companyDomain and name. Returns id and name of the created training category.

update_a_bamboohr_training_category_by_id

Update an existing training category by id in BambooHR. Requires company_domain and id. Returns updated category with id and name.

delete_a_bamboohr_training_category_by_id

Delete an existing training category by id in BambooHR. Requires company_domain and id. Returns success status if deleted.

list_all_bamboohr_employee_training

Get all training records for an employee in BambooHR using company_domain and id. Returns trainingId objects representing each training record.

create_a_bamboohr_employee_training

Add a new employee training record for employeeId in BambooHR. Requires completed date in yyyy-mm-dd format and an existing training type id. Returns id, employeeId, completed, notes, instructor, credits, hours, cost, and type fields in the response.

update_a_bamboohr_employee_training_by_id

Update an existing employee training record in BambooHR with id. Requires completed date in yyyy-mm-dd format. Returns id, employeeId, completed, notes, instructor, credits, hours, cost, and type fields in the response.

delete_a_bamboohr_employee_training_by_id

Delete an existing employee training record by id in BambooHR. Requires company_domain and id. Returns success status if the record is deleted.

Why Truto

Why use Truto’s MCP server for BambooHR

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

Unified APIs

Unified APIs for BambooHR

Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.

Unified HRIS API

Benefits

Benefits represent the benefits for an Employee

View Docs

Employees

Represents an employee in HRIS

View Docs

Fields

Represent the fields for various entities in the company

View Docs

Timeoff Policies

Represent the time off policies in a company

View Docs

Timeoff Requests

Represent the time off requests for an Employee

View Docs

Unified User Directory API

Users

The User object represents a User.

View Docs

Unified ATS API

Applications

The applications represent an application for a job.

View Docs

Attachments

The attachments represent an attachment for a candidate.

View Docs

Candidates

The candidates represent a candidate.

View Docs

Job Interview Stages

The job interview stages represent a job interview stage.

View Docs

Jobs

The jobs represent a job.

View Docs

How It Works

From zero to integrated

Go live with BambooHR in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s BambooHR account

Use Truto’s frontend SDK to connect your customer’s BambooHR account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call BambooHR

Truto’s Proxy API is a 1-to-1 mapping of the BambooHR API. You call us, we call BambooHR, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate BambooHR’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about BambooHR on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

What authentication method does BambooHR use?

BambooHR supports API key-based authentication. Your end users generate an API key from their BambooHR account settings, and Truto securely stores and manages it so you don't handle credentials directly.

Can I access custom fields defined in BambooHR?

Yes. You can use list_all_bamboohr_fields to retrieve all standard and custom fields, and update_a_bamboohr_field_by_id to modify custom field values. Truto's unified HRIS Fields model also exposes these.

Does Truto support webhooks for BambooHR?

Yes. You can create, update, list, and delete BambooHR webhooks through Truto, as well as inspect webhook logs and available monitor fields. This enables event-driven architectures for new hires, terminations, and field changes.

Which unified APIs does the BambooHR integration support?

Truto maps BambooHR to three unified APIs: the Unified HRIS API (Employees, Benefits, Fields, Timeoff Policies, Timeoff Requests), the Unified User Directory API (Users), and the Unified ATS API (Applications, Attachments, Candidates, Job Interview Stages, Jobs).

Can I write data back to BambooHR or is it read-only?

BambooHR via Truto supports full CRUD for many resources. You can create and update employees, create applications and change their status, push clock entries and hour entries, upload employee and company files, create goals and training records, and more.

How do I pull time-off balances and policies?

Use list_all_bamboohr_time_off_balance for current employee balances, list_all_bamboohr_time_off_types for available leave categories, list_all_bamboohr_time_off_policies for policy definitions, and list_all_bamboohr_employee_time_off_policies for per-employee policy assignments.

BambooHR

Get BambooHR integrated into your app

Our team understands what it takes to make a BambooHR integration successful. A short, crisp 30 minute call with folks who understand the problem.

Talk to us