---
title: BambooHR API Integration on Truto
slug: bamboohr
category: HRIS
canonical: "https://truto.one/integrations/detail/bamboohr/"
---

# BambooHR API Integration on Truto



**Category:** HRIS  
**Status:** Generally available

## Unified APIs

### Unified HRIS API

- **Benefits** — Benefits represent the benefits for an Employee
- **Employees** — Represents an employee in HRIS
- **Fields** — Represent the fields for various entities in the company
- **Timeoff Policies** — Represent the time off policies in a company
- **Timeoff Requests** — Represent the time off requests for an Employee

### Unified User Directory API

- **Users** — The User object represents a User.

### Unified ATS API

- **Applications** — The applications represent an application for a job.
- **Attachments** — The attachments represent an attachment for a candidate.
- **Candidates** — The candidates represent a candidate.
- **Job Interview Stages** — The job interview stages represent a job interview stage.
- **Jobs** — The jobs represent a job.

## MCP-ready AI tools

Truto exposes 95 tools for BambooHR that AI agents can call directly.

- **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.

## How it works

1. **Link your customer's BambooHR account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach BambooHR.** The Proxy API is a 1-to-1 mapping of the BambooHR API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **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.
- **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.
- **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.
- **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.
- **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

- **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.
- **Automated onboarding and offboarding triggers** — Configure BambooHR webhooks to listen for status field changes and instantly trigger provisioning or deprovisioning workflows in your product.
- **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.
- **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.
- **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.
- **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.

## FAQs

### 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.

## Related reading

- [How to Integrate with the BambooHR API (2026 Engineering Guide)](https://truto.one/blog/how-to-integrate-with-the-bamboohr-api-2026-engineering-guide/) — BambooHR API guide: auth, pagination, rate limits, and hidden costs. Plus a Quick Start for pulling users from every connected SaaS app through a single unified API.
- [Connect BambooHR to ChatGPT: Automate Employee Onboarding & HR Records via MCP](https://truto.one/blog/connect-bamboohr-to-chatgpt-automate-employee-onboarding-records/) — Learn how to connect BambooHR to ChatGPT using a managed MCP server. Automate employee onboarding, applicant tracking, and HR record updates via natural language.
- [Connect BambooHR to Claude: Streamline Hiring & Applicant Tracking](https://truto.one/blog/connect-bamboohr-to-claude-streamline-hiring-applicant-tracking/) — Learn how to connect Claude to BambooHR using a managed MCP server. Automate employee onboarding, applicant tracking, and HR workflows via natural language.
- [Connect BambooHR to AI Agents: Sync Directory & Benefit Workflows](https://truto.one/blog/connect-bamboohr-to-ai-agents-sync-directory-benefit-workflows/) — Learn how to connect BambooHR to AI agents using Truto's /tools endpoint. Build autonomous workflows for employee onboarding, benefits auditing, and applicant tracking.
