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 usUse Cases
Why integrate with BambooHR
Common scenarios for SaaS companies building BambooHR integrations for their customers.
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
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
How It Works
From zero to integrated
Go live with BambooHR in under an hour. No boilerplate, no maintenance burden.
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.
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.
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.
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